bot backend python api

Bot Yazmak: Script'ten Üretime

Abdullah Bozdağ 01 Nisan 2026
Bot Yazmak: Script'ten Üretime

Bot aslında ne yapıyor?

Bot yazmak zeka değil, I/O işidir. Veri alır, karar verir, aksiyon alır. Bu üçlü düzgün kurulmazsa en iyi algoritma bile çöp olur. Biz RadKod’da ilk botu yazarken asıl problem model değil, rate limit ve retry oldu.

Basit polling bot ile event-driven bot arasındaki fark burada çıkar. Polling kolay başlar ama maliyetlidir. Event-driven daha kompleks ama üretimde daha stabil.

Polling mi webhook mu?

Küçük projede polling iş görür. Cron + HTTP çağrısı. Trafik artınca gereksiz istek patlar. Webhook tarafında sadece event geldiğinde çalışırsın.

  1. Polling: Basit ama israf yüksek
  2. Webhook: Verimli ama kurulum zor

RadKod’da bir botu polling’den webhook’a taşıdığımızda CPU kullanımı ciddi düştü. Kod karmaşıklaştı ama sistem rahatladı.

Basit çalışan bot (Python)

Bu örnek minimal polling bot. Production için yetersiz ama mantığı gösterir:

import time
import requests

TOKEN = "BOT_TOKEN"
URL = f"https://api.telegram.org/bot{TOKEN}"

last_update_id = None

while True:
params = {"timeout": 30, "offset": last_update_id}
res = requests.get(f"{URL}/getUpdates", params=params).json()

for update in res.get("result", []):
last_update_id = update["update_id"] + 1
message = update.get("message", {})
chat_id = message.get("chat", {}).get("id")
text = message.get("text")

if text == "/start":
requests.post(f"{URL}/sendMessage", json={
"chat_id": chat_id,
"text": "Bot çalışıyor"
})

time.sleep(1)

Ne yapıyor? Update alıyor, parse ediyor, cevap veriyor. Ne yapmıyor? Retry yok, state yok, rate limit yok.

Gerçek problemler

Rate limit ve retry

API’ler seni bir noktada durdurur. Backoff yoksa sistem kendi kendini sabote eder.

import time

def retry(fn, retries=5):
delay = 1
for _ in range(retries):
try:
return fn()
except Exception:
time.sleep(delay)
delay *= 2
raise Exception("retry bitti")

State yönetimi

Botlar stateless değildir. Kullanıcı hangi adımda, ne yaptı? Bunu Redis veya DB’de tut. RAM’e güvenme.

Idempotency

Aynı event iki kez gelir. Gelmeyecek sanıyorsan production görmemişsin. Event ID tut, duplicate işleme.

LLM ile bot yazmak

LLM eklemek kolay, kontrol etmek zor. Prompt’u version’la, temperature ayarla, timeout koy. Yoksa saçma cevaplar üretir.

RadKod’da bir destek botunda LLM kullandık. İlk versiyon fazla serbestti. Scope daraltınca işe yarar hale geldi.

Deployment

  1. Docker kullan
  2. Log ekle
  3. Monitoring kur

Serverless iyi başlangıç ama uzun polling ile kullanma. Timeout sınırına çarparsın.

Kaynaklar

  1. Telegram Bot API
  2. AWS Lambda
  3. Redis

Sonraki adım

Basit bot yaz. Sonra webhook’a taşı. Redis ekle. Retry yaz. Farkı gör. Biz bu yolu defalarca geçtik, en çok kazandıran şey bu iterasyon oldu.

Paylaş:

RadKod Hizmetleri

Projeniz için profesyonel yazılım hizmetleri mi arıyorsunuz?

Web Geliştirme Mobil Uygulama Tum Hizmetler

Abdullah Bozdağ

Abdullah Bozdağ

RadKod Ekibi

İlgili Yazılar