Sıfırdan ilk mesaja: Telegram'da kendi botunuzu oluşturma

Kerem Aydın·8 Temmuz 2026·⏱4 dk

Telegram'da bir bot oluşturmak için, resmi bot @BotFather aracılığıyla kaydını yapmanız, benzersiz bir erişim token'ı almanız ve sunucu tarafını herhangi bir uygun programlama dilinde (Python, Node.js, Go vb.) yazmanız gerekir. Tüm kayıt süreci 2-3 dakika sürer ve ilk çalışan prototip 15 dakikada hayata geçirilebilir.

Aşağıda, token almaktan güvenli webhook kurulumuna ve etkileşimli butonlar eklemeye kadar tüm aşamaların detaylı incelemesi yer almaktadır.

BotFather'a Kayıt: Token Alma

Her şey "tüm botların babası" ile yapılan bir konuşmayla başlar. API ile çalışmak için gerekli belgeleri veren kişidir.

  1. Telegram arama kısmında @BotFather kullanıcısını bulun (mavi doğrulama tikine sahip olduğundan emin olun).
  2. /newbot komutunu gönderin.
  3. Bir bot adı uydurun (kullanıcıların göreceği isim, örneğin: Mağaza Botum).
  4. Bir kullanıcı adı uydurun (benzersiz adres, bot ile bitmelidir, örneğin: my_shop_support_bot).
  5. İsim müsaitse, BotFather size API Token içeren bir mesaj gönderecektir.

Token, botunuzun şifresidir. Asla GitHub'daki kodlarda yayınlamayın, üçüncü şahıslara göndermeyin ve açık halde saklamayın. Ortam değişkenlerini kullanın.

Örnek token: 123456789:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw

Araç ve Mimari Seçimi

Bot mantığını yazmak için HTTP/HTTPS ile çalışmayı destekleyen herhangi bir dil uygundur. En popüler çözümler şunlardır:

  • Python: aiogram (asenkron, modern) veya python-telegram-bot kütüphaneleri. Hızlı başlangıç ve karmaşık mantık için idealdir.
  • Node.js: Telegraf veya node-telegram-bot-api çerçeveleri. Web geliştiricileri ve mikroservisler için mükemmeldir.
  • Diğerleri: Go, Java, PHP, C# — hepsinin Bot API üzerinde resmi veya kaliteli üçüncü taraf sarmalayıcıları vardır.

Long Polling mi Webhook mu?

Telegram'dan güncellemeleri almanın iki yolu vardır:

YöntemNasıl ÇalışırNe Zaman Kullanılır
Long PollingBot sürekli olarak Telegram sunucusunu sorgular: "Yeni mesaj var mı?".Testler, yerel geliştirme veya ev bilgisayarındaki basit betikler için.
WebhookTelegram, bir olay发生时 sunucunuza doğrudan mesaj gönderir.Üretim ortamı, yüksek yükler ve sunucu kaynaklarından tasarruf etmek için.

Gerçek bir proje için her zaman Webhook seçin. Bu, yanıt gecikmesini ve sunucunuz üzerindeki yükü azaltır, çünkü bağlantılar yalnızca yeni veri olduğunda kurulur.

Kod Yazma: Başlatma Örnekleri

/start komutuna yanıt veren ve mesaj metnini tekrarlayan minimal bir yankı botu örneğini ele alalım.

Python Seçeneği (aiogram 3.x kütüphanesi)

Bağımlılığı yükleyin: pip install aiogram

import asyncio
import os
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart

# Token'ı ortam değişkeninde saklamak daha iyidir
TOKEN = os.getenv("BOT_TOKEN")

bot = Bot(token=TOKEN)
dp = Dispatcher()

@dp.message(CommandStart())
async def cmd_start(message: types.Message):
    await message.answer("Merhaba! Ben bir botum. Bana bir şey yaz, tekrarlayayım.")

@dp.message()
async def echo_handler(message: types.Message):
    # Basit yankı mantığı
    await message.copy_to(chat_id=message.chat.id)

async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

Node.js Seçeneği (Telegraf kütüphanesi)

Bağımlılığı yükleyin: npm install telegraf

const { Telegraf } = require('telegraf');

const bot = new Telegraf(process.env.BOT_TOKEN);

bot.start((ctx) => ctx.reply('Merhaba! Ben Node.js tabanlı bir botum. Komutlarını bekliyorum.'));
bot.on('text', (ctx) => ctx.reply(`Şunu yazdınız: ${ctx.message.text}`));

bot.launch();

// Düzgün kapatma için sinyal işleme
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));

Webhook Kurulumu ve Dağıtım

Botu webhook'a geçirmek için beyaz IP'ye ve SSL sertifikasına (HTTPS) sahip bir sunucuya ihtiyacınız olacaktır. Telegram, normal HTTP üzerinden istekleri kabul etmez.

  1. Sunucuyu hazırlayın: Kodu bir barındırma hizmetine yerleştirin (VPS, Heroku, Railway, AWS Lambda vb.). Domain'in geçerli bir sertifikaya sahip olduğundan emin olun (ücretsiz Let's Encrypt kullanılabilir).

  2. URL'yi kaydedin: setWebhook metoduna bir istek gönderin.

    İstek formatı: https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://alanadiniz.com/webhook

  3. Sunucudaki işleyici: Kodunuz, belirtilen yoldaki (/webhook) POST isteklerini dinlemeli, Telegram'dan gelen JSON'u ayrıştırmalı ve bir yanıt oluşturmalıdır.

Bulut fonksiyonları (Serverless) kullanıyorsanız, Webhook tek mümkün çalışma seçeneğidir, çünkü orada sürekli bir polling işlemi çalıştırılamaz.

İşlevselliği Genişletme: Butonlar ve Menüler

Standart metin komutları mobil kullanıcılar için uygun değildir. Klavyeler kullanarak bir arayüz ekleyin.

  • Reply Keyboard: Metin giriş satırının altındaki butonlar. Ana menü eylemleri için uygundur.
  • Inline Keyboard: Doğrudan mesaja gömülü butonlar. Gezinti, yanıt seçeneklerini seçme veya sayfalama için idealdir.

Python'da Inline buton oluşturma örneği:

from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

keyboard = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text="🌐 Web Sitemiz", url="https://example.com")],
    [InlineKeyboardButton(text="ℹ️ Hakkımızda", callback_data="about_us")]
])

await message.answer("Bir eylem seçin:", reply_markup=keyboard)

Böyle bir butona basılmasının işlenmesi geri çağrılar (callback_query) aracılığıyla gerçekleşir; bu, sohbeti yeni metinlerle doldurmadan mesaj içeriğini değiştirmeyi sağlar.

Yeni Başlayanların Sık Yaptığı Hatalar

Bot geliştirirken aşağıdaki sorunlarla sıkça karşılaşılır:

  1. 401 Yetkisiz Erişim Hatası: Geçersiz token. Fazladan boşluk kopyalayıp kopyalamadığınızı kontrol edin ve token'ın süresinin dolup dolmadığını kontrol edin (BotFather'da /revoke komutuyla yeniden oluşturulabilir).
  2. 409 Çakışma Hatası: Aynı anda birden fazla bot örneği çalıştırılıyor (örneğin, hem polling hem webhook veya iki polling işlemi). Yalnızca bir aktif güncelleme kaynağı bırakın.
  3. Limitlerin Göz Ardı Edilmesi: Telegram, mesaj sayısını sınırlar (bir bot için saniyede yaklaşık 30). Toplu gönderim yaparken mutlaka gecikmeler ekleyin.
  4. Hata İşlemenin Olmaması: Sunucunuz kullanıcıdan gelen tek bir hatalı istekte çökerse, bot yanıt vermeyi durdurur. Mantığı her zaman try-catch bloklarına sarın.

SSS

Programlama olmadan bot oluşturulabilir mi? Evet, mantığı bloklardan oluşturmanıza olanak tanıyan bot oluşturucular (Manybot, PuzzleBot vb.) mevcuttur. Ancak bunların işlevsellik açısından sınırlamaları vardır ve genellikle aylık ödeme gerektirir. Kendi kodunuz tam özgürlük sağlar.

Bot tutmanın maliyeti nedir? Telegram hizmeti ücretsizdir. Yalnızca kodun çalıştığı barındırma hizmeti için ödeme yaparsınız. Başlangıç için ucuz bir VPS (ayda 3-5$) veya bulut platformlarının ücretsiz planları yeterlidir.

Bot gruba nasıl eklenir? Grup aramasında botu kullanıcı adına göre bulun ve üye olarak ekleyin. Botun sohbeti moderatör etmesi veya mesajları silmesi gerekiyorsa yönetici haklarını ayarlamayı unutmayın.

Yayınlamadan önce kod kontrol edilmeli mi? Kesinlikle. Botu kişisel sohbette ve test grubunda test edin. Standart olmayan girişlere, özel karakterlere ve uzun mesajlara tepkisini kontrol edin.