Stavíme Telegram Boty s LLM: Praktický průvodce
Telegram boty jsou nejrychlejší distribuční kanál pro AI produkty. Žádné schválení v app store, žádný složitý onboarding — stačí sdílet odkaz a uživatelé mluví s vaším produktem.
Takto je stavím.
Proč Telegram?
Než se pustíme do kódu, strategický případ:
- Okamžitý dosah: každý uživatel Telegramu může kliknout na odkaz a začít konverzaci
- Žádný frontend: chat UI je již zabudovaný
- Async friendly: uživatelé očekávají asynchronní komunikaci
- Podpora skupin: váš bot může sloužit týmům, ne jen jednotlivcům
Nevýhoda: jste omezeni na text, obrázky, soubory a hlas. Žádné vlastní UI. Pro mnoho případů použití je to v pořádku.
Architektura
Minimální Telegram bot poháněný LLM potřebuje:
- Webhook přijímač — poslouchá Telegram aktualizace
- LLM klient — posílá zprávy do Claude/GPT a streamuje odpověď
- Úložiště kontextu — uchovává historii konverzace per-user
- Rate limiter — zabraňuje zneužití
Používám Python s python-telegram-bot (v20+, async-first) a FastAPI pro webhook.
Základní kód
Tady je minimální setup:
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
from anthropic import Anthropic
client = Anthropic()
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
user_id = update.effective_user.id
text = update.message.text
# Získej nebo inicializuj historii konverzace
history = context.user_data.get('history', [])
history.append({"role": "user", "content": text})
# Stream odpovědi z Claude
response_text = ""
msg = await update.message.reply_text("...")
with client.messages.stream(
model="claude-opus-4-6",
max_tokens=1024,
system="Jsi nápomocný asistent.",
messages=history,
) as stream:
for chunk in stream.text_stream:
response_text += chunk
await msg.edit_text(response_text)
history.append({"role": "assistant", "content": response_text})
context.user_data['history'] = history[-20:] # uchovej posledních 10 kol
Správa kontextu
Největší chyba, kterou vidím: žádný limit kontextu. Claude a GPT mají context windows, ale nejsou nekonečné a náklady rostou lineárně s tokeny.
Moje pravidla:
- Uchovávej posledních N kol (defaultně 10)
- Shrň dlouhé konverzace místo ořezávání
- Ukládej stav konverzace server-side, ne v
context.user_data(to je jen in-memory)
Pro perzistentní úložiště používám PostgreSQL s jednoduchým schématem:
CREATE TABLE conversations (
user_id BIGINT NOT NULL,
role TEXT NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
Nasazení
Nasazuji na Render (free tier pro malé boty, $7/měsíc pro always-on):
- Push kód na GitHub
- Vytvořte novou Web Service na Render
- Nastavte proměnné prostředí:
TELEGRAM_TOKEN,ANTHROPIC_API_KEY - Zaregistrujte webhook:
https://api.telegram.org/bot{TOKEN}/setWebhook?url=https://yourapp.onrender.com/webhook
Hotovo. Bot je živý.
Závěr
Telegram boty jsou podhodnocený distribuční mechanismus pro AI produkty. Nízká tření pro uživatele, rychlé stavění, snadná iterace.
Pokud chcete postavit Telegram bota ale nevíte kde začít — napište mi na Telegram. Mohu mít funkční bot nasazený za 24-48 hodin.
Komentáře (0)
Buďte první, kdo zanechá komentář.
Zanechat komentář