Visas sistēmas darbojas Tavs IP: 216.73.217.113 info@cloudhosting.lv +371 66 66 29 69 Klientu zona

← Visi jautājumi

OpenClaw Telegram bots: tokens, allowFrom un kļūdas

Atjaunināts:

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: openclaw CLI uz parasta hosta vai Docker attēls ghcr.io/openclaw/openclaw ar 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:

  1. Vides rezerve. Ja channels.telegram.botToken nav norādīts, vārteja izmanto TELEGRAM_BOT_TOKEN (tikai noklusējuma kontam; nosauktiem kontiem vajadzīgs botToken vai tokenFile).
  2. 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 no allowFrom, bez pārī savienošanas. Vajadzīgs vismaz viens id.
  • open: prasa, lai allowFrom saturē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:

  1. Palaid vārteju ar noklusējuma pairing politiku, uzraksti savam botam un nolasi Your Telegram user id tā pārī savienošanas atbildē.
  2. Palaid openclaw logs --follow un nolasi senderUserId ierakstā telegram pairing request.
  3. 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ē

SimptomsIespējamais cēlonisRisinājums
Palaišanas žurnālā getMe returned 401Tokens 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ņuGaidošs pārī savienošanas pieprasījums, vai allowFrom satur lietotājvārdu, tālruņa numuru, grupas id vai paša bota idopenclaw pairing list telegram; nolasi senderUserId žurnālā; salabo allowFrom; openclaw doctor --fix vecajiem ierakstiem
Komandas strādā daļējiSūtītājs nav autorizēts, vai setMyCommands failed ar BOT_COMMANDS_TOO_MUCHAutorizē 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ēšanasTelegram 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 neredzGrupa nav zem channels.telegram.groups, nav "*" ieraksta, vai bots nav dalībnieksPievieno -100... id; channels status --probe pārbauda dalību; žurnāls rāda izlaišanas iemeslu
Polling stall detected120 sekundes nav pabeigta neviena garās aptaujas cikla; bieži IPv6 DNS vai nestabila izejošā savienojamībaRestartē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 ENOTFOUNDMediju lejupielādes joprojām izmanto lokālo DNS pat ar iestatītiem starpniekservera vides mainīgajiemIestati 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ēgtu exec.
  • 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, /token BotFather izdod jaunu; atjaunini .env un vēlreiz palaid channels 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 audit pē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.

Gribat, lai tas darbojas privāti?
AI asistents uz sava servera ES, un dati paliek tur, kur jūs tos nolikāt.
Apskatīt cenas

Gatavs sākt?

Palaid dažās minūtēs vai aprunājies ar inženieri par piemērotāko risinājumu.