我在尝试向特定电报频道发送消息时遇到以下错误:
TimedOut: Timed out
The read operation timed out
我从 python-telegram-bot 使用的方法是
send_message
。
虽然我的机器人收到此错误,但它仍然将消息发送到频道,并且因为我没有捕获该异常,消息中的所有数据都丢失了,但我确实需要在特定时间段后从该频道中删除我的消息。
即使超时,机器人仍然发送消息,这样可以吗?如何防止这种情况再次发生或在发送后将此类消息从频道中删除?
超时错误意味着 TG 没有足够快地发送对您的
send_message
请求的响应。这并不一定意味着请求未被处理 - 这就是消息仍可能被发送的原因。但是,如果没有 TG 的响应,您就没有结果消息的消息 ID,并且很难甚至不可能删除它。
您可以尝试增加PTB等待TG响应的时间。这可以通过不同的方式完成:
timeout
的
send_message
Defaults.timeout
,如果您使用 PTB Defaults
设置request_kwargs
的
Updater
您可能想看看这个网络上的wiki页面。
免责声明:我目前是
python-telegram-bot
的维护者
在这里和那里阅读了几个小时,并将 timeout=30 传递给
context.bot.send_audio
并收到一个错误,显示 unknown parameter
即使 send_audio
的文档明确指出它需要一个 timeout
参数,我发现您可以通过在构建应用程序时将超时传递给应用程序来解决此问题:
application = ApplicationBuilder()
.token(bot_data["token"])
.read_timeout(30)
.write_timeout(30)
.build()
这修复了我的机器人。希望这也能帮助你。