Un bot Telegram reçoit 409 Conflict pour l’une de ces deux raisons : une autre copie du bot demande des messages à Telegram avec le même token, ou un webhook est défini sur le bot alors que votre code utilise le polling. Telegram n’autorise qu’un seul des deux à recevoir les messages du bot. Lisez la fin de la ligne dans la Console pour savoir lequel, puis :
terminated by other getUpdates request: arrêtez l’autre copie de votre bot (sur votre PC, chez votre ancien hébergeur ou sur un autre serveur), puis redémarrez le bot ici.- Vous ne trouvez pas l’autre copie ? Dans @BotFather, envoyez
/mybots, choisissez votre bot, API Token, révoquez-le, puis collez le nouveau token sur la page Bot, volet Telegram. can't use getUpdates method while webhook is active: cliquez sur Retirer le webhook dans le bandeau (ou sur Retirer le webhook dans le volet Telegram), puis redémarrez le bot.
Sur un bot Telegram PlayNHost, le panel lit la console pour vous et affiche au-dessus un bandeau avec la cause et le bouton qui la règle. La pastille de l’Aperçu indique Ne reçoit pas de messages.
409 : une autre copie de votre bot tourne
Le texte de Telegram, dans l’erreur de votre bibliothèque :
Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
Voici à quoi cela ressemble avec chaque bibliothèque :
| Bibliothèque | Ligne de la console |
|---|---|
| python-telegram-bot | telegram.error.Conflict: Conflict: terminated by other getUpdates request; ... |
| aiogram 3 | Failed to fetch updates - TelegramConflictError: Telegram server says - Conflict: terminated by other getUpdates request; ... |
| pyTelegramBotAPI | A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; ... |
| grammY | GrammyError: Call to 'getUpdates' failed! (409: Conflict: terminated by other getUpdates request; ...) |
| Telegraf | TelegramError: 409: Conflict: terminated by other getUpdates request; ... |
Telegram confie les messages à une seule copie à la fois, si bien que les deux copies se chassent l’une l’autre. python-telegram-bot, aiogram et pyTelegramBotAPI continuent de réessayer : votre bot semble tourner ici, mais il rate des messages ou ne répond à rien. grammY et Telegraf s’arrêtent avec l’erreur.
Le bandeau indique Votre bot tourne aussi ailleurs. Pour corriger :
- Trouvez l’autre copie et arrêtez-la : une fenêtre de terminal ou un script sur votre PC, l’ancien hébergeur que vous avez quitté (une tâche toujours active, un déploiement ou un service), ou un second serveur qui fait tourner le même code.
- Appuyez sur Redémarrer ici et surveillez la Console. L’erreur cesse quand votre bot est la seule copie.
- Si vous ne trouvez pas l’autre copie, créez un nouveau token pour que l’ancien ne fonctionne plus nulle part : dans @BotFather, envoyez
/mybots, choisissez votre bot, API Token, puis Revoke current token. - Sur la page Bot, volet Telegram, cliquez sur Remplacer le token, collez le nouveau token et cliquez sur Enregistrer le token. Le panel indique Le bot utilise toujours l’ancien token jusqu’à son redémarrage. : cliquez sur Redémarrer maintenant.
Le bouton Remplacer le token du bandeau ouvre le même volet. L’ancien token cesse de fonctionner aussitôt : une copie oubliée ne peut donc plus lire les messages de votre bot.

409 : un webhook est défini alors que votre bot fait du polling
Le texte de Telegram :
Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first
Un webhook dit à Telegram d’envoyer les messages de votre bot à une adresse web. Tant qu’il y en a un, le code qui fait du polling (qui demande à Telegram les nouveaux messages) reçoit cette erreur. Il reste souvent d’un ancien hébergeur qui faisait tourner le bot avec un webhook, ou d’un code qui a un jour appelé setWebhook. Sur PlayNHost, votre bot utilise le polling : les webhooks ont besoin d’une adresse HTTPS publique, que ces offres n’incluent pas encore.
Le bandeau indique Un webhook est défini sur votre bot. Le volet Telegram de la page Bot affiche aussi Un webhook est défini sur ce bot avec l’adresse vers laquelle il pointe. Pour corriger :

- Cliquez sur Retirer le webhook dans le bandeau, ou sur Retirer le webhook dans le volet Telegram.
- Confirmez dans Retirer le webhook ? avec Retirer le webhook. Telegram cesse d’envoyer les messages de votre bot à cette adresse et garde ceux qui attendent : votre bot les récupère ici.
- Redémarrez le bot.
Si une copie de votre bot tourne encore ailleurs sur ce webhook, elle ne reçoit plus de messages quand vous le retirez. Arrêtez aussi cette copie, sinon elle peut redéfinir le webhook en redémarrant.
python-telegram-bot (run_polling()) et grammY (bot.start()) retirent eux-mêmes un webhook au démarrage du polling. aiogram ne le fait pas : il continue de réessayer sur le 409. Utilisez le bouton, ou ajoutez une ligne avant le polling :
await bot.delete_webhook()
await dp.start_polling(bot)
Votre code essaie de définir un webhook
Si votre code appelle setWebhook, Telegram le refuse avec Bad Request: bad webhook: ... et le bandeau indique Votre code essaie de définir un webhook. Remplacez le démarrage par webhook par l’appel de polling de votre bibliothèque : run_polling() dans python-telegram-bot, start_polling() dans aiogram, bot.start() dans grammY ou launch() dans Telegraf. Le bouton Ouvrir Files du bandeau vous amène à votre code. Exemples : Comment déplacer un bot Telegram vers PlayNHost.
401 Unauthorized : le token est refusé
Telegram répond 401 Unauthorized quand le token a été révoqué dans @BotFather ou mal copié. Exemples :
telegram.error.InvalidToken
TelegramUnauthorizedError: Telegram server says - Unauthorized
GrammyError: Call to 'getMe' failed! (401: Unauthorized)
TelegramError: 401: Unauthorized
Nos bots de départ affichent à la place une ligne simple :
Telegram did not accept the bot token. Paste the current one from @BotFather on the Bot page, then restart.
Le bandeau indique Telegram n’a pas accepté le token de votre bot et le volet Telegram affiche Telegram ne l’a pas accepté. Dans @BotFather, envoyez /mybots, choisissez votre bot, puis API Token ; dans le volet, cliquez sur Remplacer le token, collez-le, cliquez sur Enregistrer le token, puis sur Redémarrer maintenant. aiogram et pyTelegramBotAPI continuent de réessayer avec un token refusé : sans le bandeau, le bot semblerait tourner.
Un token que Telegram refuse n’est jamais enregistré. Si vous collez un token Discord, le panel indique C’est un token de bot Discord. : copiez celui que @BotFather vous a donné.
429 Too Many Requests : contrôle du débit
Too Many Requests: retry after 22
telegram.error.RetryAfter: Flood control exceeded. Retry in 39.0 seconds
Votre bot a envoyé plus de messages que Telegram n’en autorise en peu de temps, et Telegram lui demande d’attendre le nombre de secondes indiqué. Les bibliothèques attendent puis continuent : cela n’arrête donc jamais le bot. Le bandeau Telegram ralentit votre bot est un simple avertissement. Envoyez moins de messages à la fois : Telegram demande environ un message par seconde dans une discussion et 20 par minute dans un groupe.
Votre bot n’a pas pu joindre Telegram
Ce bandeau signifie qu’une requête de votre bot vers api.telegram.org a échoué. La plupart des bibliothèques réessaient d’elles-mêmes : une seule ligne n’est donc pas inquiétante. Si votre bot reste muet, redémarrez-le ; si cela se répète, ouvrez un ticket de support.
Bon à savoir
- Quand le bot s’arrête à cause d’un token refusé, d’une autre copie ou d’un webhook, l’e-mail d’arrêt que nous envoyons indique la cause.
- Plus sur la console : Comment lire la console et les logs de votre bot. Pour tout configurer depuis le début : Comment héberger un bot Telegram.



