Telegram chat ID nasıl bulunur: kullanıcı, grup, kanal ve konu için adım adım
Telegram chat ID nasıl bulunur sorusunun en güvenilir cevabı: bota (veya botun bulunduğu gruba) bir mesaj gönderin, getUpdates metodunu çağırın ve yanıttaki message.chat.id değerini okuyun. Aşağıda kullanıcı, grup, süper grup, kanal ve forum konuları için adımları; ayrıca boş result ve 409 Conflict gibi sorunların çözümünü bulacaksınız.
Chat ID nedir, hangi formatta olur?
chat_id, sendMessage gibi metotlarda mesajın hangi sohbete gideceğini belirtir. Sohbet türü yanıttaki chat.type alanında yazar:
| Sohbet | chat.type | Örnek ID |
|---|---|---|
| Kullanıcı (özel sohbet) | private | 123456789 (pozitif) |
| Normal grup | group | -987654321 (negatif) |
| Süper grup / forum | supergroup | -1001234567890 |
| Kanal | channel | -1009876543210 |
ID'ler 32 bitten büyük olabilir. Veritabanında ve kodda 64 bit tam sayı (ör. BIGINT) kullanın; ID'yi metin olarak saklıyorsanız eksi işaretini kaybetmeyin.
Yöntem 1: getUpdates ile kullanıcı chat ID'sini öğrenme
- Telegram'da botunuzu açın ve Başlat'a basın ya da herhangi bir mesaj yazın.
getUpdatesçağırın:curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates"- Yanıtta
message.chat.iddeğerini bulun. Özel sohbette bu sayı kullanıcının kendi ID'siyle (from.id) aynıdır:{ "ok": true, "result": [{ "update_id": 100000001, "message": { "message_id": 5, "from": {"id": 123456789, "is_bot": false, "first_name": "Ayşe"}, "chat": {"id": 123456789, "first_name": "Ayşe", "type": "private"}, "date": 1793264400, "text": "merhaba" } }] }
Terminal yerine tarayıcıyı tercih ederseniz Bot API Tester'da getUpdates metodunu açın, token'ı girin ve çalıştırın; JSON görüntüleyicide chat bloğunu açmanız yeterli.
Python ile chat ID'leri listeleme
Bot birden fazla sohbette mesaj aldıysa şu betik her güncellemedeki sohbetin ID'sini, türünü ve adını yazdırır; özel sohbet, grup ve kanal mesajlarını birlikte görürsünüz:
import os
import requests
token = os.environ["BOT_TOKEN"]
data = requests.get(f"https://api.telegram.org/bot{token}/getUpdates", timeout=10).json()
for update in data["result"]:
msg = update.get("message") or update.get("channel_post") or {}
chat = msg.get("chat")
if chat:
print(chat["id"], chat["type"], chat.get("title") or chat.get("first_name"))
Telegram grup chat ID bulma
- Botu gruba üye olarak ekleyin.
- Grupta
/start@kullanici_adiniz_botyazın (kendi botunuzun kullanıcı adıyla). Gizlilik modu varsayılan olarak açıktır; bu modda bot sadece kendisine yönelik komutları, kendi mesajlarına verilen yanıtları ve servis mesajlarını alır. Sıradan bir “merhaba” bota ulaşmaz. getUpdatesçağırın vemessage.chat.iddeğerini alın; negatif bir sayı olacaktır.
İpucu: botu gruba eklediğiniz anda gelen my_chat_member güncellemesinde de chat.id bulunur. Botun gruptaki tüm mesajları görmesi gerekiyorsa @BotFather'da /setprivacy ile gizlilik modunu kapatın (ardından botu gruptan çıkarıp yeniden ekleyin) ya da botu yönetici yapın.
Normal bir grup süper gruba yükseltilirse ID değişir ve -100 ile başlayan yeni bir değer alır. Eski ID ile yapılan istek başarısız olur ve yeni kimlik hata yanıtındaki parameters.migrate_to_chat_id alanında döner.
Kanal chat ID'si
Herkese açık kanal: sayısal ID'ye gerek yoktur; chat_id olarak @kanaladi gönderebilirsiniz. Botun kanala mesaj atabilmesi için yine de yönetici olması gerekir.
Özel kanal:
- Botu kanala yönetici olarak ekleyin.
- Kanalda yeni bir gönderi paylaşın.
getUpdatesyanıtındamessageyerinechannel_postgelir; IDchannel_post.chat.idalanındadır:{"update_id": 100000002, "channel_post": {"message_id": 12, "chat": {"id": -1009876543210, "title": "Duyurular", "type": "channel"}, "date": 1793264500, "text": "Test"}}
Forum konuları: message_thread_id
Konular (topics) açık bir süper grupta tüm konular aynı chat.id'yi paylaşır. Konuyu ayırt eden değer, mesajdaki message_thread_id alanıdır (konu mesajlarında is_topic_message: true da gelir). Belirli bir konuya mesaj göndermek için ikisini birlikte kullanın:
curl -X POST "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/sendMessage" \
-d chat_id=-1001234567890 \
-d message_thread_id=42 \
--data-urlencode "text=Bu mesaj ilgili konuya gider."
Sorun giderme
Boş result: {"ok":true,"result":[]}
- Son çağrınızdan sonra bota yeni mesaj gelmemiş; bota tekrar yazın.
- Güncellemeler sunucuda en fazla 24 saat saklanır; eski mesajlar görünmez.
- Güncellemeler daha yüksek bir
offsetile onaylanmışsa bir daha dönmez. Aynı token'la çalışan botunuz veya n8n gibi bir araç onları sizden önce almış olabilir. - Gruptaysanız gizlilik modu nedeniyle normal mesajlar gelmez;
/komut@bot_adibiçiminde bir komut gönderin.
409 Conflict
Bota bir webhook kuruluysa getUpdates çalışmaz ve 409 Conflict döner. Webhook'u silip tekrar deneyin:
curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/deleteWebhook"
Webhook'u bir entegrasyon (ör. n8n tetikleyicisi) kurduysa silmek onu da durdurur; işiniz bitince setWebhook ile geri kurun. Ayrıntılar webhook rehberinde.
Bad Request: chat not found
ID yanlış yazılmış, eksi veya -100 kısmı silinmiş, bot gruptan/kanaldan çıkarılmış ya da kullanıcı bota hiç yazmamış olabilir.
Chat ID nerede kullanılır?
Sunucu uyarıları, form bildirimleri ve sipariş mesajları gibi tek yönlü bildirimlerde sendMessage ile birlikte; n8n'in Telegram düğümünde ve Telegram'a bağlanan yapay zekâ asistanlarında ise bot token'ının yanında istenir. Token'ı nereden alacağınızı bot token rehberinde, mesaj biçimlendirmeyi mesaj gönderme rehberinde bulabilirsiniz.
Sık sorulan sorular
Telegram chat ID nedir?
Bot API'de mesajın gideceği sohbeti tanımlayan sayıdır ve chat_id parametresiyle gönderilir. Kullanıcılar için pozitif, normal gruplar için negatif bir sayıdır; süper gruplar ve kanallar -100 ile başlar (ör. -1001234567890).
Grup chat ID'si neden eksi ile başlıyor?
Bot API grupları negatif sayılarla gösterir. Süper gruplar ve kanallar ayrıca -100 ön ekiyle başlar. chat_id gönderirken eksi işaretini veya -100 kısmını silmeyin, yoksa chat not found hatası alırsınız.
getUpdates neden boş result döndürüyor?
Bota son çağrınızdan sonra yeni mesaj gelmemiş, güncellemeler 24 saati geçmiş ya da başka bir program (çalışan botunuz, n8n) onları zaten almış olabilir. Gruplarda gizlilik modu normal mesajları bota iletmez; bota yönelik bir komut gönderin.
Kanalın chat ID'sini nasıl öğrenirim?
Herkese açık kanalda chat_id olarak doğrudan @kanaladi kullanabilirsiniz. Özel kanalda botu yönetici yapın, kanala bir gönderi paylaşın ve getUpdates yanıtındaki channel_post.chat.id değerini alın.
Chat ID değişir mi?
Normalde değişmez. İstisna: normal bir grup süper gruba yükseltildiğinde yeni bir -100… kimliği alır. Eski ID ile istek atarsanız hata yanıtındaki parameters.migrate_to_chat_id alanı yeni değeri verir.
İlgili rehberler
Telegram bot nasıl yapılır? BotFather ile adım adım bot oluşturma
Telegram bot yapma rehberi: BotFather'da /newbot ile bot oluşturun, token'ı getMe ile test edin, chat ID'yi bulun ve Python ile ilk mesajı gönderin.
Telegram Bot API ile mesaj gönderme (send message): curl, Python ve JavaScript
Telegram Bot API send message rehberi: curl, Python ve JavaScript ile sendMessage, HTML ve MarkdownV2 biçimlendirme, inline butonlar ve sık hatalar.
Telegram bot token nasıl alınır, nerede bulunur ve nasıl iptal edilir?
Telegram bot token nedir, BotFather'dan nasıl alınır, mevcut botun token'ı nerede bulunur? getMe ile test, 401 hatası ve sızan token'ı iptal etme.
Telegram bot webhook kurulumu: URL, secret token, getWebhookInfo ve sorun giderme
Telegram bot webhook kurulumu: setWebhook ile HTTPS URL ve secret_token ayarlayın, getWebhookInfo ile hataları görün; 409 Conflict ve n8n localhost çözümü.