web-dev-qa-db-fra.com

Supprimez "pending_update_count" dans le bot Telegram

Je veux effacer tout pending_update_count dans mon bot!

La sortie de la commande ci-dessous:

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

J'ai évidemment remplacé le jeton API réel par xxx

est-ce :

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

Comme vous pouvez le constater, j’ai eu 5154 mises à jour non lues jusqu’à présent !! (Je suis à peu près sûr que ces mises à jour en attente sont des erreurs! Parce que personne n'utilise ce Bot! C'est juste un Bot de test)

Au fait, ce nombre pending_update_count augmente si rapidement! Maintenant que j'écris ce billet, le nombre a augmenté de 51 et a atteint 5205!

Je veux juste effacer ces mises à jour en attente. Je suis à peu près sûr que ce Bot est coincé dans une boucle infinie!

Y a-t-il moyen de s'en débarrasser?

P.S:

J'ai également effacé l'URL webhook. Mais rien n'a changé!

METTRE À JOUR:

La sortie de getWebhookInfo est la suivante:

{
   "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
   }
}

Pourquoi je reçois Wrong response from the webhook: 500 Internal Server Error?

8
Anis Hamidi

Je pense que vous avez deux options:

  1. définissez webhook qui ne fait rien, dites simplement 200 OK aux serveurs du télégramme. Telegram enverra toutes les mises à jour de cette URL et la queque sera effacée. 
  2. désactivez Webhook et obtenez des mises à jour à l'aide de la méthode getUpdates. Ensuite, réactivez Webhook.

Mettre à jour:

Problème avec webhook de votre côté. Vous pouvez essayer d'émuler la requête POST du télégramme sur votre URL. Cela peut être quelque chose comme ceci:

{"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"}

Vous pouvez envoyer ce texte sous forme de corps de requête POST avec PostMan, par exemple, puis d'essayer de déboguer votre backend. 

6
Danil Pyatnitsev

Ajoutez simplement return 1; à la fin de votre méthode de hook. 

Mettre à jour:

Généralement, cela se produit à cause de requêtes retardées avec la base de données.

2
Behnam Azimi

J'ai résolu est comme ça

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

faire cela plusieurs fois

POST tg.api/bottoken/getWebhookInfo

j'ai regardé si tout est parti.

POST tg.api/bottoken/setWebhook with filled "url"
0
theode