Wiki · Integrace

Telegram — provoz bota

Nejčastější problém s Telegramem není v Hermesu, ale v privacy módu bota. Prakticky: nastavení, skupiny a doručování.

💬
Nejčastější problém s Telegramem není v Hermesu, ale v privacy módu bota. Telegram botům ve výchozím stavu nezobrazuje běžné zprávy ve skupině — jen příkazy a odpovědi sobě. Kdo to neví, myslí si, že agent ve skupině nefunguje. Řešení je přitom jedno zaškrtnutí (vlastně jedno vypnutí) v BotFather.

Rychlá cesta

V dashboardu (Messaging → Telegram) i v aplikaci je tlačítko Create with QR: naskenujete kód, Hermes bota založí, sám zjistí vaše číselné ID a zapíše TELEGRAM_BOT_TOKEN i TELEGRAM_ALLOWED_USERS do .env. Ruční cesta níže je pro ty, kdo chtějí mít bota pod vlastní kontrolou — a je dobré vědět, co přesně se při ní děje.

1. Bot u BotFathera

@BotFather → /newbot → jméno pro lidi („Hermes Agent“) → uživatelské jméno, musí končit na „bot“ (např. muj_hermes_bot) → BotFather pošle token: 123456789:ABCdef…

Token je klíč od bota. Kdo ho má, ovládá bota. Když unikne, zneplatníte ho příkazem /revoke u BotFathera a vyměníte v .env.

Příkaz u BotFatheraK čemu
/setdescriptionText „Co tento bot umí?“ před první zprávou
/setcommandsNabídka příkazů na tlačítku „/“ (stačí help, new, sethome)
/setuserpicAvatar bota
/setprivacyPrávě ten privacy mód — viz níže

2. Privacy mód: proč bot ve skupině „nevidí“

Privacy mód je ve výchozím stavu zapnutý. Bot pak dostane jen:

  • zprávy začínající / (příkazy),
  • odpovědi na své vlastní zprávy,
  • servisní zprávy (kdo přišel/odešel, připíchnutí),
  • vše ve skupinách, kde je správcem.
Vypnutí: @BotFather → /mybots → vybrat bota → Bot Settings → Group Privacy → Turn off POZOR: po změně musíte bota ze skupiny odebrat a znovu přidat — Telegram si stav pamatuje z okamžiku, kdy do skupiny přišel.

Alternativa bez vypínání privacy módu: udělat bota správcem skupiny. Správci dostávají všechny zprávy a nemusíte nic přenastavovat globálně.

Když má bot poslouchat, ale neodpovídat

telegram: allowed_chats: ["-1001234567890"] group_allowed_chats: ["-1001234567890"] require_mention: true observe_unmentioned_group_messages: true

Tím se bot dívá na dění ve skupině (může shrnout, co se probíralo), ale promluví jen tehdy, když ho někdo označí nebo zavolá příkazem.

3. Číselné ID a přístup

Hermes ověřuje přístup podle číselného ID, ne podle uživatelského jména (to se dá změnit). Svoje ID zjistíte zprávou botovi @userinfobot.

# ~/.hermes/.env TELEGRAM_BOT_TOKEN=123456789:ABCdef… TELEGRAM_ALLOWED_USERS=123456789,987654321 # čárkou víc lidí

Prázdné TELEGRAM_ALLOWED_USERS znamená, že bot odpovídá komukoli, kdo ho najde. Pro vlastní agenta to nikdy nechcete — vždy doplňte aspoň svoje ID.

4. Co všechno umí

VlastnostJak se projeví
Hlasové zprávyPříchozí se přepíšou na text; odpovědět lze i hlasem (když je zapnutý hlasový výstup)
Soubory a fotkyPosílá i přijímá přílohy; cesta v MEDIA:/… musí být čitelná na stroji, kde běží brána
Doručování z pravidelných úlohVýsledek cronu přiletí do domovského kanálu (/sethome nebo TELEGRAM_HOME_CHANNEL)
Vlákna (témata)V skupinách s tématy se dá určit, do kterého vlákna cron posílá (TELEGRAM_CRON_THREAD_ID)
ReakceAgent může označit zprávu reakcí místo odpovědi
Velké soubory (nad 20 MB)Jen přes vlastní Bot API server (TELEGRAM_LOCAL, TELEGRAM_API_ID, TELEGRAM_API_HASH)
Webhook místo dotazováníKdyž máte veřejnou HTTPS adresu (TELEGRAM_WEBHOOK_URL, …_SECRET, …_PORT)

5. Více botů v jedné skupině

Funguje to, ale každý bot musí mít vlastní token a vlastní profil. Aby se nepřekřikovali, nastavte jim různé spouštěcí fráze (mention_patterns) nebo je oddělte do témat. Bez toho budou na stejnou zprávu reagovat oba.

Časté potíže

PříznakPříčina
V soukromé zprávě funguje, ve skupině mlčíPrivacy mód (viz výše) — vypnout, nebo bota udělat správcem
Bot po přidání do skupiny nic nedělá, i po vypnutí privacy móduBota je potřeba ze skupiny odebrat a znovu přidat
Bot nereaguje vůbecNeběží brána (hermes gateway status), nebo je ID uživatele mimo allowlist
„Unauthorized“ v loguŠpatný nebo zneplatněný token; po /revoke je potřeba nový
Příloha se neodešleBěží brána v Dockeru a cesta v MEDIA: existuje jen uvnitř kontejneru
Soubor nad 20 MB nejdeLimit veřejného Bot API — potřebujete vlastní Bot API server

Jak to máme u nás

Telegram používáme jako dálkový ovladač: ráno přijde souhrn z cronu, během dne se ptáme z telefonu a výsledky (tabulky, PDF) chodí zpět jako přílohy. Dvě věci se vyplatily:

ZvykProč
Domovský kanál nastavený hned na začátkuBez něj cron neví, kam psát, a výsledky zapadnou
Allowlist jen s vlastními IDBot je veřejně dohledatelný; allowlist je jediná brána

Kam dál

← Zpět na wiki