问题描述
很好奇,如果有办法避免在接受Webhooks的Web服务器关闭(由于重新部署,故障或维护)的情况下跳过从Telegram Bot发送的消息。
使用轮询时-Telegram API将从上次检索到的消息开始发送消息,并且不会跳过任何消息。
但是如何使用Webhooks?使用轮询还是有一些特殊的机制?
解决方法
最近我遇到了同样的问题,但是我只是通过在服务器启动时将启动时间保存到变量中来解决,然后使用Telegrambot.Message.date
并比较时间是否在服务器启动时间之前发送。
Telegram将传入消息保留24小时,如果您的Webhook处于关闭状态(即重新部署),则消息将在再次联机后立即传递。
它可以在Heroku上运行,例如当您的Dyno停机时:聊天机器人一启动,它将再次向Telegram注册,并接收队列中仍然可用的消息。
有两种相互排斥的方式来接收机器人的更新-一方面使用getUpdates方法,另一方面利用Webhooks。传入的更新会存储在服务器上,直到僵尸程序以任何一种方式收到它们为止,但它们的保存时间不会超过24小时。
有关更多详细信息,请参见电报documentation。