【问题标题】:How to get messages that were not delivered while Telegram Bot web-server was down?如何在 Telegram Bot 网络服务器关闭时获取未发送的消息?
【发布时间】:2020-09-17 07:43:47
【问题描述】:

很好奇,当接受 Webhooks 的网络服务器关闭时(由于重新部署、故障或维护),是否有办法避免跳过从 Telegram Bot 发送的消息。

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

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

【问题讨论】:

    标签: telegram telegram-bot python-telegram-bot telegram-webhook node-telegram-bot-api


    【解决方案1】:

    Telegram 将传入的消息保留 24 小时,如果您的 Webhook 已关闭(即重新部署),则消息将在再次在线后传递。

    它可以在 Heroku 上运行,例如在您的 Dyno 出现故障的情况下:一旦启动,聊天机器人将再次向 Telegram 注册并接收队列中仍然可用的消息。

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

    详情请参阅 Telegram documentation

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Telegram 是否为错过的更新发送 webhook?
    猜你喜欢
    • 2023-03-14
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多