14

我想清除pending_update_count我的机器人中的所有内容!

以下命令的输出:

https://api.telegram.org/botxxxxxxxxxxxxxxxx/getWebhookInfo

显然我用 xxx 替换了真正的 API 令牌

这是 :

{
 "ok":true,"result":
    {
     "url":"",
     "has_custom_certificate":false,
     "pending_update_count":5154
    }
}

如您所见,到目前为止,我还有5154未读的更新!(我很确定这个待处理的更新是错误的!因为没有人使用这个机器人!它只是一个测试机器人)

顺便说一句,这个pending_update_count数字增长得如此之快!现在我正在写这篇文章,这个数字增加51了,达到了 5205 !

我只想清除这个待处理的更新。我很确定这个机器人已经陷入了无限循环!

有没有办法摆脱它?

PS:

我还清除了 webhook url。但什么都没有改变!

更新:

的输出getWebhookInfo是这样的:

{
   "ok":true,
   "result":{
      "url":"https://somewhere.com/telegram/webhook",
      "has_custom_certificate":false,
      "pending_update_count":23,
      "last_error_date":1482910173,
      "last_error_message":"Wrong response from the webhook: 500 Internal Server Error",
      "max_connections":40
   }
}

为什么我得到Wrong response from the webhook: 500 Internal Server Error

4

6 回答 6

10

我认为你有两个选择:

  1. 设置什么都不做的 webhook,只对电报的服务器说 200 OK。Telegram 会将所有更新发送到此 url,并且队列将被清除。
  2. 禁用 webhook 并在使用 getUpdates 方法获取更新后,再次打开 webhook

更新:

您身边的 webhook 有问题。您可以尝试在您的 URL 上模拟电报的 POST 查询。它可以是这样的:

{"message_id":1,"from":{"id":1,"first_name":"FirstName","last_name":"LastName","username":"username"},"chat":{"id":1,"first_name":"FirstName","last_name":"LastName","username":"username","type":"private"},"date":1460957457,"text":"test message"}

例如,您可以使用 PostMan 将此文本作为 POST 查询正文发送,然后尝试调试您的后端。

于 2016-12-28T03:45:41.260 回答
6

对于在 2020 年及以后关注此问题的任何人,根据API 文档,Telegram API 现在支持通过和drop_pending_updates中的参数清除待处理消息。setWebhookdeleteWebhook

于 2020-11-24T09:02:13.960 回答
4

只需return 1;在钩子方法的末尾添加即可。

更新:

这通常是由于数据库的查询延迟而发生的。

于 2017-04-10T08:41:48.097 回答
4

我解决的是这样的

POST tg.api/bottoken/setWebhook to emtpy "url"
POST tg.api/bottoken/getUpdates
POST tg.api/bottoken/getUpdates with "offset" last update_id appeared before

做这几次

POST tg.api/bottoken/getWebhookInfo

看看如果都走了。

POST tg.api/bottoken/setWebhook with filled "url"
于 2019-01-10T22:41:29.633 回答
0

一种快速而肮脏的方法是在此处获取一个临时 webhook:https : //webhook.site/ 并将您的 webhook 设置为此(它每次都会使用 HTTP/200 代码回答,将您的待处理消息重置为零)

于 2021-02-01T15:35:43.763 回答
0

我通过更改文件访问权限文件来解决它 -将权限文件设置为 755

第二次增加 php.ini 文件中的内存限制

于 2020-02-22T10:17:42.390 回答