Bot Telegram dostaje 409 Conflict z jednego z dwóch powodów: inna kopia bota pobiera z Telegrama wiadomości z tym samym tokenem albo dla bota ustawiono webhook, a twój kod używa pollingu. Telegram pozwala odbierać wiadomości bota tylko jednemu z nich. Przeczytaj koniec linii w Console, żeby wiedzieć, który to przypadek, i zrób to:
terminated by other getUpdates request: zatrzymaj drugą kopię bota (na komputerze, u starego hostingodawcy albo na innym serwerze), a potem uruchom bota tutaj ponownie.- Nie możesz znaleźć drugiej kopii? W @BotFather wyślij
/mybots, wybierz swojego bota, API Token, unieważnij token i wklej nowy na stronie Bot, w sekcji Telegram. can't use getUpdates method while webhook is active: kliknij Usuń webhook na banerze (albo Usuń webhook w sekcji Telegram), a potem uruchom bota ponownie.
W bocie Telegram w PlayNHost panel sam czyta konsolę i pokazuje nad nią baner z przyczyną i przyciskiem, który ją naprawia. Znacznik na stronie Przegląd pokazuje Nie odbiera wiadomości.
409: działa inna kopia twojego bota
Tekst Telegrama, wewnątrz błędu twojej biblioteki:
Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
Tak to wygląda w poszczególnych bibliotekach:
| Biblioteka | Linia w konsoli |
|---|---|
| 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 przekazuje wiadomości jednej kopii naraz, więc dwie kopie ciągle wypychają się nawzajem. python-telegram-bot, aiogram i pyTelegramBotAPI ponawiają próby: twój bot wygląda tu na działającego, ale gubi wiadomości albo niczego nie odpowiada. grammY i Telegraf zatrzymują się natomiast z tym błędem.
Baner mówi Twój bot działa też gdzie indziej. Aby to naprawić:
- Znajdź drugą kopię i zatrzymaj ją: okno terminala albo skrypt na twoim komputerze, stary hosting, z którego przenosisz bota (zadanie działające cały czas, wdrożenie albo usługa), albo drugi serwer z tym samym kodem.
- Naciśnij tutaj Restart i obserwuj Console. Błąd znika, gdy twój bot jest jedyną kopią.
- Jeśli nie możesz znaleźć drugiej kopii, utwórz nowy token, żeby stary przestał działać wszędzie: w @BotFather wyślij
/mybots, wybierz swojego bota, API Token, a potem Revoke current token. - Na stronie Bot, w sekcji Telegram, kliknij Zastąp token, wklej nowy token i kliknij Zapisz token. Panel pokaże: Bot nadal używa starego tokena, dopóki się nie zrestartuje. Kliknij Zrestartuj teraz.
Przycisk Zastąp token na banerze otwiera tę samą sekcję. Stary token przestaje działać od razu, więc zapomniana kopia nie może już czytać wiadomości twojego bota.

409: ustawiono webhook, a bot używa pollingu
Tekst Telegrama:
Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first
Webhook mówi Telegramowi, żeby wysyłał wiadomości twojego bota na adres internetowy. Gdy jest ustawiony, kod używający pollingu (sam pyta Telegram o nowe wiadomości) dostaje ten błąd. Zwykle zostaje po starym hostingu, na którym bot działał na webhooku, albo po kodzie, który kiedyś wywołał setWebhook. W PlayNHost twój bot używa pollingu: webhooki wymagają publicznego adresu HTTPS, którego te plany jeszcze nie obejmują.
Baner mówi Dla twojego bota ustawiono webhook. Sekcja Telegram na stronie Bot pokazuje też Dla tego bota ustawiono webhook wraz z adresem, na który wskazuje. Aby to naprawić:

- Kliknij Usuń webhook na banerze albo Usuń webhook w sekcji Telegram.
- Potwierdź w oknie Usunąć webhook? przyciskiem Usuń webhook. Telegram przestaje wysyłać wiadomości twojego bota na ten adres i zachowuje te, które czekają, więc twój bot pobierze je tutaj.
- Uruchom bota ponownie.
Jeśli kopia twojego bota nadal działa gdzieś na tym webhooku, po jego usunięciu przestanie odbierać wiadomości. Zatrzymaj też tę kopię, bo po restarcie może ustawić webhook ponownie.
python-telegram-bot (run_polling()) i grammY (bot.start()) same usuwają webhook, gdy startuje polling. aiogram tego nie robi: ciągle ponawia próby przy błędzie 409. Użyj przycisku albo dodaj jedną linię przed pollingiem:
await bot.delete_webhook()
await dp.start_polling(bot)
Twój kod próbuje ustawić webhook
Jeśli twój kod wywołuje setWebhook, Telegram odrzuca to z błędem Bad Request: bad webhook: ..., a baner mówi Twój kod próbuje ustawić webhook. Zastąp start webhooka wywołaniem pollingu swojej biblioteki: run_polling() w python-telegram-bot, start_polling() w aiogram, bot.start() w grammY albo launch() w Telegraf. Przycisk Otwórz Files na banerze prowadzi do twojego kodu. Przykłady: Jak przenieść bota Telegram do PlayNHost.
401 Unauthorized: token odrzucony
Telegram odpowiada 401 Unauthorized, gdy token został unieważniony w @BotFather albo źle skopiowany. Przykłady:
telegram.error.InvalidToken
TelegramUnauthorizedError: Telegram server says - Unauthorized
GrammyError: Call to 'getMe' failed! (401: Unauthorized)
TelegramError: 401: Unauthorized
Nasze boty startowe wypisują zamiast tego jedną czytelną linię:
Telegram did not accept the bot token. Paste the current one from @BotFather on the Bot page, then restart.
Baner mówi Telegram nie przyjął tokena twojego bota, a sekcja Telegram pokazuje Telegram go nie przyjął. W @BotFather wyślij /mybots, wybierz swojego bota, potem API Token; w sekcji kliknij Zastąp token, wklej go, kliknij Zapisz token, a potem Zrestartuj teraz. aiogram i pyTelegramBotAPI ponawiają próby z odrzuconym tokenem, więc bez banera bot wyglądałby na działającego.
Token, którego Telegram nie przyjął, nigdy nie jest zapisywany. Jeśli wkleisz token Discord, panel odpowie To jest token bota Discord.: skopiuj ten, który dał ci @BotFather.
429 Too Many Requests: ograniczenie częstotliwości
Too Many Requests: retry after 22
telegram.error.RetryAfter: Flood control exceeded. Retry in 39.0 seconds
Twój bot wysłał w krótkim czasie więcej wiadomości, niż pozwala Telegram, a Telegram prosi, żeby odczekał podaną liczbę sekund. Biblioteki czekają i działają dalej, więc to nigdy nie zatrzymuje bota. Baner Telegram spowalnia twojego bota jest tylko ostrzeżeniem. Wysyłaj mniej wiadomości naraz: Telegram oczekuje około jednej wiadomości na sekundę w czacie i 20 na minutę w grupie.
Twój bot nie mógł połączyć się z Telegramem
Ten baner oznacza, że jedno żądanie twojego bota do api.telegram.org nie powiodło się. Większość bibliotek ponawia próbę sama, więc pojedyncza linia nie jest powodem do niepokoju. Jeśli twój bot milczy, uruchom go ponownie; jeśli to się powtarza, otwórz zgłoszenie.
Warto wiedzieć
- Gdy bot zatrzymuje się z powodu odrzuconego tokena, drugiej kopii albo webhooka, e-mail o zatrzymaniu, który wysyłamy, podaje przyczynę.
- Więcej o konsoli: Jak czytać Console i logi twojego bota. Konfiguracja od początku: Jak hostować bota Telegram.



