YENİ 📢 Sınırlı lansman teklifi: Tüm oyunlarda ilk aya %70'e varan indirim!Paketleri görün

Telegram botu 409 Conflict hatasını düzeltin

Discord botlarıUpdated Oct 29, 20266 min read

Bir Telegram botu 409 Conflict hatasını iki nedenden biriyle alır: botun başka bir kopyası aynı token’la Telegram’dan mesaj istiyordur ya da kodunuz polling kullanırken botta bir webhook ayarlıdır. Telegram botun mesajlarını yalnızca birinin almasına izin verir. Hangisi olduğunu öğrenmek için Console’daki satırın sonunu okuyun, sonra:

  1. terminated by other getUpdates request: botunuzun diğer kopyasını durdurun (bilgisayarınızda, eski barındırıcınızda ya da başka bir sunucuda), sonra botu burada yeniden başlatın.
  2. Diğer kopyayı bulamıyor musunuz? @BotFather’da /mybots gönderin, botunuzu seçin, API Token’ı açın, token’ı iptal edin ve yeni token’ı Bot sayfasında, Telegram bölümüne yapıştırın.
  3. can't use getUpdates method while webhook is active: uyarıdaki Webhook’u kaldır’a (ya da Telegram bölümündeki Webhook’u kaldır’a) tıklayın, sonra botu yeniden başlatın.

PlayNHost’taki bir Telegram botunda panel konsolu sizin yerinize okur ve üstünde nedeni ve düzelten düğmeyi gösteren bir uyarı çıkarır. Genel bakış sayfasındaki rozet Mesaj almıyor yazar.

409: botunuzun başka bir kopyası çalışıyor

Telegram’ın metni, kütüphanenizin hatasının içinde:

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

Her kütüphanede görünüşü:

KütüphaneConsole satırı
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 mesajları aynı anda tek bir kopyaya verir, bu yüzden iki kopya birbirini sürekli dışarı iter. python-telegram-bot, aiogram ve pyTelegramBotAPI yeniden denemeyi sürdürür: botunuz burada çalışıyor görünür ama mesajları kaçırır ya da hiçbir şeye yanıt vermez. grammY ve Telegraf ise hatayla durur.

Uyarı Botunuz başka bir yerde de çalışıyor yazar. Düzeltmek için:

  1. Diğer kopyayı bulun ve durdurun: bilgisayarınızdaki bir terminal penceresi ya da betik, taşındığınız eski barındırıcı (sürekli çalışan bir görev, bir dağıtım ya da bir servis) ya da aynı kodu çalıştıran ikinci bir sunucu.
  2. Burada Yeniden başlat’a basın ve Console’u izleyin. Bot tek kopya olunca hata kesilir.
  3. Diğer kopyayı bulamazsanız, eski token her yerde çalışmayı bıraksın diye yeni bir token oluşturun: @BotFather’da /mybots gönderin, botunuzu seçin, API Token’ı, sonra Revoke current token’ı açın.
  4. Bot sayfasında, Telegram bölümünde Token’ı değiştir’e tıklayın, yeni token’ı yapıştırın ve Token’ı kaydet’e tıklayın. Panel Bot yeniden başlayana kadar eski token’ı kullanmaya devam eder. yazar: Şimdi yeniden başlat’a tıklayın.

Uyarıdaki Token’ı değiştir düğmesi aynı bölümü açar. Eski token hemen çalışmayı bırakır, bu yüzden unuttuğunuz herhangi bir kopya artık botunuzun mesajlarını okuyamaz.

Bir Telegram botunun Console ekranı: Conflict: terminated by other getUpdates request satırının üstünde Botunuz başka bir yerde de çalışıyor uyarısı ve Token’ı değiştir düğmesi.

409: botunuz polling kullanırken bir webhook ayarlı

Telegram’ın metni:

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

Webhook, Telegram’a botunuzun mesajlarını bir web adresine göndermesini söyler. Biri ayarlıyken polling kullanan kod (Telegram’dan yeni mesajları isteyen kod) bu hatayı alır. Genellikle botu webhook ile çalıştıran eski bir barındırıcıdan ya da bir zamanlar setWebhook çağıran koddan kalır. PlayNHost’ta botunuz polling kullanır: webhook’lar herkese açık bir HTTPS adresi ister ve bu paketler henüz buna sahip değil.

Uyarı Botunuzda bir webhook ayarlı yazar. Bot sayfasının Telegram bölümü de işaret ettiği adresle birlikte Bu botta bir webhook ayarlı gösterir. Düzeltmek için:

Webhook ayarlıyken Telegram bölümü: Bu botta bir webhook ayarlı uyarısı old-host.example.com adresini gösterir ve Webhook’u kaldır düğmesi içerir.

  1. Uyarıdaki Webhook’u kaldır’a ya da Telegram bölümündeki Webhook’u kaldır’a tıklayın.
  2. Webhook kaldırılsın mı? penceresinde Webhook’u kaldır ile onaylayın. Telegram botunuzun mesajlarını o adrese göndermeyi bırakır ve bekleyenleri saklar, böylece botunuz onları burada alır.
  3. Botu yeniden başlatın.

Botunuzun bir kopyası başka bir yerde hâlâ o webhook üzerinde çalışıyorsa, webhook’u kaldırdığınızda mesaj almayı bırakır. O kopyayı da durdurun, yoksa yeniden başlarken webhook’u yine ayarlayabilir.

python-telegram-bot (run_polling()) ve grammY (bot.start()) polling başlarken webhook’u kendileri kaldırır. aiogram kaldırmaz: 409’da yeniden denemeyi sürdürür. Düğmeyi kullanın ya da polling’den önce bir satır ekleyin:

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

Kodunuz bir webhook ayarlamaya çalışıyor

Kodunuz setWebhook çağırırsa Telegram bunu Bad Request: bad webhook: ... ile reddeder ve uyarı Kodunuz bir webhook ayarlamaya çalışıyor yazar. Webhook ile başlatmayı kütüphanenizin polling çağrısıyla değiştirin: python-telegram-bot’ta run_polling(), aiogram’da start_polling(), grammY’de bot.start() ya da Telegraf’ta launch(). Uyarıdaki Files’ı aç düğmesi sizi koduna götürür. Örnekler: Telegram botunuzu PlayNHost’a nasıl taşırsınız.

401 Unauthorized: token reddediliyor

Token @BotFather’da iptal edildiğinde ya da yanlış kopyalandığında Telegram 401 Unauthorized yanıtını verir. Örnekler:

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

Başlangıç botlarımız bunun yerine tek bir sade satır yazdırır:

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

Uyarı Telegram bot token’ınızı kabul etmedi yazar ve Telegram bölümü Telegram kabul etmedi gösterir. @BotFather’da /mybots gönderin, botunuzu seçin, sonra API Token’ı açın; bölümde Token’ı değiştir’e tıklayın, yapıştırın, Token’ı kaydet’e, sonra Şimdi yeniden başlat’a tıklayın. aiogram ve pyTelegramBotAPI reddedilen bir token’da yeniden denemeyi sürdürür, bu yüzden uyarı olmasaydı bot çalışıyor görünürdü.

Telegram’ın reddettiği bir token asla kaydedilmez. Bir Discord token’ı yapıştırırsanız panel Bu bir Discord bot token’ı. yazar: @BotFather’ın size verdiği token’ı kopyalayın.

429 Too Many Requests: flood kontrolü

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

Botunuz kısa sürede Telegram’ın izin verdiğinden fazla mesaj gönderdi ve Telegram gösterilen saniye kadar beklemesini istiyor. Kütüphaneler bekleyip devam eder, bu yüzden bu botu asla durdurmaz. Telegram botunuzu yavaşlatıyor uyarısı yalnızca bir uyarıdır. Bir seferde daha az mesaj gönderin: Telegram bir sohbette saniyede yaklaşık bir, bir grupta dakikada 20 mesaj ister.

Botunuz Telegram’a ulaşamadı

Bu uyarı, botunuzdan api.telegram.org adresine giden bir isteğin başarısız olduğu anlamına gelir. Çoğu kütüphane kendiliğinden yeniden dener, bu yüzden tek bir satır endişe edilecek bir şey değildir. Botunuz sessiz kalırsa yeniden başlatın; tekrar ederse bir destek talebi açın.

Bilmekte fayda var

Botun başka bir yerde mi? Bize taşı

EN YENİ BLOG YAZILARIMIZ