Telegram Bot API
🌐 Türkçe

Telegram bot nasıl yapılır? BotFather ile adım adım bot oluşturma

· 6 dk okuma

Telegram bot yapma işi iki adımdan oluşur: önce @BotFather üzerinden /newbot komutuyla bot hesabını oluşturup bir token alırsınız, ardından bu token ile Bot API'ye HTTP istekleri gönderen bir kod çalıştırırsınız. Aşağıda ilk mesajı gönderene kadar her adımı curl ve Python örnekleriyle gösteriyoruz.

Telegram bot nedir, neye ihtiyacınız var?

Telegram botu, bir program tarafından yönetilen özel bir hesaptır. Kullanıcı bota yazdığında Telegram bu olayı bir update (güncelleme) olarak saklar; kodunuz güncellemeyi alır ve https://api.telegram.org/bot<token>/METOT_ADI biçimindeki adreslere istek atarak yanıt verir.

1. BotFather ile Telegram bot oluşturma

  1. Telegram'da @BotFather sohbetini açın. Kullanıcı adının tam olarak @BotFather olduğundan emin olun; taklit hesaplar vardır.
  2. /newbot komutunu gönderin.
  3. Ad girin: sohbet listesinde görünen isimdir, Türkçe olabilir (ör. “Hava Durumu Botu”). Daha sonra /setname ile değiştirilebilir.
  4. Kullanıcı adı girin: 5–32 karakter, yalnızca Latin harfler, rakamlar ve alt çizgi; sonu bot ile bitmeli. Örnek: havadurumu_tr_bot veya HavaDurumuBot. ç, ğ, ı, ö, ş, ü kullanılamaz ve kullanıcı adı sonradan değiştirilemez.
  5. BotFather tebrik mesajında token'ı gönderir: 123456789:AAEexampleTokenReplaceWithYours gibi bir satır. Bu değeri kopyalayın.
Token, botun şifresidir: elinde bulunduran herkes botu yönetebilir. Kodun içine yazmayın, ekran görüntüsünde paylaşmayın. Kaybetme, sızdırma ve yenileme konuları için Telegram bot token rehberine bakın.

2. Token'ı getMe ile test edin

getMe parametresiz en basit metottur ve token'ı doğrulamak için kullanılır. URL'de token'ın önüne bot kelimesini eklemeyi unutmayın:

curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getMe"

Yanıtta "ok": true ve result içinde botun id, is_bot, first_name ve username alanları varsa her şey yolunda. 401 Unauthorized token'ın hatalı olduğunu, 404 Not Found ise genellikle URL'de bot ön ekinin unutulduğunu gösterir.

Terminal kullanmak istemiyorsanız Bot API Tester'da getMe metodunu açın, token'ı yapıştırın ve Ctrl+Enter ile çalıştırın. Token tarayıcınızda kalır, istekler doğrudan api.telegram.org'a gider.

3. Chat ID'yi bulun ve ilk mesajı gönderin

Bot, kendisine hiç yazmamış bir kullanıcıya mesaj gönderemez. Bu yüzden önce siz yazın:

  1. Telegram aramasında botunuzun kullanıcı adını bulun ve Başlat düğmesine basın (bota /start gider).
  2. Güncellemeleri çekin:
    curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates"
  3. Yanıttaki message.chat.id değeri, mesaj göndereceğiniz chat_id'dir:
    {
      "ok": true,
      "result": [{
        "update_id": 100000001,
        "message": {
          "message_id": 1,
          "from": {"id": 123456789, "is_bot": false, "first_name": "Ahmet"},
          "chat": {"id": 123456789, "first_name": "Ahmet", "type": "private"},
          "date": 1793264400,
          "text": "/start"
        }
      }]
    }
  4. sendMessage ile ilk mesajı gönderin:
    curl -X POST "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/sendMessage" \
      -d chat_id=123456789 \
      --data-urlencode "text=Merhaba! Bu benim ilk botum."

Aynı istek Python ile:

import os
import requests

TOKEN = os.environ["BOT_TOKEN"]  # token'ı koda gömmeyin
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"

resp = requests.post(url, json={"chat_id": 123456789, "text": "Merhaba, dünya!"}, timeout=10)
data = resp.json()
print(data["ok"], data.get("description"))

Grup ve kanal ID'leri farklı formattadır (ör. -100 ile başlar); ayrıntılar Telegram chat ID rehberinde. Biçimlendirme ve butonlar için mesaj gönderme rehberine geçebilirsiniz.

4. İsteğe bağlı: açıklama ve komut listesi

Aynı listeyi kodla setMyCommands metoduyla da ayarlayabilirsiniz. language_code değeri tr olan liste, uygulama dili Türkçe olan kullanıcılara gösterilir:

curl -X POST "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/setMyCommands" \
  -H "Content-Type: application/json" \
  -d '{"commands":[{"command":"start","description":"Botu başlat"},{"command":"yardim","description":"Yardım"}],"language_code":"tr"}'

Sonraki adımlar: polling, webhook ve kütüphaneler

Güncellemeleri almanın birbirini dışlayan iki yolu vardır:

Ham HTTP yerine bir kütüphane kullanmak işinizi hızlandırır: Python için python-telegram-bot, aiogram veya pyTelegramBotAPI; Node.js için grammY veya Telegraf; Go için telebot ya da go-telegram-bot-api. Botunuza web arayüzü eklemek isterseniz Mini App'leri Mini App Tester ile tarayıcıda deneyebilirsiniz.

Sık karşılaşılan sorunlar

Sık sorulan sorular

Telegram bot nedir?

Telegram botu, bir program tarafından yönetilen özel bir Telegram hesabıdır. Kullanıcılar ona normal bir sohbet gibi yazar; sizin kodunuz mesajları HTTP tabanlı Bot API üzerinden alır ve yanıtlar.

Telegram bot yapmak için kodlama bilmek gerekir mi?

Bot hesabını @BotFather'da oluşturmak için kod gerekmez. Ancak botun mesajlara yanıt vermesi için Bot API'yi çağıran bir program gerekir; resmî Bots FAQ'e göre geliştirici olmayanlar için kutudan çıktığı gibi çalışan bir yol yoktur.

Bot kullanıcı adım neden kabul edilmiyor?

Kullanıcı adı 5–32 karakter olmalı, yalnızca Latin harf, rakam ve alt çizgi içermeli ve bot ile bitmelidir (örneğin tetris_bot veya TetrisBot). Türkçe karakterler kullanılamaz ve ad başka biri tarafından alınmış olmamalıdır.

Bot adını ve kullanıcı adını sonradan değiştirebilir miyim?

Görünen adı /setname ile istediğiniz zaman değiştirebilirsiniz. Resmî dokümantasyona göre kullanıcı adı sonradan değiştirilemez, bu yüzden dikkatli seçin.

Botum neden mesajlara yanıt vermiyor?

BotFather yalnızca hesabı oluşturur. Botun yanıt vermesi için kodunuzun getUpdates ile güncellemeleri çekmesi veya bir webhook üzerinden alması ve sendMessage çağırması gerekir. Kod çalışmıyorsa bot sessiz kalır.

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

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

Telegram chat ID nasıl bulunur? getUpdates ile kullanıcı, grup, süper grup ve kanal ID'sini öğrenin; -100 ön eki, konu ID'si ve boş result sorunu.