【问题标题】:How to work around getUpdates limit? (Telegram BOT)如何解决 getUpdates 限制? (电报机器人)
【发布时间】:2018-08-08 02:21:16
【问题描述】:

我最近一直在尝试使用官方 API 创建一个功能性电报 BOT,但我遇到了一些问题。 BOT 的目标是将所有从人 x 收到的消息转发到组 y。

BOT 检查“https://api.telegram.org/bot{}/getUpdates”.format(TOKEN) 以获取其最新收到的消息,以便它可以检查该消息是什么以及它是否由人 x 发送。这一切都过去了,直到我的网址在达到 100 条记录后停止自我更新。

必须有一种方法可以自动清除这些记录,对吧?我读了一些关于“-offset”的内容,并尝试通过 URL Query 字符串来实现它,但它似乎没有结果。

感谢您的帮助。

【问题讨论】:

    标签: python bots telegram


    【解决方案1】:

    您可以在保存/转发后删除特定消息

    .deleteMessage(chat_id=update.message.chat.id,message_id=update.message.message_id)

    【讨论】:

      【解决方案2】:

      使用偏移量以稍微不同的方式解决了这个问题(在给定时间之后猜测,即使我可以学习它)。

      自从我发送消息后,我不再需要旧的更新,我使用了这个:

      def get_update_id(updates):
          num_updates = len(updates["result"])
          last_update = num_updates - 1
          update_id = updates["result"][last_update]["update_id"]
          return (update_id)
      

      更新等于:

      def get_updates(OFFSET):
          url = URL + "getUpdates?offset={}".format(OFFSET)
          js = get_json_from_url(url)
          return js
      

      如前所述,在 send_message 语句之后调用 def 的形式为:

      OFFSET = get_update_id(get_updates(OFFSET))
      

      这将确保 getUpdates 中的最后一次更新将是再次运行代码后的第一次更新

      【讨论】:

      • 非常有效的方法。
      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2017-08-18
      • 2020-10-12
      • 2017-11-28
      相关资源
      最近更新 更多