代码之家  ›  专栏  ›  技术社区  ›  koolmees

如何绕过getUpdates限制?(电报机器人)

  •  2
  • koolmees  · 技术社区  · 8 年前

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

    机器人检查” https://api.telegram.org/bot {}/getUpdates“.设置最新收到消息的格式(令牌),以便它可以检查该消息是什么,以及它是否由person x发送。在我的url命中100条记录后停止更新之前,这一切都是有效的。

    一定有办法自动清除这些记录,对吗?我读了一些关于“-offset”的内容,并试图通过URL查询字符串实现它,但似乎没有结果。

    谢谢你的帮助。

    2 回复  |  直到 8 年前
        1
  •  1
  •   An Se    8 年前

    保存/转发特定邮件后,您可以使用

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

        2
  •  1
  •   koolmees    8 年前

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

    因为在我发送消息后,我不再需要旧的更新,所以我使用了以下方法:

    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\u message语句之后调用def,格式如下:

    OFFSET = get_update_id(get_updates(OFFSET))
    

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