NEU 📢 Begrenztes Startangebot: bis zu 70 % Rabatt auf deinen ersten Monat, für jedes Spiel!Tarife ansehen

Telegram-Bot-Fehler 409 Conflict beheben

Discord-Bot-HostingUpdated Oct 29, 20268 min read

Ein Telegram-Bot bekommt 409 Conflict aus einem von zwei Gründen: Eine andere Kopie des Bots ruft mit demselben Token Nachrichten bei Telegram ab, oder für den Bot ist ein Webhook gesetzt, während dein Code Polling nutzt. Telegram lässt nur eines von beiden die Nachrichten des Bots empfangen. Lies das Ende der Zeile in der Console, um zu sehen, welcher Fall es ist, und mach dann Folgendes:

  1. terminated by other getUpdates request: Stopp die andere Kopie deines Bots (auf deinem PC, bei deinem alten Host oder auf einem anderen Server) und starte den Bot dann hier neu.
  2. Du findest die andere Kopie nicht? Sende @BotFather /mybots, wähl deinen Bot, API Token, widerrufe ihn und füg den neuen Token auf der Bot-Seite im Bereich Telegram ein.
  3. can't use getUpdates method while webhook is active: Klick im Banner auf Webhook entfernen (oder im Bereich Telegram auf Webhook entfernen) und starte den Bot dann neu.

Bei einem Telegram-Bot auf PlayNHost liest das Panel die Console für dich und zeigt darüber ein Banner mit der Ursache und dem Button, der sie behebt. Das Label auf der Übersicht zeigt Empfängt keine Nachrichten.

409: Eine andere Kopie deines Bots läuft

Der Text von Telegram, im Fehler deiner Bibliothek:

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

So sieht es bei jeder Bibliothek aus:

BibliothekZeile in der 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 gibt die Nachrichten immer nur an eine Kopie, deshalb verdrängen sich die beiden Kopien gegenseitig. python-telegram-bot, aiogram und pyTelegramBotAPI versuchen es immer wieder: Dein Bot scheint hier zu laufen, verpasst aber Nachrichten oder antwortet auf nichts. grammY und Telegraf stoppen stattdessen mit dem Fehler.

Das Banner sagt Dein Bot läuft auch noch woanders. So behebst du es:

  1. Such die andere Kopie und stopp sie: ein Terminalfenster oder Skript auf deinem PC, der alte Host, von dem du umgezogen bist (eine Always-on-Aufgabe, ein Deployment oder ein Dienst), oder ein zweiter Server mit demselben Code.
  2. Drück hier auf Neustart und beobachte die Console. Der Fehler hört auf, wenn dein Bot die einzige Kopie ist.
  3. Wenn du die andere Kopie nicht findest, erzeuge einen neuen Token, damit der alte überall aufhört zu funktionieren: Sende @BotFather /mybots, wähl deinen Bot, API Token und dann Revoke current token.
  4. Klick auf der Bot-Seite im Bereich Telegram auf Token ersetzen, füg den neuen Token ein und klick auf Token speichern. Das Panel sagt Der Bot nutzt noch den alten Token, bis er neu startet.: Klick auf Jetzt neu starten.

Der Button Token ersetzen im Banner öffnet denselben Bereich. Der alte Token funktioniert sofort nicht mehr, sodass eine Kopie, die du vergessen hast, die Nachrichten deines Bots nicht mehr lesen kann.

Die Console eines Telegram-Bots mit dem Banner Dein Bot läuft auch noch woanders über einer Zeile Conflict: terminated by other getUpdates request und einem Button Token ersetzen.

409: Ein Webhook ist gesetzt, während dein Bot Polling nutzt

Der Text von Telegram:

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

Ein Webhook sagt Telegram, dass es die Nachrichten deines Bots an eine Webadresse schicken soll. Solange einer gesetzt ist, bekommt Code, der Polling nutzt (also Telegram nach neuen Nachrichten fragt), diesen Fehler. Meist bleibt er von einem alten Host übrig, der den Bot über einen Webhook betrieben hat, oder von Code, der einmal setWebhook aufgerufen hat. Bei PlayNHost nutzt dein Bot Polling: Webhooks brauchen eine öffentliche HTTPS-Adresse, die diese Tarife noch nicht enthalten.

Das Banner sagt Für deinen Bot ist ein Webhook gesetzt. Der Bereich Telegram der Bot-Seite zeigt außerdem Für diesen Bot ist ein Webhook gesetzt mit der Adresse, auf die er zeigt. So behebst du es:

Der Bereich Telegram bei gesetztem Webhook: Die Warnung Für diesen Bot ist ein Webhook gesetzt nennt old-host.example.com und hat einen Button Webhook entfernen.

  1. Klick im Banner auf Webhook entfernen oder im Bereich Telegram auf Webhook entfernen.
  2. Bestätige bei Den Webhook entfernen? mit Webhook entfernen. Telegram schickt die Nachrichten deines Bots dann nicht mehr an diese Adresse und behält die wartenden, sodass dein Bot sie hier abruft.
  3. Starte den Bot neu.

Wenn irgendwo noch eine Kopie deines Bots über diesen Webhook läuft, empfängt sie keine Nachrichten mehr, sobald du ihn entfernst. Stopp auch diese Kopie, sonst setzt sie den Webhook beim nächsten Neustart vielleicht wieder.

python-telegram-bot (run_polling()) und grammY (bot.start()) entfernen einen Webhook beim Start des Pollings selbst. aiogram tut das nicht: Es versucht es bei dem 409 immer wieder. Nutz den Button oder füg vor dem Polling eine Zeile hinzu:

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

Dein Code versucht, einen Webhook zu setzen

Ruft dein Code setWebhook auf, lehnt Telegram das mit Bad Request: bad webhook: ... ab, und das Banner sagt Dein Code versucht, einen Webhook zu setzen. Ersetze den Webhook-Start durch den Polling-Aufruf deiner Bibliothek: run_polling() in python-telegram-bot, start_polling() in aiogram, bot.start() in grammY oder launch() in Telegraf. Der Button Files öffnen im Banner bringt dich zu deinem Code. Beispiele: So ziehst du einen Telegram-Bot zu PlayNHost um.

401 Unauthorized: Der Token wird abgelehnt

Telegram antwortet mit 401 Unauthorized, wenn der Token in @BotFather widerrufen oder falsch kopiert wurde. Beispiele:

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

Unsere Starter-Bots geben stattdessen eine einfache Zeile aus:

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

Das Banner sagt Telegram hat deinen Bot-Token nicht akzeptiert, und der Bereich Telegram zeigt Telegram hat ihn nicht akzeptiert. Sende @BotFather /mybots, wähl deinen Bot und dann API Token; klick im Bereich auf Token ersetzen, füg ihn ein, klick auf Token speichern und dann auf Jetzt neu starten. aiogram und pyTelegramBotAPI versuchen es bei einem abgelehnten Token immer wieder, deshalb würde der Bot ohne das Banner zu laufen scheinen.

Ein Token, den Telegram ablehnt, wird nie gespeichert. Wenn du einen Discord-Token einfügst, sagt das Panel Das ist ein Discord-Bot-Token.: Kopier den Token, den dir @BotFather gegeben hat.

429 Too Many Requests: Flood Control

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

Dein Bot hat in kurzer Zeit mehr Nachrichten gesendet, als Telegram erlaubt, und Telegram bittet ihn, die angezeigte Anzahl Sekunden zu warten. Bibliotheken warten und machen weiter, deshalb stoppt das den Bot nie. Das Banner Telegram bremst deinen Bot aus ist nur eine Warnung. Sende weniger Nachrichten auf einmal: Telegram erwartet etwa eine Nachricht pro Sekunde in einem Chat und 20 pro Minute in einer Gruppe.

Dein Bot konnte Telegram nicht erreichen

Dieses Banner heißt, dass eine Anfrage deines Bots an api.telegram.org fehlgeschlagen ist. Die meisten Bibliotheken versuchen es von selbst erneut, eine einzelne Zeile ist also kein Grund zur Sorge. Bleibt dein Bot stumm, starte ihn neu; passiert es immer wieder, öffne ein Support-Ticket.

Gut zu wissen

Läuft dein Bot schon woanders? Zieh ihn zu uns um

UNSERE NEUESTEN BLOGS