NIEUW 📢 Beperkte lanceeractie: tot 70% korting op je eerste maand, voor elke game!Bekijk pakketten

Telegram-bot 409 Conflict oplossen

Discord-bothostingUpdated Oct 29, 20268 min read

Een Telegram-bot krijgt 409 Conflict om een van twee redenen: een andere kopie van de bot vraagt Telegram met hetzelfde token om berichten, of er is een webhook ingesteld op de bot terwijl je code polling gebruikt. Telegram laat maar één van de twee de berichten van de bot ontvangen. Lees het einde van de regel in Console om te zien welke het is, en doe dan het volgende:

  1. terminated by other getUpdates request: stop de andere kopie van je bot (op je pc, bij je oude host of op een andere server) en herstart de bot dan hier.
  2. Kun je de andere kopie niet vinden? Stuur @BotFather /mybots, kies je bot, API Token, trek het in en plak het nieuwe token op de pagina Bot, deel Telegram.
  3. can't use getUpdates method while webhook is active: klik op de banner op De webhook verwijderen (of op Webhook verwijderen in het deel Telegram) en herstart de bot dan.

Bij een Telegram-bot op PlayNHost leest het panel de console voor je en toont het er een banner boven met de oorzaak en de knop die het oplost. Het statuslabel op Overzicht zegt Ontvangt geen berichten.

409: een andere kopie van je bot draait

De tekst van Telegram, in de fout van je library:

Conflict: terminated by other getUpdates request; make sure that only one bot instance is running

Zo ziet het eruit bij elke library:

LibraryRegel in de console
python-telegram-bottelegram.error.Conflict: Conflict: terminated by other getUpdates request; ...
aiogram 3Failed to fetch updates - TelegramConflictError: Telegram server says - Conflict: terminated by other getUpdates request; ...
pyTelegramBotAPIA request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; ...
grammYGrammyError: Call to 'getUpdates' failed! (409: Conflict: terminated by other getUpdates request; ...)
TelegrafTelegramError: 409: Conflict: terminated by other getUpdates request; ...

Telegram geeft de berichten aan één kopie tegelijk, dus de twee kopieën duwen elkaar steeds weg. python-telegram-bot, aiogram en pyTelegramBotAPI blijven het opnieuw proberen: je bot lijkt hier te draaien, maar mist berichten of antwoordt op niets. grammY en Telegraf stoppen in plaats daarvan met de fout.

De banner zegt Je bot draait ook ergens anders. Zo los je het op:

  1. Zoek de andere kopie en stop hem: een terminalvenster of script op je pc, de oude host waarvan je bent verhuisd (een always-on-taak, een deployment of een service), of een tweede server die dezelfde code draait.
  2. Druk hier op Herstarten en volg Console. De fout stopt zodra jouw bot de enige kopie is.
  3. Kun je de andere kopie niet vinden, maak dan een nieuw token zodat het oude overal ophoudt te werken: stuur @BotFather /mybots, kies je bot, API Token en dan Revoke current token.
  4. Klik op de pagina Bot, deel Telegram, op Token vervangen, plak het nieuwe token en klik op Token opslaan. Het panel zegt De bot gebruikt nog het oude token tot hij herstart.: klik op Nu herstarten.

De knop Token vervangen op de banner opent hetzelfde deel. Het oude token werkt meteen niet meer, dus een kopie die je vergeten was, kan de berichten van je bot niet meer lezen.

De Console van een Telegram-bot met de banner Je bot draait ook ergens anders boven een regel Conflict: terminated by other getUpdates request en een knop Token vervangen.

409: er is een webhook ingesteld terwijl je bot pollt

De tekst van Telegram:

Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first

Een webhook zegt tegen Telegram dat het de berichten van je bot naar een webadres moet sturen. Zolang er een is ingesteld, krijgt code die polling gebruikt (Telegram om nieuwe berichten vragen) deze fout. Meestal blijft hij over van een oude host die de bot op een webhook draaide, of van code die ooit setWebhook heeft aangeroepen. Bij PlayNHost gebruikt je bot polling: webhooks hebben een openbaar HTTPS-adres nodig, dat deze pakketten nog niet bevatten.

De banner zegt Er is een webhook ingesteld op je bot. Het deel Telegram van de pagina Bot toont ook Er is een webhook ingesteld op deze bot met het adres waar hij naar wijst. Zo los je het op:

Het deel Telegram als er een webhook is ingesteld: de waarschuwing Er is een webhook ingesteld op deze bot noemt old-host.example.com en heeft een knop Webhook verwijderen.

  1. Klik op de banner op De webhook verwijderen, of op Webhook verwijderen in het deel Telegram.
  2. Bevestig bij De webhook verwijderen? met Webhook verwijderen. Telegram stuurt de berichten van je bot dan niet meer naar dat adres en bewaart de wachtende, zodat je bot ze hier ophaalt.
  3. Herstart de bot.

Als er elders nog een kopie van je bot op die webhook draait, ontvangt die geen berichten meer zodra je hem verwijdert. Stop ook die kopie, anders stelt ze de webhook misschien opnieuw in bij haar volgende start.

python-telegram-bot (run_polling()) en grammY (bot.start()) verwijderen zelf een webhook zodra het pollen begint. aiogram doet dat niet: het blijft het opnieuw proberen bij de 409. Gebruik de knop, of voeg vóór het pollen één regel toe:

await bot.delete_webhook()
await dp.start_polling(bot)

Je code probeert een webhook in te stellen

Roept je code setWebhook aan, dan weigert Telegram dat met Bad Request: bad webhook: ... en zegt de banner Je code probeert een webhook in te stellen. Vervang de webhookstart door de pollingaanroep van je library: run_polling() in python-telegram-bot, start_polling() in aiogram, bot.start() in grammY of launch() in Telegraf. De knop Files openen op de banner brengt je naar je code. Voorbeelden: Een Telegram-bot verhuizen naar PlayNHost.

401 Unauthorized: het token wordt geweigerd

Telegram antwoordt met 401 Unauthorized als het token is ingetrokken in @BotFather of verkeerd is gekopieerd. Voorbeelden:

telegram.error.InvalidToken
TelegramUnauthorizedError: Telegram server says - Unauthorized
GrammyError: Call to 'getMe' failed! (401: Unauthorized)
TelegramError: 401: Unauthorized

Onze starterbots printen in plaats daarvan één duidelijke regel:

Telegram did not accept the bot token. Paste the current one from @BotFather on the Bot page, then restart.

De banner zegt Telegram heeft je bottoken niet geaccepteerd en het deel Telegram toont Telegram heeft het niet geaccepteerd. Stuur @BotFather /mybots, kies je bot en dan API Token; klik in het deel op Token vervangen, plak het, klik op Token opslaan en dan op Nu herstarten. aiogram en pyTelegramBotAPI blijven het bij een geweigerd token opnieuw proberen, dus zonder de banner zou de bot lijken te draaien.

Een token dat Telegram weigert, wordt nooit opgeslagen. Plak je een Discord-token, dan zegt het panel Dat is een Discord-bottoken.: kopieer het token dat @BotFather je gaf.

429 Too Many Requests: flood control

Too Many Requests: retry after 22
telegram.error.RetryAfter: Flood control exceeded. Retry in 39.0 seconds

Je bot heeft in korte tijd meer berichten verstuurd dan Telegram toestaat, en Telegram vraagt hem het getoonde aantal seconden te wachten. Libraries wachten en gaan door, dus dit stopt de bot nooit. De banner Telegram vertraagt je bot is alleen een waarschuwing. Stuur minder berichten tegelijk: Telegram vraagt ongeveer één bericht per seconde in een chat en 20 per minuut in een groep.

Je bot kon Telegram niet bereiken

Deze banner betekent dat één verzoek van je bot naar api.telegram.org is mislukt. De meeste libraries proberen het zelf opnieuw, dus één regel is geen reden tot zorg. Blijft je bot stil, herstart hem dan; blijft het gebeuren, open dan een supportticket.

Goed om te weten

Draait je bot al ergens anders? Verhuis hem naar ons

ONZE NIEUWSTE BLOGS