Telegram (Bot API)
Status: gotowe do użycia na produkcji dla botowych wiadomości prywatnych i grup przez grammY. Długie odpytywanie jest trybem domyślnym; tryb webhooka jest opcjonalny.Parowanie
Rozwiązywanie problemów z kanałami
Konfiguracja Gateway
Szybka konfiguracja
Utwórz token bota w BotFather
@BotFather).Uruchom /newbot, postępuj zgodnie z instrukcjami i zapisz token.Skonfiguruj token i politykę DM
TELEGRAM_BOT_TOKEN=... (tylko konto domyślne).
Telegram nie używa openclaw channels login telegram; skonfiguruj token w config/env, a następnie uruchom gateway.TELEGRAM_BOT_TOKEN dotyczy tylko konta domyślnego.Ustawienia po stronie Telegrama
Tryb prywatności i widoczność grup
Tryb prywatności i widoczność grup
- wyłącz tryb prywatności przez
/setprivacy, lub - nadaj botowi uprawnienia administratora grupy.
Uprawnienia grupowe
Uprawnienia grupowe
Przydatne przełączniki BotFather
Przydatne przełączniki BotFather
/setjoingroups, aby zezwolić/zabronić dodawania do grup/setprivacydla zachowania widoczności w grupach
Kontrola dostępu i aktywacja
- Polityka DM
- Polityka grup i allowlisty
- Zachowanie wzmianek
channels.telegram.dmPolicy steruje dostępem do wiadomości prywatnych:pairing(domyślnie)allowlist(wymaga co najmniej jednego identyfikatora nadawcy wallowFrom)open(wymaga, abyallowFromzawierało"*")disabled
channels.telegram.allowFrom akceptuje numeryczne identyfikatory użytkowników Telegrama. Prefiksy telegram: / tg: są akceptowane i normalizowane.
dmPolicy: "allowlist" z pustym allowFrom blokuje wszystkie wiadomości prywatne i jest odrzucane przez walidację konfiguracji.
Onboarding akceptuje dane wejściowe @username i rozwiązuje je do identyfikatorów numerycznych.
Jeśli zaktualizowano system i konfiguracja zawiera wpisy allowlist @username, uruchom openclaw doctor --fix, aby je rozwiązać (best-effort; wymaga tokena bota Telegram).
Jeśli wcześniej polegano na plikach allowlist ze storage parowania, openclaw doctor --fix może odzyskać wpisy do channels.telegram.allowFrom w przepływach allowlist (na przykład gdy dmPolicy: "allowlist" nie ma jeszcze jawnych identyfikatorów).Dla botów z jednym właścicielem zalecane jest dmPolicy: "allowlist" z jawnymi numerycznymi identyfikatorami allowFrom, aby polityka dostępu była trwale zapisana w config (zamiast zależeć od wcześniejszych zatwierdzeń parowania).Częste nieporozumienie: zatwierdzenie parowania wiadomości prywatnej nie oznacza, że „ten nadawca jest autoryzowany wszędzie”.
Parowanie przyznaje dostęp tylko do wiadomości prywatnych. Autoryzacja nadawcy w grupie nadal pochodzi z jawnych allowlist w konfiguracji.
Jeśli chcesz, aby „po jednokrotnej autoryzacji działały zarówno DM, jak i polecenia grupowe”, dodaj swój numeryczny identyfikator użytkownika Telegram do channels.telegram.allowFrom.Jak znaleźć swój identyfikator użytkownika Telegram
Bezpieczniejsza metoda (bez bota zewnętrznego):- Wyślij wiadomość prywatną do swojego bota.
- Uruchom
openclaw logs --follow. - Odczytaj
from.id.
@userinfobot lub @getidsbot.Zachowanie w czasie działania
- Telegram jest obsługiwany przez proces gateway.
- Routing jest deterministyczny: przychodzące odpowiedzi Telegram wracają do Telegrama (model nie wybiera kanałów).
- Wiadomości przychodzące są normalizowane do wspólnej koperty kanału z metadanymi odpowiedzi i placeholderami mediów.
- Sesje grupowe są izolowane według identyfikatora grupy. Tematy forum dodają
:topic:<threadId>, aby utrzymać izolację tematów. - Wiadomości prywatne mogą zawierać
message_thread_id; OpenClaw kieruje je z użyciem kluczy sesji świadomych wątków i zachowuje identyfikator wątku dla odpowiedzi. - Długie odpytywanie używa grammY runner z sekwencjonowaniem per czat/per wątek. Ogólna współbieżność sink runnera używa
agents.defaults.maxConcurrent. - Telegram Bot API nie obsługuje potwierdzeń odczytu (
sendReadReceiptsnie ma zastosowania).
Dokumentacja funkcji
Podgląd transmisji na żywo (edycje wiadomości)
Podgląd transmisji na żywo (edycje wiadomości)
- czaty prywatne: wiadomość podglądu +
editMessageText - grupy/tematy: wiadomość podglądu +
editMessageText
channels.telegram.streamingma wartośćoff | partial | block | progress(domyślnie:partial)progressmapuje się dopartialw Telegramie (zgodność z nazewnictwem międzykanałowym)- starsze wartości
channels.telegram.streamModei logicznestreamingsą automatycznie mapowane
- DM: OpenClaw zachowuje tę samą wiadomość podglądu i wykonuje końcową edycję w miejscu (bez drugiej wiadomości)
- grupa/temat: OpenClaw zachowuje tę samą wiadomość podglądu i wykonuje końcową edycję w miejscu (bez drugiej wiadomości)
sendMessage + editMessageText.Strumień rozumowania tylko dla Telegrama:/reasoning streamwysyła rozumowanie do podglądu na żywo podczas generowania- końcowa odpowiedź jest wysyłana bez tekstu rozumowania
Formatowanie i awaryjny powrót do HTML
Formatowanie i awaryjny powrót do HTML
parse_mode: "HTML".- Tekst w stylu Markdown jest renderowany do bezpiecznego dla Telegrama HTML.
- Surowy HTML modelu jest escapowany, aby ograniczyć błędy parsowania Telegrama.
- Jeśli Telegram odrzuci sparsowany HTML, OpenClaw podejmie ponowną próbę jako zwykły tekst.
channels.telegram.linkPreview: false.Natywne polecenia i polecenia niestandardowe
Natywne polecenia i polecenia niestandardowe
setMyCommands.Domyślne ustawienia poleceń natywnych:commands.native: "auto"włącza natywne polecenia dla Telegrama
- nazwy są normalizowane (usunięcie początkowego
/, małe litery) - prawidłowy wzorzec:
a-z,0-9,_, długość1..32 - polecenia niestandardowe nie mogą nadpisywać poleceń natywnych
- konflikty/duplikaty są pomijane i logowane
- polecenia niestandardowe to tylko wpisy menu; nie implementują automatycznie zachowania
- polecenia plugin/Skills nadal mogą działać po wpisaniu, nawet jeśli nie są pokazane w menu Telegrama
setMyCommands failedzBOT_COMMANDS_TOO_MUCHoznacza, że menu Telegrama nadal było przepełnione po przycięciu; zmniejsz liczbę poleceń plugin/Skills/niestandardowych lub wyłączchannels.telegram.commands.native.setMyCommands failedz błędami sieci/fetch zwykle oznacza, że wychodzący DNS/HTTPS doapi.telegram.orgjest zablokowany.
Polecenia parowania urządzeń (plugin device-pair)
Gdy plugin device-pair jest zainstalowany:/pairgeneruje kod konfiguracji- wklej kod w aplikacji iOS
/pair pendingwyświetla oczekujące żądania (w tym rolę/zakresy)- zatwierdź żądanie:
/pair approve <requestId>dla jawnego zatwierdzenia/pair approve, gdy istnieje tylko jedno oczekujące żądanie/pair approve latestdla najnowszego
scopes: []; każdy przekazany token operatora pozostaje ograniczony do operator.approvals, operator.read, operator.talk.secrets i operator.write. Kontrole zakresów bootstrap są poprzedzone prefiksem roli, więc ta allowlista operatora spełnia tylko żądania operatora; role nieoperatorskie nadal wymagają zakresów pod własnym prefiksem roli.Jeśli urządzenie ponowi próbę ze zmienionymi danymi uwierzytelniania (na przykład rola/zakresy/klucz publiczny), poprzednie oczekujące żądanie zostanie zastąpione, a nowe będzie używać innego requestId. Uruchom ponownie /pair pending przed zatwierdzeniem.Więcej szczegółów: Parowanie.Przyciski inline
Przyciski inline
offdmgroupallallowlist(domyślnie)
capabilities: ["inlineButtons"] mapuje się do inlineButtons: "all".Przykład akcji wiadomości:callback_data: <value>Akcje wiadomości Telegram dla agentów i automatyzacji
Akcje wiadomości Telegram dla agentów i automatyzacji
sendMessage(to,content, opcjonalniemediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name, opcjonalnieiconColor,iconCustomEmojiId)
send, react, delete, edit, sticker, sticker-search, topic-create).Przełączniki ograniczeń:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(domyślnie: wyłączone)
edit i topic-create są obecnie domyślnie włączone i nie mają osobnych przełączników channels.telegram.actions.*.
Wysyłki w czasie działania używają aktywnej migawki config/secrets (uruchomienie/przeładowanie), więc ścieżki akcji nie wykonują doraźnego ponownego rozwiązywania SecretRef przy każdym wysłaniu.Semantyka usuwania reakcji: /tools/reactionsTagi wątków odpowiedzi
Tagi wątków odpowiedzi
[[reply_to_current]]odpowiada na wiadomość wyzwalającą[[reply_to:<id>]]odpowiada na konkretny identyfikator wiadomości Telegrama
channels.telegram.replyToMode steruje obsługą:off(domyślnie)firstall
off wyłącza niejawne wątkowanie odpowiedzi. Jawne tagi [[reply_to_*]] są nadal honorowane.Tematy forum i zachowanie wątków
Tematy forum i zachowanie wątków
- klucze sesji tematów dodają
:topic:<threadId> - odpowiedzi i wpisywanie kierowane są do wątku tematu
- ścieżka konfiguracji tematu:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- wysyłanie wiadomości pomija
message_thread_id(Telegram odrzucasendMessage(...thread_id=1)) - akcje wpisywania nadal zawierają
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId dotyczy tylko tematów i nie jest dziedziczony z domyślnych ustawień grupy.Routing agenta per temat: Każdy temat może kierować do innego agenta przez ustawienie agentId w konfiguracji tematu. Daje to każdemu tematowi własny izolowany obszar roboczy, pamięć i sesję. Przykład:agent:zu:telegram:group:-1001234567890:topic:3Trwałe powiązanie tematu ACP: Tematy forum mogą przypinać sesje harness ACP przez najwyższego poziomu typowane powiązania ACP:bindings[]ztype: "acp"imatch.channel: "telegram"
/acp spawn <agent> --thread here|automoże powiązać bieżący temat Telegrama z nową sesją ACP.- Kolejne wiadomości w temacie są kierowane bezpośrednio do powiązanej sesji ACP (bez potrzeby użycia
/acp steer). - OpenClaw przypina w temacie wiadomość potwierdzającą uruchomienie po pomyślnym powiązaniu.
- Wymaga
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- czaty prywatne z
message_thread_idzachowują routing DM, ale używają kluczy sesji i celów odpowiedzi świadomych wątków.
Audio, wideo i naklejki
Audio, wideo i naklejki
Wiadomości audio
Telegram rozróżnia notatki głosowe i pliki audio.- domyślnie: zachowanie pliku audio
- tag
[[audio_as_voice]]w odpowiedzi agenta wymusza wysłanie jako notatka głosowa
Wiadomości wideo
Telegram rozróżnia pliki wideo i notatki wideo.Przykład akcji wiadomości:Naklejki
Obsługa naklejek przychodzących:- statyczne WEBP: pobierane i przetwarzane (placeholder
<media:sticker>) - animowane TGS: pomijane
- wideo WEBM: pomijane
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Powiadomienia o reakcjach
Powiadomienia o reakcjach
message_reaction (oddzielnie od ładunków wiadomości).Gdy są włączone, OpenClaw umieszcza w kolejce zdarzenia systemowe, takie jak:Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(domyślnie:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(domyślnie:minimal)
ownoznacza reakcje użytkowników tylko na wiadomości wysłane przez bota (best-effort przez cache wysłanych wiadomości).- Zdarzenia reakcji nadal respektują kontrolę dostępu Telegrama (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom); nieautoryzowani nadawcy są odrzucani. - Telegram nie udostępnia identyfikatorów wątków w aktualizacjach reakcji.
- grupy niebędące forum są kierowane do sesji czatu grupowego
- grupy forum są kierowane do sesji ogólnego tematu grupy (
:topic:1), a nie do dokładnego tematu źródłowego
allowed_updates dla odpytywania/webhooka automatycznie obejmuje message_reaction.Reakcje potwierdzające
Reakcje potwierdzające
ackReaction wysyła emoji potwierdzenia, gdy OpenClaw przetwarza wiadomość przychodzącą.Kolejność rozwiązywania:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- awaryjnie emoji tożsamości agenta (
agents.list[].identity.emoji, w przeciwnym razie ”👀”)
- Telegram oczekuje emoji Unicode (na przykład ”👀”).
- Użyj
"", aby wyłączyć reakcję dla kanału lub konta.
Zapisy konfiguracji z wydarzeń i poleceń Telegrama
Zapisy konfiguracji z wydarzeń i poleceń Telegrama
configWrites !== false).Zapisy wyzwalane przez Telegram obejmują:- zdarzenia migracji grupy (
migrate_to_chat_id) w celu aktualizacjichannels.telegram.groups /config seti/config unset(wymaga włączenia poleceń)
Długie odpytywanie a webhook
Długie odpytywanie a webhook
- ustaw
channels.telegram.webhookUrl - ustaw
channels.telegram.webhookSecret(wymagane, gdy ustawiono webhook URL) - opcjonalnie
channels.telegram.webhookPath(domyślnie/telegram-webhook) - opcjonalnie
channels.telegram.webhookHost(domyślnie127.0.0.1) - opcjonalnie
channels.telegram.webhookPort(domyślnie8787)
127.0.0.1:8787.Jeśli publiczny endpoint jest inny, umieść przed nim reverse proxy i wskaż webhookUrl na publiczny URL.
Ustaw webhookHost (na przykład 0.0.0.0), gdy celowo potrzebujesz zewnętrznego ruchu przychodzącego.Limity, ponawianie prób i cele CLI
Limity, ponawianie prób i cele CLI
- Domyślna wartość
channels.telegram.textChunkLimitto 4000. channels.telegram.chunkMode="newline"preferuje granice akapitów (puste linie) przed podziałem według długości.channels.telegram.mediaMaxMb(domyślnie 100) ogranicza rozmiar mediów przychodzących i wychodzących Telegrama.channels.telegram.timeoutSecondsnadpisuje limit czasu klienta Telegram API (jeśli nieustawione, obowiązuje domyślna wartość grammY).- historia kontekstu grupy używa
channels.telegram.historyLimitlubmessages.groupChat.historyLimit(domyślnie 50);0wyłącza. - dodatkowy kontekst odpowiedzi/cytatu/przekazania jest obecnie przekazywany tak, jak został odebrany.
- allowlisty Telegrama głównie kontrolują, kto może wywołać agenta, a nie stanowią pełnej granicy redakcji dodatkowego kontekstu.
- kontrolki historii DM:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- konfiguracja
channels.telegram.retrydotyczy pomocników wysyłania Telegrama (CLI/tools/actions) dla odzyskiwalnych błędów wychodzącego API.
openclaw message poll i obsługują tematy forum:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-iddla tematów forum (lub użyj celu:topic:)
--buttonsdla klawiatur inline, gdychannels.telegram.capabilities.inlineButtonszezwala na tę powierzchnię--force-document, aby wysyłać obrazy i GIF-y jako dokumenty zamiast skompresowanych zdjęć lub przesyłek animowanych mediów
channels.telegram.actions.sendMessage=falsewyłącza wychodzące wiadomości Telegrama, w tym ankietychannels.telegram.actions.poll=falsewyłącza tworzenie ankiet Telegrama, pozostawiając zwykłe wysyłanie włączone
Zatwierdzenia exec w Telegramie
Zatwierdzenia exec w Telegramie
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(opcjonalnie; awaryjnie używa numerycznych identyfikatorów właściciela wywnioskowanych zallowFromoraz bezpośredniegodefaultTo, gdy to możliwe)channels.telegram.execApprovals.target(dm|channel|both, domyślnie:dm)agentFilter,sessionFilter
enabled nie jest ustawione lub ma wartość "auto" i można rozwiązać co najmniej jednego zatwierdzającego, albo z execApprovals.approvers, albo z numerycznej konfiguracji właściciela konta (allowFrom i bezpośrednie defaultTo dla wiadomości prywatnych). Ustaw enabled: false, aby jawnie wyłączyć Telegram jako natywnego klienta zatwierdzania. W przeciwnym razie żądania zatwierdzenia wracają awaryjnie do innych skonfigurowanych tras zatwierdzania albo do polityki awaryjnej zatwierdzeń exec.Telegram renderuje także współdzielone przyciski zatwierdzania używane przez inne kanały czatu. Natywny adapter Telegrama głównie dodaje routing wiadomości prywatnych zatwierdzających, fan-out kanału/tematu oraz wskazówki wpisywania przed dostarczeniem.
Gdy te przyciski są obecne, stanowią one główne UX zatwierdzania; OpenClaw
powinien dołączać ręczne polecenie /approve tylko wtedy, gdy wynik narzędzia mówi,
że zatwierdzenia na czacie są niedostępne lub ręczne zatwierdzenie jest jedyną ścieżką.Zasady dostarczania:target: "dm"wysyła prośby o zatwierdzenie tylko do rozwiązanych wiadomości prywatnych zatwierdzającychtarget: "channel"odsyła prośbę do źródłowego czatu/tematu Telegramatarget: "both"wysyła do wiadomości prywatnych zatwierdzających i do źródłowego czatu/tematu
/approve ani przycisków zatwierdzania Telegrama.Zachowanie rozwiązywania zatwierdzeń:- Identyfikatory z prefiksem
plugin:są zawsze rozwiązywane przez zatwierdzenia pluginów. - Inne identyfikatory najpierw próbują
exec.approval.resolve. - Jeśli Telegram jest także autoryzowany do zatwierdzeń pluginów i gateway zwraca,
że zatwierdzenie exec jest nieznane lub wygasłe, Telegram podejmuje jedną ponowną próbę przez
plugin.approval.resolve. - Rzeczywiste odrzucenia/błędy zatwierdzeń exec nie przechodzą po cichu do rozwiązywania zatwierdzeń pluginów.
channel lub both tylko w zaufanych grupach/tematach. Gdy prośba trafia do tematu forum, OpenClaw zachowuje temat zarówno dla prośby o zatwierdzenie, jak i działań po zatwierdzeniu. Zatwierdzenia exec wygasają domyślnie po 30 minutach.Przyciski zatwierdzania inline zależą też od tego, czy channels.telegram.capabilities.inlineButtons zezwala na docelową powierzchnię (dm, group lub all).Powiązana dokumentacja: Zatwierdzenia execKontrola odpowiedzi na błędy
Gdy agent napotka błąd dostarczenia lub dostawcy, Telegram może albo odpowiedzieć tekstem błędu, albo go ukryć. Dwa klucze konfiguracyjne sterują tym zachowaniem:| Key | Values | Default | Description |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply wysyła przyjazny komunikat o błędzie na czat. silent całkowicie wycisza odpowiedzi z błędami. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Minimalny czas między odpowiedziami z błędami na tym samym czacie. Zapobiega spamowi błędów podczas awarii. |
Rozwiązywanie problemów
Bot nie odpowiada na wiadomości grupowe bez wzmianki
Bot nie odpowiada na wiadomości grupowe bez wzmianki
- Jeśli
requireMention=false, tryb prywatności Telegrama musi zezwalać na pełną widoczność.- BotFather:
/setprivacy-> Disable - następnie usuń bota z grupy i dodaj go ponownie
- BotFather:
openclaw channels statusostrzega, gdy konfiguracja oczekuje wiadomości grupowych bez wzmianki.openclaw channels status --probemoże sprawdzać jawne numeryczne identyfikatory grup; członkostwa dla wildcard"*"nie da się sprawdzić sondą.- szybki test sesji:
/activation always.
Bot w ogóle nie widzi wiadomości grupowych
Bot w ogóle nie widzi wiadomości grupowych
- gdy istnieje
channels.telegram.groups, grupa musi być wymieniona (lub zawierać"*") - zweryfikuj członkostwo bota w grupie
- przejrzyj logi:
openclaw logs --follow, aby sprawdzić powody pominięcia
Polecenia działają częściowo lub wcale
Polecenia działają częściowo lub wcale
- autoryzuj tożsamość swojego nadawcy (parowanie i/lub numeryczne
allowFrom) - autoryzacja poleceń nadal obowiązuje, nawet gdy polityka grupy to
open setMyCommands failedzBOT_COMMANDS_TOO_MUCHoznacza, że natywne menu ma zbyt wiele wpisów; zmniejsz liczbę poleceń plugin/Skills/niestandardowych lub wyłącz natywne menusetMyCommands failedz błędami sieci/fetch zwykle wskazuje na problemy z osiągalnością DNS/HTTPS doapi.telegram.org
Niestabilność odpytywania lub sieci
Niestabilność odpytywania lub sieci
- Node 22+ + niestandardowy fetch/proxy mogą wywoływać natychmiastowe przerywanie, jeśli typy AbortSignal się nie zgadzają.
- Niektóre hosty najpierw rozwiązują
api.telegram.orgdo IPv6; uszkodzony ruch wychodzący IPv6 może powodować sporadyczne błędy Telegram API. - Jeśli logi zawierają
TypeError: fetch failedlubNetwork request for 'getUpdates' failed!, OpenClaw teraz ponawia te operacje jako odzyskiwalne błędy sieciowe. - Na hostach VPS z niestabilnym bezpośrednim ruchem wychodzącym/TLS kieruj wywołania Telegram API przez
channels.telegram.proxy:
- Node 22+ domyślnie używa
autoSelectFamily=true(z wyjątkiem WSL2) orazdnsResultOrder=ipv4first. - Jeśli host to WSL2 lub jawnie działa lepiej wyłącznie z IPv4, wymuś wybór rodziny:
- Odpowiedzi z zakresu benchmarkowego RFC 2544 (
198.18.0.0/15) są już domyślnie dozwolone dla pobierania mediów Telegrama. Jeśli zaufany fake-IP lub transparent proxy przepisujeapi.telegram.orgna inny prywatny/wewnętrzny/specjalnego przeznaczenia adres podczas pobierania mediów, możesz włączyć obejście tylko dla Telegrama:
- To samo opt-in jest dostępne per konto pod
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Jeśli proxy rozwiązuje hosty mediów Telegrama na
198.18.x.x, najpierw pozostaw niebezpieczną flagę wyłączoną. Media Telegrama już domyślnie zezwalają na zakres benchmarkowy RFC 2544.
- Nadpisania przez zmienne środowiskowe (tymczasowe):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Zweryfikuj odpowiedzi DNS:
Wskaźniki do referencji konfiguracji Telegrama
Główna referencja:-
channels.telegram.enabled: włącz/wyłącz uruchamianie kanału. -
channels.telegram.botToken: token bota (BotFather). -
channels.telegram.tokenFile: odczyt tokena ze ścieżki do zwykłego pliku. Linki symboliczne są odrzucane. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(domyślnie: pairing). -
channels.telegram.allowFrom: allowlista DM (numeryczne identyfikatory użytkowników Telegrama).allowlistwymaga co najmniej jednego identyfikatora nadawcy.openwymaga"*".openclaw doctor --fixmoże rozwiązać starsze wpisy@usernamedo identyfikatorów i może odzyskać wpisy allowlist z plików storage parowania w przepływach migracji allowlist. -
channels.telegram.actions.poll: włącz lub wyłącz tworzenie ankiet Telegrama (domyślnie: włączone; nadal wymagasendMessage). -
channels.telegram.defaultTo: domyślny cel Telegrama używany przez CLI--deliver, gdy nie podano jawnego--reply-to. -
channels.telegram.groupPolicy:open | allowlist | disabled(domyślnie: allowlist). -
channels.telegram.groupAllowFrom: allowlista nadawców grupowych (numeryczne identyfikatory użytkowników Telegrama).openclaw doctor --fixmoże rozwiązać starsze wpisy@usernamedo identyfikatorów. Wpisy nienumeryczne są ignorowane przy autoryzacji. Autoryzacja grupowa nie używa awaryjnego odwołania do storage parowania DM (2026.2.25+). -
Priorytet wielu kont:
- Gdy skonfigurowano dwa lub więcej identyfikatorów kont, ustaw
channels.telegram.defaultAccount(lub uwzględnijchannels.telegram.accounts.default), aby jawnie określić domyślny routing. - Jeśli nie ustawiono żadnej z tych wartości, OpenClaw awaryjnie używa pierwszego znormalizowanego identyfikatora konta, a
openclaw doctorwyświetla ostrzeżenie. channels.telegram.accounts.default.allowFromichannels.telegram.accounts.default.groupAllowFrommają zastosowanie tylko do kontadefault.- Nazwane konta dziedziczą
channels.telegram.allowFromichannels.telegram.groupAllowFrom, gdy wartości na poziomie konta nie są ustawione. - Nazwane konta nie dziedziczą
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Gdy skonfigurowano dwa lub więcej identyfikatorów kont, ustaw
-
channels.telegram.groups: domyślne ustawienia per grupa + allowlista (użyj"*"dla ustawień globalnych).channels.telegram.groups.<id>.groupPolicy: nadpisaniegroupPolicyper grupa (open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: domyślna blokada oparta na wzmiance.channels.telegram.groups.<id>.skills: filtr Skills (pominięcie = wszystkie Skills, puste = brak).channels.telegram.groups.<id>.allowFrom: nadpisanie allowlisty nadawców per grupa.channels.telegram.groups.<id>.systemPrompt: dodatkowy system prompt dla grupy.channels.telegram.groups.<id>.enabled: wyłącza grupę, gdy ma wartośćfalse.channels.telegram.groups.<id>.topics.<threadId>.*: nadpisania per temat (pola grupy +agentIdtylko dla tematów).channels.telegram.groups.<id>.topics.<threadId>.agentId: kieruje ten temat do konkretnego agenta (nadpisuje routing na poziomie grupy i powiązań).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: nadpisaniegroupPolicyper temat (open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: nadpisanie blokady wzmianki per temat. -
najwyższego poziomu
bindings[]ztype: "acp"i kanonicznym identyfikatorem tematuchatId:topic:topicIdwmatch.peer.id: pola trwałego powiązania tematu ACP (zobacz Agenci ACP). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: kieruje tematy DM do konkretnego agenta (to samo zachowanie co w przypadku tematów forum). -
channels.telegram.execApprovals.enabled: włącza Telegram jako klienta zatwierdzeń exec opartych na czacie dla tego konta. -
channels.telegram.execApprovals.approvers: identyfikatory użytkowników Telegrama, którym wolno zatwierdzać lub odrzucać żądania exec. Opcjonalne, gdychannels.telegram.allowFromlub bezpośredniechannels.telegram.defaultTojuż identyfikuje właściciela. -
channels.telegram.execApprovals.target:dm | channel | both(domyślnie:dm).channelibothzachowują źródłowy temat Telegrama, jeśli istnieje. -
channels.telegram.execApprovals.agentFilter: opcjonalny filtr identyfikatora agenta dla przekazywanych próśb o zatwierdzenie. -
channels.telegram.execApprovals.sessionFilter: opcjonalny filtr klucza sesji (podciąg lub regex) dla przekazywanych próśb o zatwierdzenie. -
channels.telegram.accounts.<account>.execApprovals: nadpisanie per konto dla routingu zatwierdzeń exec Telegrama i autoryzacji zatwierdzających. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(domyślnie: allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: nadpisanie per konto. -
channels.telegram.commands.nativeSkills: włącz/wyłącz natywne polecenia Skills Telegrama. -
channels.telegram.replyToMode:off | first | all(domyślnie:off). -
channels.telegram.textChunkLimit: rozmiar wychodzących fragmentów (znaki). -
channels.telegram.chunkMode:length(domyślnie) lubnewline, aby dzielić po pustych liniach (granice akapitów) przed dzieleniem według długości. -
channels.telegram.linkPreview: przełącznik podglądów linków dla wiadomości wychodzących (domyślnie: true). -
channels.telegram.streaming:off | partial | block | progress(podgląd transmisji na żywo; domyślnie:partial;progressmapuje się dopartial;blockto zgodność ze starszym trybem podglądu). Streaming podglądu Telegrama używa pojedynczej wiadomości podglądu, która jest edytowana w miejscu. -
channels.telegram.mediaMaxMb: limit mediów przychodzących/wychodzących Telegrama (MB, domyślnie: 100). -
channels.telegram.retry: polityka ponawiania dla pomocników wysyłania Telegrama (CLI/tools/actions) przy odzyskiwalnych błędach wychodzącego API (próby, minDelayMs, maxDelayMs, jitter). -
channels.telegram.network.autoSelectFamily: nadpisanie Node autoSelectFamily (true=włącz, false=wyłącz). Domyślnie włączone w Node 22+, a w WSL2 domyślnie wyłączone. -
channels.telegram.network.dnsResultOrder: nadpisanie kolejności wyników DNS (ipv4firstlubverbatim). Domyślnieipv4firstw Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: niebezpieczne opt-in dla zaufanych środowisk fake-IP lub transparent proxy, gdzie pobieranie mediów Telegrama rozwiązujeapi.telegram.orgdo prywatnych/wewnętrznych/specjalnego przeznaczenia adresów poza domyślnie dozwolonym zakresem benchmarkowym RFC 2544. -
channels.telegram.proxy: URL proxy dla wywołań Bot API (SOCKS/HTTP). -
channels.telegram.webhookUrl: włącza tryb webhooka (wymagachannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: sekret webhooka (wymagany, gdy ustawiono webhookUrl). -
channels.telegram.webhookPath: lokalna ścieżka webhooka (domyślnie/telegram-webhook). -
channels.telegram.webhookHost: host powiązania lokalnego webhooka (domyślnie127.0.0.1). -
channels.telegram.webhookPort: lokalny port powiązania webhooka (domyślnie8787). -
channels.telegram.actions.reactions: ogranicza reakcje narzędzi Telegrama. -
channels.telegram.actions.sendMessage: ogranicza wysyłanie wiadomości przez narzędzia Telegrama. -
channels.telegram.actions.deleteMessage: ogranicza usuwanie wiadomości przez narzędzia Telegrama. -
channels.telegram.actions.sticker: ogranicza akcje naklejek Telegrama — wysyłanie i wyszukiwanie (domyślnie: false). -
channels.telegram.reactionNotifications:off | own | all— kontroluje, które reakcje wyzwalają zdarzenia systemowe (domyślnie:own, jeśli nie ustawiono). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— kontroluje możliwości reakcji agenta (domyślnie:minimal, jeśli nie ustawiono). -
channels.telegram.errorPolicy:reply | silent— kontroluje zachowanie odpowiedzi na błędy (domyślnie:reply). Obsługiwane są nadpisania per konto/grupa/temat. -
channels.telegram.errorCooldownMs: minimalna liczba ms między odpowiedziami z błędami na tym samym czacie (domyślnie:60000). Zapobiega spamowi błędów podczas awarii. - Referencja konfiguracji - Telegram
- uruchamianie/uwierzytelnianie:
enabled,botToken,tokenFile,accounts.*(tokenFilemusi wskazywać zwykły plik; linki symboliczne są odrzucane) - kontrola dostępu:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*, najwyższego poziomubindings[](type: "acp") - zatwierdzenia exec:
execApprovals,accounts.*.execApprovals - polecenia/menu:
commands.native,commands.nativeSkills,customCommands - wątki/odpowiedzi:
replyToMode - streaming:
streaming(podgląd),blockStreaming - formatowanie/dostarczanie:
textChunkLimit,chunkMode,linkPreview,responsePrefix - media/sieć:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - akcje/możliwości:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - reakcje:
reactionNotifications,reactionLevel - błędy:
errorPolicy,errorCooldownMs - zapisy/historia:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit