Python ile Telegram Botu Yapmak

03 Ağustos 2026 · 6 dk okuma

Telegram botları; bir komuta otomatik cevap veren basit yardımcılardan, veri tabanına bağlı tam uygulamalara kadar geniş bir yelpazede kullanılabilir. Bu derste python-telegram-bot kütüphanesiyle temel bir bot yazacağız.

BotFather ile Bot Oluşturmak

Telegram'da @BotFather hesabına gidip /newbot komutunu gönderin. Botunuza bir isim ve bot ile bitmesi zorunlu bir kullanıcı adı verdiğinizde, size bir token (API anahtarı) verilir — bu token'ı kimseyle paylaşmayın, botunuzu tamamen ele geçirmesine izin verir.

Token'ı Koddan Ayrı Tutmak

Token'ı doğrudan koda yazmak yerine ayrı bir metin dosyasında tutup oradan okumak, hem kodu paylaşırken token'ı yanlışlıkla sızdırmanızı önler hem de token değiştiğinde kodu değiştirmenize gerek bırakmaz:

with open("token.txt") as f:
    TOKEN = f.read().strip()

Kütüphaneyi Kurmak ve İlk Botu Yazmak

pip install python-telegram-bot==13.15
from telegram.ext import Updater, CommandHandler

def start(update, context):
    update.message.reply_text("Merhaba, hoş geldiniz!")

updater = Updater(TOKEN)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))

updater.start_polling()
updater.idle()
  • Updater, botun Telegram sunucularıyla olan bağlantısını yönetir.
  • dispatcher, gelen komutları ilgili fonksiyonlara yönlendirir.
  • CommandHandler("start", start), kullanıcı /start yazdığında start fonksiyonunun çalışmasını sağlar.
  • updater.start_polling(), botu sürekli yeni mesaj var mı diye kontrol eden bir döngüye sokar.

Birden Fazla Komut Eklemek

Aynı mantıkla istediğiniz kadar komut ekleyebilirsiniz:

def site(update, context):
    update.message.reply_text("https://kushaengineering.com")

def video(update, context):
    update.message.reply_text("https://youtube.com/@KushaSoftware")

dispatcher.add_handler(CommandHandler("site", site))
dispatcher.add_handler(CommandHandler("video", video))

HTML Formatlı Mesaj Göndermek

Kalın, italik gibi biçimlendirmeler eklemek isterseniz, parse_mode parametresini belirtmeniz gerekir — aksi halde <b> gibi etiketler düz metin olarak gönderilir:

from telegram import ParseMode

def site(update, context):
    update.message.reply_text(
        "<b>Web sitem:</b> https://kushaengineering.com",
        parse_mode=ParseMode.HTML,
    )

Önizlemeyi Kapatmak

Bir link gönderdiğinizde Telegram otomatik olarak bir önizleme kartı ekler — bu bazen istenmeyebilir. disable_web_page_preview=True parametresiyle kapatabilirsiniz:

update.message.reply_text(link, disable_web_page_preview=True)

Sırada Ne Var?

Sırada, aiogram kütüphanesiyle butonlu (inline keyboard) bir Telegram botu yapmayı göreceğiz — bu, kullanıcı deneyimini komut yazmaktan çok daha ileri taşıyan bir yaklaşım.