2017-04-19 109 views
0

我想实现的东西“看起来像”在我的电报机器人动画倒计时:如何使用PyTelegrambotAPI实现倒数计时器?

sent=bot.send_message(message.chat.id,'5') 
time.sleep(1) 
bot.edit_message_text('4',message.chat.id,sent.message_id) 
time.sleep(1) 
bot.edit_message_text('3',message.chat.id,sent.message_id) 
time.sleep(1) 
bot.edit_message_text('2',message.chat.id,sent.message_id) 
time.sleep(1) 
bot.edit_message_text('1',message.chat.id,sent.message_id) 
time.sleep(1) 
bot.edit_message_text('0',message.chat.id,sent.message_id) 

有时它工作得很好,但有时我得到的错误:

A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:error_code:400,description:"Bad Request: message is not modified

+0

众所周知的问题,看看[这个问题](https://stackoverflow.com/questions/41373752/telegram-bot-api-error-when-try-to-edit-message-bad-请求消息未找到) – anatol

+0

我有“消息未修改”而不是“未找到消息” - 这是一个不同的问题 – Ilya

+0

没有像你可以假设的那么不同 - 只是从描述的角度。我的意思是编辑信息问题的共同点。这经常发生,很少解决。 – anatol

回答

0

我亲自穿上”建议你在很短的时间内频繁地向电报发送请求。您可能最终会因为太多的请求而超时。 我在这里给你的两个建议:

  1. 只是跳过任何失败的更新。重试将花费太长的时间
  2. 使用更大的间隔(例如2秒)更新消息,以使消息服务器有足够的时间来实现消息已更新。
+0

增加计时并没有帮助,但错误处理 - 确实如此。谢谢。还有一个问题 - 也许你知道答案。虽然有一个计时器 - 其他用户不能做任何事情。如何制作真正的多用户机器人? – Ilya

+0

您必须异步处理倒计时。 我创建了一个使用两个脚本的完整[countdownbot](https://t.me/countdownmebot)。一个处理正常的请求并将倒计数放入数据库,另一个只是更新循环中的消息。 –