如何获取Telegram Bot Web服务器关闭时未传递的消息?

问题描述

很好奇,如果有办法避免在接受Webhooks的Web服务器关闭(由于重新部署,故障或维护)的情况下跳过从Telegram Bot发送的消息。

使用轮询时-Telegram API将从上次检索到的消息开始发送消息,并且不会跳过任何消息。

但是如何使用Webhooks?使用轮询还是有一些特殊的机制?

解决方法

最近我遇到了同样的问题,但是我只是通过在服务器启动时将启动时间保存到变量中来解决,然后使用Telegrambot.Message.date并比较时间是否在服务器启动时间之前发送。

,

Telegram将传入消息保留24小时,如果您的Webhook处于关闭状态(即重新部署),则消息将在再次联机后立即传递。

它可以在Heroku上运行,例如当您的Dyno停机时:聊天机器人一启动,它将再次向Telegram注册,并接收队列中仍然可用的消息。

有两种相互排斥的方式来接收机器人的更新-一方面使用getUpdates方法,另一方面利用Webhooks。传入的更新会存储在服务器上,直到僵尸程序以任何一种方式收到它们为止,但它们的保存时间不会超过24小时。

有关更多详细信息,请参见电报documentation