Kendi Telegram botunuzu oluşturma ve çalıştırma

Kerem Aydın·11 Temmuz 2026·⏱5 dk

Telegram'da bir bot kurmak için, resmi temsilci @BotFather üzerinden botu kaydetmeniz, benzersiz bir erişim token'ı almanız ve mesaj işleme kodunu herhangi bir uygun programlama dilinde (Python, Node.js, PHP) yazarak betiği sürekli internet erişimi olan bir sunucuya yerleştirmeniz gerekir. Tüm süreç, mantığın karmaşıklığına bağlı olarak 15 dakikadan birkaç saate kadar sürebilir.

Aşağıda, sizi fikirden üretimde çalışan bir projeye taşıyacak detaylı bir talimat verilmiştir.

Bot kaydı ve token alma

İlk adım, gelecekteki asistanınızın "pasaportunu" oluşturmaktır. Bu, özel bir sistem botu aracılığıyla mesajlaşma uygulaması içinde yapılır.

  1. Telegram'da aramayı açın ve @BotFather yazın. Hesabın mavi doğrulama tikine sahip olduğundan emin olun.
  2. Start düğmesine basın veya /start komutunu gönderin.
  3. /newbot komutunu girin.
  4. BotFather sizden bir isim (Name) bulmanızı isteyecektir — bu, botun sohbet listesinde nasıl görüntüleneceğidir (örneğin, "Mağaza Asistanım"). İsim herhangi bir dilde olabilir ve boşluk içerebilir.
  5. Ardından bir kullanıcı adı (Username) belirlemeniz gerekir. Benzersiz olmalı, Latin alfabesiyle yazılmalı ve mutlaka bot ile bitmelidir (örneğin, my_super_shop_bot).
  6. Kullanıcı adı müsaitse, bot oluşturmayı onaylar ve uzun bir karakter dizisi gönderir — bu sizin API Token'ınızdır.

Son derece önemli: Token'ı asla açık depolarda (GitHub, GitLab) yayınlamayın ve üçüncü şahıslarla paylaşmayın. Token'a sahip olan herkes, botunuz üzerinde tam kontrole sahip olur.

Token'ı güvenli bir yerde saklayın. Bu aşamada bot teknik olarak mevcuttur, ancak henüz hiçbir şey yapamaz çünkü "beyni" (sunucu tarafı) yoktur.

Çalışma yöntemi seçimi: Polling veya Webhook

Kod yazmaya başlamadan önce, botun Telegram sunucularından mesajları nasıl alacağını belirlemeniz gerekir. İki ana mod vardır:

ModNasıl çalışırAvantajlarDezavantajlarKimler için
Polling (Yoklama)Betik sürekli olarak Telegram sunucusuna sorar: "Yeni mesaj var mı?".Kurulum kolaylığı, yerel PC'de çalışır, sabit IP gerekmez.Teslimatta gecikme, ölçeklendirmede sunucuda gereksiz yük.Geliştirme, testler, basit kişisel botlar.
Webhook (Web Kancası)Telegram sunucusu, mesaj geldiğinde doğrudan sitenize gönderir.Anında tepki, sunucu kaynaklarından tasarruf.HTTPS'li alan adı, genel IP, SSL kurulumu gerekir.Üretim ortamı, ticari projeler, yüksek yükler.

Geliştirmeye başlamak için Polling kullanılması, nihai lansman için ise Webhook'a geçiş yapılması önerilir.

Kod yazma: Python ile temel örnek

Bot oluşturmak için en popüler dil, python-telegram-bot kütüphanesi (veya daha hafif olan aiogram) sayesinde Python'dur. python-telegram-bot üzerinde minimal bir çalışma örneğini inceleyelim.

Bağımlılıkların yüklenmesi

Terminalde şunu çalıştırın:

pip install python-telegram-bot

Betik yapısı

bot.py adında bir dosya oluşturun:

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

# Buraya BotFather'dan aldığınız token'ı yapıştırın
TOKEN = "TOKENINIZI_BURAYA_YAZIN"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Merhaba! Ben sizin yeni botunuzum. Size nasıl yardımcı olabilirim?')

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Mevcut komutlar:\n/start - Botu başlat\n/help - Yardımı göster')

def main():
    # Uygulamayı oluştur
    application = Application.builder().token(TOKEN).build()
    
    # Komut işleyicilerini kaydet
    application.add_handler(CommandHandler("start", start))
    application.add_handler(CommandHandler("help", help_command))
    
    # Botu polling modunda başlat
    print("Bot başlatıldı...")
    application.run_polling(allowed_updates=Update.ALL_TYPES)

if __name__ == '__main__':
    main()

Betiği çalıştırın (python bot.py). Şimdi Telegram'da botunuza /start komutunu yazın — bot size bir selamlama ile cevap vermelidir.

Sunucuya dağıtım (Hosting)

Yerel bilgisayar, botun sürekli çalışması için uygun değildir (kararlı internet ve 7/24 açık bir PC gerekir). Bir hosting hizmetine ihtiyacınız olacak.

Barındırma seçenekleri:

  1. VPS/VDS (Sanal Özel Sunucu): Sanal bir sunucu kiralamak (Ubuntu/Debian). Tam kontrol elde edersiniz, Python'u kurarsınız, systemd veya Docker aracılığıyla otomatik başlatmayı ayarlarsınız. Popüler sağlayıcılar: Aeza, Timeweb, Selectel, DigitalOcean.
  2. Serverless (Sunucusuz fonksiyonlar): Kodun yalnızca mesaj alındığı anda çalıştırılması (AWS Lambda, Google Cloud Functions, Yandex Cloud Functions). Düşük yüklü botlar için ekonomiktir, ancak webhook kurulumu daha zordur.
  3. PaaS platformları: Heroku, Render, Railway. GitHub'dan doğrudan dağıtım yapmak için uygundur, ancak birçok ücretsiz plan artık geçmişte kaldı.

Güvenlik tavsiyesi: Token'ı doğrudan kod dosyasında saklamayın. Ortam değişkenlerini (Environment Variables) kullanın. Kodda bunlara os.getenv("BOT_TOKEN") olarak erişin ve gerçek değeri hosting kontrol panelinde tanımlayın.

VPS üzerinde otomatik başlatma kurulumu

Botun terminal kapatıldıktan sonra kapanmaması için PM2 işlem yöneticisini (Node.js ve Python için) kullanın veya bir systemd servisi oluşturun.

Systemd için örnek:

  1. /etc/systemd/system/mybot.service dosyasını oluşturun.
  2. Yorumlayıcı ve betik yolunu belirtin.
  3. sudo systemctl enable mybot ve sudo systemctl start mybot komutlarını çalıştırın.

Üretim ortamı için Webhook'a geçiş

Bot gerçek kullanıcılarla çalışmaya hazır olduğunda, anında tepki vermek için onu webhook moduna geçirin.

  1. Bir alan adı satın alın ve SSL sertifikası kurun (HTTPS şarttır). Ücretsiz Let's Encrypt kullanılabilir.
  2. Kodda run_polling() yerine webhook kurulumunu yapın. Genellikle bu, ayrı bir betik veya admin komutu aracılığıyla bir kez yapılır:
    await bot.set_webhook(url="https://alan-adiniz.com/webhook")
    ```
3.  Sunucunuzun, Telegram'dan gelen **POST** isteklerini kabul eden, JSON'u ayrıştıran ve yanıt döndüren bir uç noktası (route) olmalıdır.
4.  `aiogram` veya `telegraf` (Node.js) gibi framework'ler, webhook'ları almak için yerleşik mekanizmalara sahiptir.

## Kurulum sırasında sık yapılan hatalar

*   **401 Unauthorized hatası:** Geçersiz token. Fazladan boşluk kopyalayıp kopyalamadığınızı kontrol edin ve BotFather'da token'ı yeniden oluşturup oluşturmadığınızı gözden geçirin (eski token bu durumda çalışmayı durdurur).
*   **409 Conflict hatası:** Aynı token'a sahip birden fazla bot örneği aynı anda çalışıyor (örneğin, hem yerelde hem de sunucuda çalışıyor). Gereksiz kopyaları durdurun.
*   **Bot gruplarda cevap vermiyor:** Varsayılan olarak botlar, kendilerinden bahsedilmedikçe gruplardaki mesajları görmez. Grup ayarlarına gidin -> Yöneticiler -> Botu ekleyin ve mesajları okuma izni verin. Alternatif olarak, @BotFather üzerinden `/setprivacy` komutuyla botun gizlilik ayarlarını değiştirin.
*   **Başlatma sırasında zaman aşımları:** Yavaş bağlantıda polling kullanırken gecikmeler oluşabilir. Uygulama ayarlarında `timeout` parametresini artırın.

## SSS

**Programlama olmadan bot oluşturulabilir mi?**
Evet, bot oluşturucular mevcuttur (Manybot, PuzzleBot, SendPulse). Bunlar, görsel arayüz aracılığıyla basit bir satış hunisi veya menü oluşturmanıza olanak tanır, ancak kendi yazdığınız kodla karşılaştırıldığında esneklik ve karmaşık mantık konusunda sınırlıdırlar.

**Bot tutmanın maliyeti nedir?**
Telegram hizmeti ücretsizdir. Masraflar yalnızca hosting (basit bir VPS için aylık 200 TL'den başlayan fiyatlarla) ve alan adı (yıllık yaklaşık 200-900 TL) için ortaya çıkar. Testler için bulut sağlayıcılarının ücretsiz planlarını kullanabilirsiniz.

**Mesajlara nasıl buton eklenir?**
`InlineKeyboardMarkup` (mesaj altındaki butonlar) veya `ReplyKeyboardMarkup` (metin giriş alanı yerine butonlar) kullanın. Bunlar, tüm popüler kütüphanelerde mevcut olan standart Telegram Bot API işlevleridir.

**Bot engellenirse ne yapılmalı?**
Telegram, botsuz nedenlerle botları nadiren engeller. Genellikle bu durum, kullanıcıların spam yapması veya platform kurallarının ihlal edilmesi (yasaklı içerik yayma) nedeniyle gerçekleşir. @BotSupport adresine yazın veya içerik moderasyon mantığını düzelterek yeni bir bot oluşturun.