Python 超出电报机器人防洪控制

Python telegram bot flood control exceeded

我使用 python-telegram-bot 开发电报机器人。

尽管使用了 MessageQueue(正如 docs 中提到的那样),但我不断收到

telegram.error.RetryAfter: Flood control exceeded. Retry in N seconds

当我从客户端(通过非常非常快地按下回复键盘按钮)发送到我的机器人并且它回答我时。

MessageQueue 确实有效,我可以看到一次发送大量消息时的延迟(使用 for 循环)。我已经为消息队列尝试了不同的值,但是 none 有帮助。

似乎机器人被电报禁止,无论它实际发送的消息数量如何。

方法线程(同步或异步)不会改变任何东西。发生这种情况时,如何防止用户泛滥或避免禁止我的机器人?

问题出在机器人的回复消息大小上:大于 512 字节。 Telegram API 将此类消息视为大消息。所以缩短机器人的回复消息就解决了这个问题。

您可以在 article 中了解更多信息。