Python Aiogram ile Butonlu Telegram Botu Yapmak - 1: Kurulum

03 Ağustos 2026 · 5 dk okuma

Bu seride aiogram kütüphanesini kullanarak, sıradaki derste butonlu (inline keyboard) bir Telegram botuna dönüştüreceğimiz temel bir yapı kuracağız. Aiogram, asenkron çalışması ve esnek handler sistemiyle Telegram bot geliştirmede sık tercih edilen bir kütüphanedir.

Kurulum

pip install aiogram==2.25.1

Bu seride aiogram'ın 2.x sürümünü kullanıyoruz — 3.x sürümü farklı bir asenkron söz dizimi kullanır, bu yüzden kütüphane versiyonuna dikkat edin.

Bot ve Dispatcher Oluşturmak

from aiogram import Bot, Dispatcher, executor, types

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

Bot, Telegram API ile iletişimi yönetir; Dispatcher ise gelen mesajları/komutları doğru fonksiyona yönlendirir.

Komut Handler'ı Tanımlamak

@dp.message_handler(commands=["start"])
async def start_command(message: types.Message):
    await message.reply("Merhaba! Botunuz çalışıyor.")

@dp.message_handler(commands=["help"])
async def help_command(message: types.Message):
    await message.reply("Kullanılabilir komutlar: /start, /help")

@dp.message_handler(commands=[...]) dekoratörü, belirtilen komutu yakalayıp altındaki fonksiyonu tetikler. Fonksiyonların async def ile tanımlanması ve içindeki Telegram çağrılarının await ile beklenmesi gerekir — aiogram tamamen asenkron bir kütüphanedir.

Genel Mesajlara Cevap Veren Eko Botu

Belirli bir komuta değil, herhangi bir metne cevap vermek isterseniz, commands parametresini boş bırakırsınız — bu durumda handler, /start ve /help dışındaki tüm mesajları yakalar:

@dp.message_handler()
async def echo(message: types.Message):
    await message.reply(message.text)

Botu Başlatmak

if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)

skip_updates=True, bot kapalıyken gönderilmiş eski mesajların bot açıldığında birikmiş halde işlenmesini önler — bot her zaman "temiz" başlar.

Sırada Ne Var?

Bir sonraki derste bu bota tıklanabilir inline keyboard butonları ekleyip, butona basıldığında callback_data üzerinden farklı işlemler tetiklemeyi göreceğiz.