getUpdates Telegram bot API 中忽略的偏移量参数

Posted

技术标签:

【中文标题】getUpdates Telegram bot API 中忽略的偏移量参数【英文标题】:Offset parameter ignored in getUpdates Telegram bot API 【发布时间】:2017-12-17 12:07:22 【问题描述】:

我正在使用here 所述的电报机器人 Web API 制作电报机器人

我正在使用长轮询通过getUpdates 方法为我的机器人收集更新。为了避免两次处理相同的消息,我使用了方法的偏移参数。

import requests

url = "https://api.telegram.org/botTOKEN/getUpdates"
offsetParam = 'offset' : 999
response = requests.get(url,params=offsetParam)

运行此代码时,人们会期望每次更新的偏移量都大于 999。但是我仍然得到小于 999 的 message_id 作为代码中最后一个变量的一部分(所有这些,作为事实)。

谁能帮我弄清楚为什么在这个调用之后响应偏移量没有增加?

P.S:很高兴提供额外的信息。

谢谢

【问题讨论】:

【参考方案1】:

偏移量是消息ID,你应该在result.message_id中获取,而不是从0开始。

【讨论】:

好的,现在我知道偏移量实际上是指message_id,谢谢。但是,问题仍然存在。如果我仍然给出 999 的偏移量,我仍然会收到所有以前的 message_id 小于 999 的消息。我将编辑问题以显示这一点 @DanielHernandez 你应该设置为message_id+999,而不是999【参考方案2】:

答案很简单。偏移量是指 update_id 值。

其他答案声称 message_id 是偏移量,在撰写本文时并非如此。

【讨论】:

【参考方案3】:

使用cURL 解决了这个问题。这不是message_id;这是update_id。如果offset 大于update_id,则cURL 仅在有新更新可用或timeout 过去时返回。换句话说,它是长民意调查。

【讨论】:

以上是关于getUpdates Telegram bot API 中忽略的偏移量参数的主要内容,如果未能解决你的问题,请参考以下文章

我的 Telegram Bot 无法读取另一个 Telegram Bot 发送的消息

在函数内获取变量更新(Telegram bot、Python3、python-telegram-bot 库、多处理)

node-telegram-bot-api 中的错误未找到模块:无法解析 node-telegram-bot-api 中的“fs”、“net”、“tls”

PHP 中的 Telegram Bot 自定义键盘

Telegram Bot 电报机器人合集详解版

Telegram Bots:我现在可以开始聊天吗?