Telegram botları, otomasyon, müşteri hizmetleri ve entegrasyonlar için güçlü araçlardır. Yerel olarak Telegram'ın HTTP API'sini kullanarak, en yüksek hızı ve kontrolü elde edebilirsiniz. Bu yöntemde, python-telegram-bot gibi çerçeveler yerine, saf Python ve istekleri kullanarak bir bot oluşturabilirsiniz.
Gereksinimler
Başlamadan önce, aşağıdaki gereksinimlere sahip olduğunuzdan emin olun: Bir Telegram hesabı @BotFather'dan aldığınız Bot Token'i Python 3.8+'in kurulu olması
Telegram Bot API'sini Anlama
Telegram botları, HTTPS istekleri yoluyla adresine iletişim kurar. Ana yöntemler: getUpdates – Yeni mesajları al sendMessage – Kullanıcılara cevap ver setWebhook – Gerçek zamanlı güncellemeler için (isteğe bağlı)
Botu Oluşturma (Saf Python)
Adım 1: Kurulum ve Güncellemeleri Al TOKEN = "YOUR_BOT_TOKEN" BASE_URL = f"
def get_updates(offset=None):url = f"{BASE_URL}/getUpdates" params = {"offset": offset, "timeout": 30} response = requests.get(url, params=params).json() return response.get("result", [])
Adım 2: Mesajları İşleme ve Cevap Verme def send_message(chat_id, text): url = f"{BASE_URL}/sendMessage" payload = {"chat_id": chat_id, "text": text} requests.post(url, json=payload)
def handle_updates(updates):for update in updates: chat_id = update["message"]["chat"]["id"] text = update["message"].get("text", "") if text == "/start": send_message(chat_id, "\u2705 Bot çalışıyor!") elif text == "/ping": send_message(chat_id, "\u23f3 Pong!")
Adım 3: Botu Döngüde Çalıştırma def main(): offset = None while True: updates = get_updates(offset) if updates: handle_updates(updates) offset = updates[-1]["update_id"] + 1 if __name__ == "__main__": main()
Hız için Optimizasyon
a) Webhook Kullanma Polleme (getUpdates) gecikme oluşturur. Webhook'lar güncellemeleri anında iletir: WEBHOOK_URL = "
Webhook'u ayarla (bir kez çalıştır)
requests.get(f"{BASE_URL}/setWebhook?url={WEBHOOK_URL}")
b) httpx ile Asenkron İstek Yüksek hacimli botlar için: import httpx async def async_send_message(chat_id, text): async with httpx.AsyncClient() as client: await client.post( f"{BASE_URL}/sendMessage", json={"chat_id": chat_id, "text": text} )
c) Hız Sınırı İşleme Telegram, bot başına 30 mesaj/saniye hız sınırı koyar. Bir kuyruk uygulayın: from queue import Queue import threading message_queue = Queue()
def worker():while True: chat_id, text = message_queue.get() send_message(chat_id, text) message_queue.task_done() threading.Thread(target=worker, daemon=True).start()
Kullanım: message_queue.put((chat_id, "Merhaba!"))
Gelişmiş Özellikler
a) İçten Bağlantılı Klavyeler def send_keyboard(chat_id): keyboard = { "inline_keyboard": [[ {"text": "Seçenek 1", "callback_data": "opt1"}, {"text": "Seçenek 2", "callback_data": "opt2"} ]] } payload = { "chat_id": chat_id, "text": "Seçiniz:", "reply_markup": dumps(keyboard) } requests.post(f"{BASE_URL}/sendMessage", json=payload)
b) Dosya Yükleme def send_photo(chat_id, photo_path): with open(photo_path, "rb") as photo: requests.post( f"{BASE_URL}/sendPhoto", files={"photo": photo}, data={"chat_id": chat_id} )
Dağıtım
a) Yerel Test ile Ngrok ngrok http 5000 # localhost:5000'i açığa çıkar b) Üretim (AWS Lambda + API Gateway)
lambda_function.py
def lambda_handler(event, context):handle_updates([event["body"]]) return {"statusCode": 200}
Son Düşünceler Bu yerel yaklaşım, minimum gecikme ve tam kontrol sağlar. Ölçeklendirme için: Asenkron I/O (httpx, aiohttp) kullanın Redis ile durum yönetimini uygulayın Telegram'ın getWebhookInfo ile izleme yapın Şimdi hızlı bir şeyler yapın! ✅ Diğer Kaynaklar: Telegram Bot API Belgeleri Ngrok için Webhook AWS Lambda Dağıtım Kılavuzu ✅
Yapay zeka özeti
Discover how to create lightning-fast Telegram bots using Python’s requests library and Telegram’s HTTP API for maximum control and minimal latency.
Etiketler