Lai savienotu OpenClaw ar Telegram, tu izveido botu @BotFather, ieliec tā tokenu failā ~/.openclaw/.env, pievieno bloku channels.telegram failā ~/.openclaw/openclaw.json un piesaisti botu savam skaitliskajam Telegram lietotāja id ar allowFrom. Vārteja pēc noklusējuma izmanto garo aptauju (long polling), tāpēc serverim nav vajadzīgs ne publisks ports, ne domēns. Lielākā daļa kļūmju saistīta ar trim lietām: nepareizi ierakstīts tokens (401 no getMe), nepareizs id iekš allowFrom (pārī savienošanas kods vai klusums atbildes vietā) vai Telegram privātuma režīms, kas slēpj grupu ziņas.
Katra atslēga un komanda zemāk ir pārbaudīta oficiālajā OpenClaw dokumentācijā (2026.9.x) un Telegram Bot API lapās; kur tās klusē, mēs to pasakām.
Kas vajadzīgs pirms sākuma
- Strādājoša OpenClaw vārteja:
openclawCLI uz parasta hosta vai Docker attēlsghcr.io/openclaw/openclawar hosta~/.openclaw, kas piemontēts uz/home/node/.openclaw. Vēl nav uzstādīts? Skati mūsu uzstādīšanas pamācību. - Jau nokonfigurēta LLM sniedzēja atslēga (OpenAI, Anthropic, ar OpenAI saderīga vārteja vai Ollama).
- Telegram konts. Dokumentācija iesaka sākt ar Telegram: tam "vajadzīgs bota tokens un nav jāinstalē spraudnis".
1. solis: izveido botu BotFather
Atver Telegram, sāc sarunu ar @BotFather un nosūti /newbot. Tas pajautā attēlojamo vārdu un lietotājvārdu, kas beidzas ar bot, un tad atbild ar tokenu, piemēram, 4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc. Telegram pamācība ir tieša: izturies pret to kā pret paroli un nedod nevienam.
Privātam viena īpašnieka botam atstāj /setprivacy un /setjoingroups noklusējuma vērtībās; pie privātuma režīma atgriezīsimies zemāk.
2. solis: glabā tokenu .env failā, nevis konfigurācijā
OpenClaw lasa vides mainīgos no vecākprocesa un no ~/.openclaw/.env kā globāla rezerves avota, kas nekad nepārraksta čaulā jau iestatītu mainīgo. Ieliec tokenu tur:
TELEGRAM_BOT_TOKEN=4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc
Strādā abi dokumentētie veidi, kā nodot to kanālam:
- Vides rezerve. Ja
channels.telegram.botTokennav norādīts, vārteja izmantoTELEGRAM_BOT_TOKEN(tikai noklusējuma kontam; nosauktiem kontiem vajadzīgsbotTokenvaitokenFile). - Tieša atsauce. Ieraksti
"botToken": "${TELEGRAM_BOT_TOKEN}". Aizvietošana strādā jebkurā konfigurācijas virknē, izvēršas tikai lielo burtu nosaukumi, un trūkstoši mainīgie "paliek redzami neatrisināti" un izdod brīdinājumu. Mēs dodam priekšroku šai formai; konfigurācija parāda, kur glabājas noslēpums.
Prioritāte, citējot uzstādīšanas lapu: "tokenFile pārspēj botToken, un botToken pārspēj vidi." Tāpēc, ja nomainīts tokens nestājas spēkā, meklē novecojušu botToken vai tokenFile. tokenFile jābūt parastam failam; simboliskās saites tiek noraidītas.
3. solis: bloks channels.telegram failā openclaw.json
Dokumentācija apraksta ~/.openclaw/openclaw.json kā JSON5 (pieļauti komentāri un beigu komati); mēs savējo turam stingrā JSON. Minimāls pirmais bloks:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "pairing"
}
}
}
CLI saīsne openclaw channels add --channel telegram --token <bot-token> ieraksta tokenu tieši konfigurācijas failā; uz serveriem mēs dodam priekšroku vides atsaucei, kas aprakstīta augstāk.
dmPolicy nosaka, kas drīkst runāt ar botu privātā sarunā. Četras dokumentētās vērtības:
pairing(noklusējums): nezināms sūtītājs atbildes vietā saņem 8 zīmju kodu, un nekas netiek apstrādāts, kamēr tu to neapstiprini no CLI. Kodi beidzas pēc vienas stundas, ne vairāk kā trīs gaidoši uz kanāla kontu.allowlist: apkalpo tikai id noallowFrom, bez pārī savienošanas. Vajadzīgs vismaz viens id.open: prasa, laiallowFromsaturētu"*". Dokumentācija: lieto "tikai apzināti publiskiem botiem ar stingri ierobežotiem rīkiem".disabled: nekādu tiešo ziņu.
Vārteja seko konfigurācijas failam un lielāko daļu izmaiņu piemēro automātiski (dokumentācijas karstās pārlādes lapa uzskaita, kam joprojām vajadzīga restartēšana); uz Docker docker compose up -d openclaw-gateway izveido konteineri no jauna.
4. solis: atrodi savu Telegram lietotāja id un iestati allowFrom
Šeit visbiežāk kaut kas noiet greizi. allowFrom pieņem skaitliskus Telegram lietotāja id, pēdiņās kā virknes: "nevis tālruņa numuru, lietotājvārdu, čata/grupas ID vai bota ID". Prefiksi telegram: un tg: tiek pieņemti un normalizēti.
Trīs dokumentēti veidi, kā uzzināt savu id:
- Palaid vārteju ar noklusējuma
pairingpolitiku, uzraksti savam botam un nolasiYour Telegram user idtā pārī savienošanas atbildē. - Palaid
openclaw logs --followun nolasisenderUserIdierakstātelegram pairing request. - Kad bots tev jau atbild, nosūti
/whoami@<bot_username>; tas apstiprina tavu lietotāja id un atļautā grupā arī grupas id.
Tagad piesaisti botu sev. Dokumentācijas viena īpašnieka piemērs saglabā pairing un pievieno allowFrom: tu esi iepriekš apstiprināts, svešinieki redz tikai kodu, ko vari ignorēt.
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "pairing",
"allowFrom": ["123456789"]
}
}
}
Ja negribi nekādus pārī savienošanas uzaicinājumus, iestati dmPolicy uz allowlist ar to pašu allowFrom.
5. solis: palaid, pārbaudi un nosūti pirmo ziņu
openclaw gateway start
openclaw channels status --probe
openclaw logs --follow
channels status --probe kopā ar Telegram apstiprina, ka kanāls ir gatavs, tāpēc nepareizs tokens vispirms parādās šeit. Uz Docker izmanto uzstādīšanas lapas apvalku docker compose exec openclaw-gateway sh -lc 'node dist/index.js gateway health', nomainot apakškomandu uz channels status --probe.
Uzraksti savam botam. Ja atstāji pairing bez allowFrom, saņemsi kodu; apstiprini to ar:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
Apstiprinātie sūtītāji glabājas failā ~/.openclaw/state/openclaw.sqlite un pārdzīvo restartus. Apstiprinājums "dod tikai tiešo ziņu piekļuvi", nekad grupu piekļuvi. Lai pārbaudītu tokenu bez OpenClaw, izsauc getMe: curl -s "https://api.telegram.org/bot<TOKEN>/getMe" uz servera, nevis pārlūkā, lai tokens nepaliek vēsturē.
Privātā saruna pret grupām un privātuma režīms
Dokumentācija uzskata grupas par atbalstītām aiz pieminēšanas vārtiem, bet viena īpašnieka asistentam privātā saruna ir drošāka: katra cita dalībnieka ziņa ir neuzticams saturs, ko modelis lasa, tieši tas uzvednes injekcijas gadījums, ko apraksta dokumentācija. Ja grupa tomēr vajadzīga, jāsakrīt trim lietām.
1. Grupai jābūt atļauto sarakstā. groupPolicy pēc noklusējuma ir allowlist, tāpēc čata id jāparādās zem channels.telegram.groups (vai jābūt aizstājējzīmei "*"). Supergrupu id ir negatīvi un sākas ar -100; nolasi to no openclaw logs --follow, no bota, kas rāda pārsūtītu ziņu id, vai no getUpdates.
2. Izlem, kas drīkst to iedarbināt. groupAllowFrom pieņem skaitliskus lietotāja id, tie paši noteikumi kā allowFrom; ja nav iestatīts, tiek izmantots allowFrom. Ieliec tur tikai savu id.
3. Pieminēšana un privātuma režīms. Ar requireMention: true bots atbild tikai tad, kad to piemin, un tieši šo režīmu uzstādīšanas lapa savieno ar Telegram privātuma režīmu (ieslēgts pēc noklusējuma), kurā bots saņem tikai tam adresētas komandas, atbildes uz savām ziņām un servisa ziņas. Ja gribi requireMention: false vai pieminēšana botu nesasniedz, izslēdz privātuma režīmu ar /setprivacy BotFather, tad izņem un pievieno botu no jauna; Telegram piemēro izmaiņas tikai pēc atkārtotas pievienošanās. Grupas administratori saņem visas ziņas neatkarīgi no tā.
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"dmPolicy": "allowlist",
"allowFrom": ["123456789"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["123456789"],
"groups": {
"-1001234567890": { "requireMention": true }
}
}
}
}
Aptauja vai webhook
"Garā aptauja ir noklusējums." Vārteja ciklā izsauc Telegram getUpdates, un tai vajadzīgs tikai izejošais HTTPS: ne atvērta porta, ne domēna, ne sertifikāta. Tā strādājam mēs.
Webhook režīmam vajadzīgi channels.telegram.webhookUrl un channels.telegram.webhookSecret; klausītāja noklusējumi ir webhookHost 127.0.0.1, webhookPort 8787 un webhookPath /telegram-webhook (/healthz ir rezervēts). Tas piesaistās loopback adresei, tāpēc priekšā jāliek reversais starpniekserveris ar īstu sertifikātu (vai jāiestata webhookCertPath pašparakstītam sertifikātam uz kailas IP); Telegram piegādā tikai uz HTTPS portiem 443, 80, 88 vai 8443.
Viens Bot API noteikums iekož tiem, kas pārslēdzas turp un atpakaļ: getUpdates un webhook ir savstarpēji izslēdzoši. OpenClaw izsauc deleteWebhook, kad sākas aptauja; ja tas neizdodas pārejošas tīkla kļūdas dēļ, palikušais webhook parādās kā getUpdates konflikts, un vārteja pārbūvē transportu un mēģina vēlreiz. Tikai tad, ja tas atkārtojas atkal un atkal, izsauc deleteWebhook pats.
Biežākās kļūdas un ko tās nozīmē
| Simptoms | Iespējamais cēlonis | Risinājums |
|---|---|---|
Palaišanas žurnālā getMe returned 401 | Tokens nepareizi ierakstīts vai atsaukts, vai novecojis botToken/tokenFile pārraksta .env | Ģenerē tokenu no jauna BotFather, atjaunini botToken vai TELEGRAM_BOT_TOKEN, vēlreiz palaid channels status --probe |
| Bots ir tiešsaistē, bet nekad neatbild uz tavu ziņu | Gaidošs pārī savienošanas pieprasījums, vai allowFrom satur lietotājvārdu, tālruņa numuru, grupas id vai paša bota id | openclaw pairing list telegram; nolasi senderUserId žurnālā; salabo allowFrom; openclaw doctor --fix vecajiem ierakstiem |
| Komandas strādā daļēji | Sūtītājs nav autorizēts, vai setMyCommands failed ar BOT_COMMANDS_TOO_MUCH | Autorizē sūtītāju; samazini pielāgoto komandu skaitu vai atslēdz iebūvētās izvēlnes |
| Bots ignorē grupas ziņas bez pieminēšanas | Telegram privātuma režīms ir ieslēgts, kamēr requireMention ir false | /setprivacy Disable BotFather, tad izņem un pievieno botu no jauna |
| Bots grupā neko neredz | Grupa nav zem channels.telegram.groups, nav "*" ieraksta, vai bots nav dalībnieks | Pievieno -100... id; channels status --probe pārbauda dalību; žurnāls rāda izlaišanas iemeslu |
Polling stall detected | 120 sekundes nav pabeigta neviena garās aptaujas cikla; bieži IPv6 DNS vai nestabila izejošā savienojamība | Restartējas pats; ja atkārtojas, pārbaudi dig +short api.telegram.org AAAA, piespied IPv4 (channels.telegram.network.autoSelectFamily: false vai NODE_OPTIONS=--dns-result-order=ipv4first) vai iestati channels.telegram.proxy |
Teksts strādā, pielikumi krīt ar getaddrinfo EAI_AGAIN vai ENOTFOUND | Mediju lejupielādes joprojām izmanto lokālo DNS pat ar iestatītiem starpniekservera vides mainīgajiem | Iestati channels.telegram.proxy (HTTP(S) vai SOCKS5), lai tas atrisina mediju hostu vārdus |
Drošība: viens īpašnieks, viens tokens, nomaiņa noplūdes gadījumā
OpenClaw pēc uzbūves ir attālā koda izpilde: kurš var uzrakstīt botam, tas var vadīt tā rīkus. Drošības lapa prasa "vienu uzticības robežu uz vārteju: viens operators vai komanda, kuras dalībnieki uzticas cits citam", un uzvednes injekcijas lapa ierobežo augsta riska rīkus (exec, browser, web_fetch, web_search) līdz uzticamiem aģentiem vai tiešiem atļauto sarakstiem. Praksē:
- Tieši viens id iekš
allowFrom, tavējais. Nekāda"*", nekāda koplietota bota ar ieslēgtuexec. - Ierobežo rīkus visiem, kas neesi tu. Dokumentācijas piemērs liedz write un edit aizstājējzīmes sūtītājam un atstāj īpašnieku bez ierobežojumiem:
"direct": { "*": { "tools": { "deny": ["write", "edit"] } }, "123456789": { "tools": {} } } - Nekad neielīmē tokenu čatā, pieteikumā vai ekrānuzņēmumā. Ja tas noplūst,
/tokenBotFather izdod jaunu; atjaunini.envun vēlreiz palaidchannels status --probe. - Turi vārteju uz loopback. Vadības saskarne pēc noklusējuma klausās uz
http://127.0.0.1:18789/; piekļūsti tai caur SSH tuneli vai Tailscale, nekad caur publicētu portu. Telegram tas nav vajadzīgs, un CVE-2026-25253 (viena klikšķa RCE caur tokena zādzību) ir iemesls, kāpēc mēs uz to uzstājam. - Palaid
openclaw security auditpēc katras konfigurācijas izmaiņas; dokumentācija to sauc par vienīgo komandu, kas pasaka, vai esi novirzījies no drošas konfigurācijas.
Darbināšana uz servera
Telegram asistentam jābūt tiešsaistē brīdī, kad tu tam raksti, tāpēc klēpjdators neder; pietiek ar jebkuru mazu Linux VM ar izejošo HTTPS. Mūsu VPS katalogs aptver šo diapazonu; ja gribi izlaist uzstādīšanu, gatavais OpenClaw serveris no 9.35 EUR mēnesī nāk ar Ubuntu 24.04 un vārteju, kas jau darbojas Docker: pievieno savu LLM atslēgu, savieno botu, kā aprakstīts augstāk, un aģents atbild tikai tev. Sver, vai izvēlēties mitinātu modeli vai savu? Skati šo salīdzinājumu.
Jautājumi
Vai Telegram botam vajadzīgs domēns vai atvērts ports?
Nē. Garā aptauja ir noklusējums un strādā tikai ar izejošo HTTPS. Domēns, sertifikāts un ienākošais ports vajadzīgi tikai tad, ja pārslēdzies uz webhook režīmu.
Kāpēc mans bots atbild ar kodu, nevis ar atbildi?
Tā ir noklusējuma pairing politika: tavs id vēl nav apstiprināts. Palaid openclaw pairing approve telegram <CODE> vai pievieno savu skaitlisko lietotāja id pie allowFrom. Kodi beidzas pēc vienas stundas.
Vai allowFrom var lietot manu @lietotājvārdu?
Nē. allowFrom un groupAllowFrom pieņem tikai skaitliskus Telegram lietotāja id. Vecākas konfigurācijas ar @username ierakstiem pārveido openclaw doctor --fix.
Bots ir manā grupā, bet neko nelasa. Kāpēc?
Darbojas divi vārti: grupas id jābūt uzskaitītam zem channels.telegram.groups (vai jābūt ierakstam "*"), un Telegram privātuma režīmam jāļauj botam redzēt ziņas. Atstāj requireMention: true, vai izslēdz privātuma režīmu ar /setprivacy un pievieno botu no jauna, vai padari botu par grupas administratoru.