Telegram bot nasıl yapılır? BotFather ile adım adım bot oluşturma
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.
- Bir Telegram hesabı (mobil veya masaüstü uygulama).
- Terminalde
curlya da Python 3 verequestskütüphanesi. - İlk test için sunucu veya alan adı gerekmez; kendi bilgisayarınız yeterlidir.
1. BotFather ile Telegram bot oluşturma
- Telegram'da @BotFather sohbetini açın. Kullanıcı adının tam olarak
@BotFatherolduğundan emin olun; taklit hesaplar vardır. /newbotkomutunu gönderin.- Ad girin: sohbet listesinde görünen isimdir, Türkçe olabilir (ör. “Hava Durumu Botu”). Daha sonra
/setnameile değiştirilebilir. - Kullanıcı adı girin: 5–32 karakter, yalnızca Latin harfler, rakamlar ve alt çizgi; sonu
botile bitmeli. Örnek:havadurumu_tr_botveyaHavaDurumuBot. ç, ğ, ı, ö, ş, ü kullanılamaz ve kullanıcı adı sonradan değiştirilemez. - BotFather tebrik mesajında token'ı gönderir:
123456789:AAEexampleTokenReplaceWithYoursgibi 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:
- Telegram aramasında botunuzun kullanıcı adını bulun ve Başlat düğmesine basın (bota
/startgider). - Güncellemeleri çekin:
curl "https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates" - Yanıttaki
message.chat.iddeğeri, mesaj göndereceğinizchat_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" } }] } sendMessageile 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
/setdescription— kullanıcı sohbeti ilk açtığında görünen açıklama (en fazla 512 karakter)./setabouttext— profil sayfasındaki kısa tanıtım (en fazla 120 karakter)./setuserpic— profil fotoğrafı./setcommands— / yazınca çıkan komut listesi. Her satırkomut - açıklamabiçimindedir. Komutlar 1–32 karakterdir ve yalnızca küçük İngilizce harf, rakam ve alt çizgi içerir; bu yüzdenyardımdeğilyardimyazın.
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:
- Long polling — kodunuz
getUpdatesmetodunutimeoutparametresiyle döngüde çağırır. Her bilgisayarda çalışır, geliştirme için idealdir. - Webhook — Telegram her güncellemeyi herkese açık HTTPS adresinize POST eder. Üretim ortamı için uygundur; kurulum için webhook rehberine bakın.
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
401 Unauthorized— token eksik, fazla boşluklu kopyalanmış veya yenilenmiş.getUpdatesboşresultdöndürüyor — bota yeni bir mesaj yazın; güncellemeler en fazla 24 saat saklanır.409 Conflict— bota bir webhook kurulu;getUpdateskullanmak için öncedeleteWebhookçağırın.403 Forbidden: bot was blocked by the user— kullanıcı botu engellemiş; engeli kaldırana kadar mesaj gönderemezsiniz.
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.
İlgili rehberler
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.