我使用 python-telegram-bot 开发电报机器人。
尽管使用了 MessageQueue(正如 docs 中提到的那样),我仍然得到
telegram.error.RetryAfter: Flood control exceeded. Retry in N seconds
当我从客户端(通过非常非常快地按下回复键盘按钮)涌向我的机器人时,它会回答我。
MessageQueue 实际上可以工作,我可以看到一次发送大量消息时的延迟(使用 for 循环)。我尝试了消息队列的不同值,但没有一个有帮助。
看来无论机器人实际发送的消息数量如何,都会被禁止使用电报。
方法线程(同步或异步)不会改变任何东西。发生这种情况时,如何防止用户泛滥或避免禁止我的机器人?
问题在于机器人的回复消息大小:它大于 512 字节。此类消息被 Telegram API 视为大消息。因此,缩短机器人的回复消息就可以解决问题。
您可以在文章中了解更多信息。
正确答案有链接,但不起作用。 也许,这样的外部链接可以在稍后的某个时间通过操纵该链接中的内容来用于黑客攻击。