【问题标题】:PyTeleBot does not send images to users after the first userPyTeleBot 在第一个用户之后不会向用户发送图像
【发布时间】:2018-03-16 22:53:24
【问题描述】:

这是我的代码:

def paid(first, last, uid, contribution, position, number, description, img): 
    for admin in const.admins:
        sleep(10)
        bot.send_photo(admin, img)
        sleep(1)
        bot.send_message(admin, '✅Пользователь {0} {1} ID {2} оплатил заказ "рулетка".' 
                                '\nВзнос: {3} руб.'
                                '\nТовар {4} № {5} удален из резерва.'
                                '\n{6}'.format(first,
                                               last,
                                               uid,
                                               contribution,
                                               position,
                                               number,
                                               description))

根据这个想法,代码应该向每个管理员发送一张 img 的照片,但它只发送给第一个管理员,对于其他管理员,它会给出错误:

telebot.apihelper.ApiException:对 Telegram API 的请求是 不成功。服务器返回 HTTP 400 错误请求。回复正文: [b'{"ok":false,"error_code":400,"description":"错误请求:文件必须 非空"}']" 2017-10-05 13:09:18,537 (init.py:292 MainThread) 错误 - TeleBot:“对 Telegram API 的请求是 不成功。服务器返回 HTTP 400 错误请求。回复正文: [b'{"ok":false,"error_code":400,"description":"错误请求:文件必须 非空"}']

而且,变量img继续是<_io.BufferedReader name='img.jpg'>

  1. 为什么代码不想将 img 发送给第二个管理员?
  2. 如何将图像发送给第二个管理员?

【问题讨论】:

    标签: python image


    【解决方案1】:

    我假设您希望 for 循环遍历所有不同的图像?在这种情况下,您将需要多次定义它

    你看到你在这里做了什么意味着所有的循环一次又一次地访问这里给出的所有信息,没有任何变化。一旦您使用以下命令创建了这些变量,for 循环不会自动为您更新它们:

    def paid(first, last, uid, contribution, position, number, description, img): 
    

    【讨论】:

    • 不,我使用一个图像循环。事实是循环不想发送相同的图像两次或更多次
    • @WindowsEight,您找到解决方案了吗?我也面临同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多