Telegram logosuTelegram
Bot OluşturmaYazar: Telegram Teknik Ekip

Telegram botu oluşturmak için hangi adımları izlemeliyim?

Telegram botu oluşturmak için BotFather ile token alma, komut ayarları, Python örneği ve API entegrasyonu adımlarını içeren eksiksiz rehber.

  • #BotFather
  • #API
  • #Komut Ayarları
  • #Token
  • #Python
Telegram botu nasıl yapılır, BotFather komutları, Telegram bot token alma, Bot komutları ayarlama, Telegram bot API key, Telegram bot oluşturma adımları, BotFather nedir, Telegram botuna komut ekleme, Telegram bot API hataları, Bot oluşturma araçları karşılaştırması

Telegram Botu Oluşturmak İçin Başlangıç Rehberi

Telegram botu oluşturmak için izlenmesi gereken adımlar, BotFather ile temel yapılandırmadan Python tabanlı bir bot geliştirmeye kadar uzanır. Bu rehberde, resmi Telegram Bot API'sini kullanarak sıfırdan nasıl bot oluşturulacağını, komutların nasıl ayarlanacağını ve botunuzu nasıl canlıya alacağınızı adım adım açıklıyoruz. Ayrıca her adımın gerekçesini, olası hataları ve en iyi uygulamaları da bulacaksınız.

⚠️ Önemli Uyarı

Bu rehber, Telegram Bot API'sinin bu yazının yazıldığı tarihteki en son sürümü esas alınarak hazırlanmıştır. Bot oluşturma süreci temelde değişmez, ancak API sürüm güncellemelerini takip etmek için https://core.telegram.org/bots/api adresini düzenli olarak ziyaret edin.

💡 İpucu

Bot oluşturmak için herhangi bir programlama dili zorunlu değildir; ancak özelleştirme ve otomasyon için Python, Node.js veya PHP gibi diller kullanılır. Bu rehberde Python örneği üzerinden ilerleyeceğiz.

Adım 1: BotFather ile Bot Oluşturma ve Token Alma

Telegram'da bot oluşturmanın ilk adımı, resmi BotFather botunu kullanmaktır. BotFather, tüm botların yöneticisidir ve size botunuz için benzersiz bir token (API anahtarı) verir. Bu token, botunuzun Telegram sunucularıyla iletişim kurmasını sağlar ve gizli tutulmalıdır.

İşlem Adımları

  1. Telegram uygulamasında arama çubuğuna @BotFather yazın ve ilk sonuca tıklayın.
  2. BotFather ile sohbet başlatın ve /newbot komutunu gönderin.
  3. BotFather size botunuz için bir ad (örneğin Hava Durumu Botu) soracak. Bu ad, kullanıcıların botu listelerde göreceği isimdir.
  4. Ardından bir kullanıcı adı isteyecek. Kullanıcı adı _bot ile bitmeli ve benzersiz olmalıdır. Örneğin HavaDurumuBot.
  5. Başarılı olursa BotFather size şu formatta bir mesaj döndürür:
Done! Congratulations on your new bot.
You will find it at t.me/HavaDurumuBot.
Use this token to access the HTTP API:
1234567890:ABCdefGHIjklmNOPqrstUVwxyz

Token'ı güvenli bir yere kaydedin. Bu token, botunuzun kimliğidir ve herhangi biriyle paylaşılırsa botunuz kötüye kullanılabilir. Özellikle token'ı asla GitHub gibi herkese açık depolara eklemeyin.

⚠️ Güvenlik Uyarısı

Token'ınızı çevre değişkeni (environment variable) olarak saklayın veya .env dosyası kullanın. Kod içinde direkt olarak token yazmaktan kaçının.

Adım 2: Komut Ayarlarını Yapılandırma

BotFather ile botunuzun varsayılan komutlarını ayarlayabilirsiniz. Kullanıcılar sohbette / yazdığında bu komutlar öneri olarak görünür. Komut listesi, botunuzun kullanıcı deneyimini doğrudan etkilediği için dikkatlice seçilmelidir.

Komut Ekleme Adımları

  1. BotFather ile sohbeti açın ve /setcommands komutunu gönderin.
  2. BotFather, hangi bot için komut ayarlayacağınızı sorar. Botunuzu listeden seçin veya kullanıcı adını yazın.
  3. Sonra aşağıdaki formatta komut listesini gönderin:
start - Botu başlat
help - Yardım menüsü
hava - Güncel hava durumu
ayarlar - Kullanıcı ayarları

Her satırda komut adı (alt çizgi ile başlar, küçük harf) ve kısa bir açıklama bulunur. Açıklamalar 256 karakteri geçmemelidir.

💡 İpucu

Komut sayısını 10-15 arasında tutmak kullanıcı deneyimi için idealdir. Çok fazla komut kafa karıştırabilir. Önemli komutları (/start, /help) her zaman ekleyin.

Adım 3: Botunuzu Kodlama (Python Örneği)

Botunuzu canlıya almak için bir programlama dili ve Telegram Bot API'sini kullanan bir kütüphane gerekir. Python için en yaygın kütüphane python-telegram-bot'tur. Bu bölümde, token ile bot oluşturma ve temel komutları işleme adımlarını göstereceğiz.

Kurulum

Öncelikle Python 3.7 veya üzeri bir sürüm yükleyin. Ardından terminal/powershell'de aşağıdaki komutu çalıştırın:

pip install python-telegram-bot --upgrade

Bu komut, en son kararlı sürümü yükler. Bu yazı yazılırken en son sürüm, resmi PyPI sayfasından kontrol edilebilir.

Basit Bir Bot Kod Örneği

import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

TOKEN = os.environ.get("BOT_TOKEN")  # Token'ı çevre değişkeninden al

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Merhaba! Ben Telegram botuyum. /help yazarak komutları görebilirsiniz.")

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Mevcut komutlar: /start, /help, /hava, /ayarlar")

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.add_handler(CommandHandler("help", help_command))
    print("Bot çalışıyor...")
    app.run_polling()

if __name__ == "__main__":
    main()

Bu kod, /start ve /help komutlarına yanıt veren basit bir bot oluşturur. Token'ı güvenli şekilde almak için os.environ.get kullanılmıştır.

⚠️ Sık Yapılan Hata

Token'ı doğrudan kod içine yazmak (TOKEN = "123...") güvenlik riski oluşturur ve botunuzu tehlikeye atabilir. Her zaman çevre değişkenleri veya .env dosyası kullanın.

Adım 4: Botu Canlıya Alma

Kodunuzu yazdıktan sonra botu çalıştırmak için script'i başlatmanız yeterlidir. Ancak botunuzun sürekli çalışması için bir barındırma (hosting) çözümüne ihtiyacınız olacak. İşte yaygın seçenekler:

Seçenek A: Kendi Sunucunuz (VPS)

Bir Linux VPS (DigitalOcean, Linode, AWS EC2 vb.) kiralayın. Python ve gerekli kütüphaneleri yükleyin. Bot script'ini nohup python bot.py & veya systemd servisi olarak başlatın.

Seçenek B: Platform Hizmetleri (PaaS)

Heroku (artık ücretsiz katman yoktur, ücretli planlar mevcut), Railway, Render gibi platformlarda botunuzu dağıtabilirsiniz. Genellikle GitHub repo bağlantısı yeterlidir. Uyarı: Ücretsiz katmanlar zaman sınırı veya bellek kısıtlaması getirebilir.

Seçenek C: Webhook Kullanımı

Polling yerine webhook kullanarak botunuzun daha hızlı yanıt vermesini sağlayabilirsiniz. Ancak bu, HTTPS sunucusu ve geçerli bir SSL sertifikası gerektirir. Telegram, 20 Haziran 2023 itibarıyla webhook'larda IPv4 desteğini sonlandırdığını duyurdu; bu nedenle IPv6 üzerinden erişim sağlamalısınız. Güncel bilgi için API dokümanını kontrol edin.

💡 İpucu

Botunuzu test ederken polling kullanmak daha kolaydır. Canlı ortamda webhook'a geçmek daha verimli olabilir ancak doğru yapılandırılmazsa hata alabilirsiniz. Önce polling ile başlamanızı öneririz.

Adım 5: Bot Tanıtımı ve Kullanıcı Kazanma

Botunuz çalışır duruma geldikten sonra kullanıcıların botu bulması için bir tanıtım kanalına ihtiyacınız var. Telegram'da botunuzu tanıtmak için aşağıdaki yöntemleri kullanabilirsiniz:

  • Bot profili: BotFather ile /setuserpic komutunu kullanarak botunuza bir profil fotoğrafı ekleyin. /setdescription ile botunuzun kısa bir açıklamasını yazın. /setabouttext ile bot hakkında daha detaylı bilgi verin.
  • Kanal ve gruplar: Botunuzu ilgili kanallara veya gruplara ekleyerek potansiyel kullanıcılara ulaşabilirsiniz. Botunuz gruba eklendiğinde /start komutunu göndermesi için bot kodunda ChatMemberHandler kullanabilirsiniz.
  • Web sitesi ve sosyal medya: Bot linkinizi (t.me/bot_kullanici_adi) web sitenizde, Twitter, Instagram gibi platformlarda paylaşın.

⚠️ Dikkat

Botunuzu spam amaçlı kullanmayın. Telegram, botların kullanıcılara izinsiz mesaj göndermesine izin vermez. Sadece kullanıcı botu başlattıktan sonra (yani /start komutunu gönderdiğinde) mesaj gönderebilirsiniz.

Bot API Sürüm Evrimi ve Geçiş Süreci

Telegram Bot API'si zamanla önemli değişiklikler geçirdi. Örneğin, API 2.0 sürümü Inline Mode'u tanıttı; 3.0 sürümü ile Payments entegrasyonu geldi; 4.0 sürümünde Polls ve Quiz desteği eklendi. Bu değişiklikler bot geliştiricilerinin yeni özelliklerden yararlanmasını sağladı ancak bazı eski yöntemlerin güncellenmesini gerektirdi.

Önemli Dönüm Noktaları

API Sürümü Yenilikler Geliştirici Etkisi
2.0 (2016) Inline Mode Botlar kullanıcı adı yazarak çağrılabilir hale geldi; yeni komut türleri gerektiriyor.
3.0 (2017) Payments, Games Ticari botların önü açıldı; ödeme sağlayıcı entegrasyonu gerekiyor.
4.0 (2019) Polls, Quiz, Chat Actions Etkileşimli içerik oluşturma kolaylaştı; yeni handler türleri eklendi.
5.0 (2021) Voice Chat, Video Chat Sesli ve görüntülü sohbet özellikleri botlara eklendi; bant genişliği gereksinimleri arttı.
6.0 (2023) Story Support, Web App Botlar hikaye gönderebilir ve web uygulamalarına bağlanabilir; güvenlik modeli değişti.

Eski bir sürümden geçiş yaparken, kullandığınız kütüphanenin (örneğin python-telegram-bot) yeni API değişikliklerini desteklediğinden emin olun. Kütüphane dokümantasyonu ve changelog'u incelemek en sağlıklı yöntemdir.

💡 İpucu

API sürümünü kontrol etmek için https://api.telegram.org/bot<TOKEN>/getMe isteğine göz atabilirsiniz. Dönen JSON'da v alanı API sürümünü gösterir (bu alan her zaman dönmeyebilir).

Bot Güvenliği ve Token Yönetimi

Bot token'ınız, botunuzun kontrolünü tamamen ele geçirebilecek bir anahtardır. Token sızıntısı durumunda kötü niyetli kişiler botunuz üzerinden spam yapabilir, kullanıcı verilerine erişebilir veya botunuzu tamamen devre dışı bırakabilir.

Alınması Gereken Önlemler

  • Token asla kod içinde düz metin olarak saklanmamalıdır. Çevre değişkenleri, .env dosyası veya gizli yönetim hizmetleri (AWS Secrets Manager, HashiCorp Vault) kullanın.
  • Token'ı .gitignore dosyasına ekleyin ve envanter kontrolü yapın. Geçmiş commit'lerde token varsa git filter-branch veya BFG Repo-Cleaner ile temizleyin.
  • BotFather üzerinden token'ı sıfırlayın Eğer token sızdıysa, BotFather ile /revoketoken komutunu kullanarak eski token'ı iptal edin ve yenisini alın.
  • İzinleri en aza indirin: Botunuzun ihtiyacı olmayan özellikleri (örneğin, mesaj düzenleme, kanal yönetimi) talep etmeyin. BotFather'dan /setjoingroup gibi komutlarla izinleri kısıtlayabilirsiniz.

⚠️ Önemli

Token sızdırdığınızı fark ederseniz hemen yeni token alın ve eski token'ı kullanımdan kaldırın. 30 dakika içinde bot trafiğinizde anormal bir artış gözlemlerseniz olası bir saldırı altında olabilirsiniz.

Sorun Giderme

Bot geliştirirken karşılaştığınız yaygın sorunlar ve çözümleri aşağıda listelenmiştir.

Belirti: Bot mesajlara yanıt vermiyor

Olası nedenler: Token yanlış, bot çalışmıyor, webhook polling çakışması, internet bağlantısı yok.
Doğrulama: BotFather ile token'ın doğru olup olmadığını kontrol edin. Botunuzun çalıştığını terminal çıktısından teyit edin. curl https://api.telegram.org/bot<TOKEN>/getMe komutuyla token'ın geçerli olup olmadığını test edin. Eğer webhook ayarlıysa, polling ile çalışan botunuz yanıt vermez. /deleteWebhook API'sini çağırarak webhook'u temizleyin.
Çözüm: Webhook kullanıyorsanız, sadece bir yöntem (polling veya webhook) aktif olmalıdır. Polling ile çalışıyorsanız webhook'u sildiğinizden emin olun.

Belirti: Bot belirli komutları tanımıyor

Olası neden: Kodda komut handler'ı eklenmemiş veya CommandHandler yanlış yapılandırılmış.
Doğrulama: BotFather'dan /setcommands ile belirlediğiniz listedeki komutların hepsi için kodda bir handler olmalıdır. Her handler fonksiyonunun doğru async yapısına sahip olduğundan emin olun.
Çözüm: Eksik handler'ları ekleyin veya yazım hatalarını düzeltin. Kütüphane hata mesajlarını dikkatlice okuyun.

Belirti: Bot çok yavaş yanıt veriyor

Olası neden: Polling interval'ı çok kısa (varsayılan 0), sunucu yavaş, API rate limit'i aşılmış.
Doğrulama: app.run_polling(timeout=20) ile timeout değerini artırabilirsiniz. Sunucunuzun ping süresini kontrol edin. Telegram, bot başına saniyede yaklaşık 30 mesaj gönderme limiti uygular (ampirik gözlem).
Çözüm: Polling yerine webhook'a geçin. Botunuzun yoğunluğunu azaltmak için kullanıcı taleplerini kuyruğa alın.

💡 İpucu

Sorun giderme sırasında Telegram'ın debug sunucusu olan @BotSupport botu da yardım sağlayabilir. Ayrıca, API hata kodlarını (400, 403, 429) inceleyerek sorunu daraltabilirsiniz.

Uygulanabilir ve Uygulanamaz Senaryo Kontrol Listesi

Her bot konsepti her senaryo için uygun değildir. Aşağıdaki kontrol listesi, bot projenize başlamadan önce karar vermenize yardımcı olacaktır.

Bot için uygun senaryolar

  • Otomatik yanıt: Sık sorulan sorulara anında cevap vermesi gerekiyorsa (müşteri hizmetleri, sık kullanılan bilgiler).
  • Veri toplama ve bildirim: Hava durumu, döviz kuru, RSS beslemesi gibi güncel bilgileri periyodik olarak kullanıcıya iletmesi.
  • Kullanıcı etkileşimi: Quiz, anket, oyun gibi etkileşimli içerik sunmak.
  • Küçük ekipler için basit görevler: Örneğin, bir ekip için toplantı hatırlatmaları, otomatik check-in mesajları.

Bot için uygun olmayan senaryolar

  • Gerçek zamanlı sohbet desteği: Botlar insan benzeri duygusal zeka ve yanıt esnekliği sağlayamaz; canlı müşteri hizmetleri insan desteği gerektirir.
  • Karmaşık çok aşamalı işlemler: Örneğin, e-ticaret sipariş yönetimi (ödeme, stok, lojistik) genellikle özel bir web arayüzü ve entegrasyon gerektirir; bot arayüzü kısıtlayıcı olabilir.
  • Yüksek güvenlik gereksinimleri: Finansal işlemler veya kişisel veri işleme gibi durumlarda bot güvenlik modeli yetersiz kalabilir; şifrelenmiş bir web uygulaması tercih edilmelidir.
  • Geniş kitlelere aynı anda bildirim: Telegram botları tüm kullanıcılara toplu mesaj atamaz (spam koruması). 10.000+ kullanıcıya aynı anda mesaj iletmek için Telegram Broadcast Botları kullanılabilir ancak bunların kullanım sınırları vardır.

💡 İpucu

Her bot projesine başlamadan önce kullanıcı ihtiyacını netleştirin. Bot gerçekten çözeceği problemi ve insan kullanımını tamamlayıp tamamlamadığını değerlendirin.

Sıkça Sorulan Sorular

Telegram botu oluşturmak için programlama bilmek zorunlu mu?

Hayır. BotFather üzerinden bot oluşturmak programlama gerektirmez; ancak botunuzu özelleştirmek (örneğin, özel komutlar, veritabanı bağlantısı) için en azından temel programlama bilgisi gerekir. Hazır bot şablonları ve #telegraph gibi araçlar da mevcuttur.

Botum için hangi API sürümünü kullanmalıyım?

Mevcut en son kararlı sürümü kullanmanız önerilir. Eski sürümler hala çalışsa da, yeni özellikler eklenmeyebilir ve güvenlik yamaları uygulanmayabilir. API sürümünü /getMe yanıtındaki v alanından kontrol edebilirsiniz.

Bot token'ımı nasıl koruyabilirim?

Token'ı asla doğrudan kod içinde yazmayın. Çevre değişkenleri veya .env dosyası kullanın. Ayrıca, .gitignore dosyasına ekleyerek versiyon kontrol sistemine eklenmesini engelleyin. Düzenli olarak token'ı BotFather ile yenileyin.

Botum çok sayıda kullanıcıya aynı anda mesaj gönderebilir mi?

Telegram botları, her kullanıcıya ayrı ayrı mesaj göndermek zorundadır; toplu mesaj API'si yoktur. Ayrıca, bot rate limiti nedeniyle saniyede yaklaşık 30 mesaj gönderebilirsiniz (ampirik). Daha büyük kitleler için Telegram Broadcast kanalları veya botları kullanmanız gerekebilir, ancak bunlar da kısıtlamalara tabidir.

Webhook mu yoksa polling mi kullanmalıyım?

Polling, özellikle test aşamasında kullanması kolaydır. Webhook ise canlı ortamda daha hızlı yanıt süresi sunar ancak HTTPS ve geçerli bir SSL sertifikası gerektirir. Eğer botunuz düşük trafikliyse polling yeterlidir; yüksek trafikli ve gerçek zamanlı yanıt gerekiyorsa webhook tercih edilmelidir.

En İyi Uygulamalar Kontrol Listesi

  • Token güvenliği: Token'ı çevre değişkeni veya gizli yönetim hizmetinde saklayın. Kodda düz metin olarak asla bulunmamalıdır.
  • Hata yönetimi: Her handler'da try-except blokları kullanarak hataları yakalayın ve kullanıcıya anlaşılır bir hata mesajı döndürün.
  • Loglama: Python logging modülü ile botunuzun aktivitesini kaydedin. Hata ayıklama ve performans izleme için kritik.
  • Rate limit uyumu: Botunuzun saniyede 30'dan fazla mesaj göndermemeye özen gösterin. Yoğun durumlarda mesajları kuyruğa alarak bir süre dağıtın.
  • Düzenli güncelleme: Kullandığınız kütüphaneyi (python-telegram-bot gibi) düzenli olarak güncelleyin. Eski sürümler güvenlik açıkları taşıyabilir.
  • Kullanıcı gizliliği: Topladığınız kullanıcı verilerini (kullanıcı ID, mesaj içeriği) yalnızca botun çalışması için gerekli olduğu sürece saklayın. GDPR gibi yasal düzenlemelere uygun hareket edin.
  • Dökümantasyon hazırlayın: Botunuzun komutlarını, kullanım amacını ve veri politikasını açıklayan bir yardım mesajı (/help) her zaman bulunsun.

💡 Özet

Telegram botu oluşturmak, doğru adımlar izlendiğinde basit ve ödüllendirici bir süreçtir. Bu rehberdeki adımları sırasıyla uygulayarak ilk botunuzu kısa sürede canlıya alabilirsiniz. Unutmayın, botunuz ne kadar kullanışlı ve güvenli olursa o kadar çok kullanıcı kazanır. Şimdi başlayın ve BotFather'a /newbot komutunu göndererek ilk adımı atın!