Telegram Bot API
🌐 Türkçe

Telegram chat ID nasıl bulunur: kullanıcı, grup, kanal ve konu için adım adım

· 6 dk okuma

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:

Sohbetchat.typeÖrnek ID
Kullanıcı (özel sohbet)private123456789 (pozitif)
Normal grupgroup-987654321 (negatif)
Süper grup / forumsupergroup-1001234567890
Kanalchannel-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

  1. Telegram'da botunuzu açın ve Başlat'a basın ya da herhangi bir mesaj yazın.
  2. getUpdates çağırın:
    curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates"
  3. Yanıtta message.chat.id değ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

  1. Botu gruba üye olarak ekleyin.
  2. Grupta /start@kullanici_adiniz_bot yazı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.
  3. getUpdates çağırın ve message.chat.id değ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:

  1. Botu kanala yönetici olarak ekleyin.
  2. Kanalda yeni bir gönderi paylaşın.
  3. getUpdates yanıtında message yerine channel_post gelir; ID channel_post.chat.id alanı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":[]}

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.

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ü.