Telegram (Bot API)
Статус: готово до продакшну для DM ботів + груп через grammY. Long polling — типовий режим; webhook-режим необов’язковий.Pairing
Усунення несправностей каналу
Конфігурація gateway
Швидке налаштування
Створіть токен бота в BotFather
@BotFather).Виконайте /newbot, дотримуйтеся підказок і збережіть токен.Налаштуйте токен і політику DM
TELEGRAM_BOT_TOKEN=... (лише для типового облікового запису).
Telegram не використовує openclaw channels login telegram; налаштуйте токен у config/env, а потім запустіть gateway.TELEGRAM_BOT_TOKEN застосовується лише до типового облікового запису.Налаштування на боці Telegram
Режим приватності та видимість у групах
Режим приватності та видимість у групах
- вимкніть режим приватності через
/setprivacy, або - зробіть бота адміністратором групи.
Дозволи групи
Дозволи групи
Корисні перемикачі BotFather
Корисні перемикачі BotFather
/setjoingroups, щоб дозволити/заборонити додавання до груп/setprivacyдля поведінки видимості в групах
Керування доступом і активація
- Політика DM
- Групова політика та списки дозволу
- Поведінка згадувань
channels.telegram.dmPolicy керує доступом до особистих повідомлень:pairing(типово)allowlist(потрібен щонайменше один ID відправника вallowFrom)open(потрібно, щобallowFromмістив"*")disabled
channels.telegram.allowFrom приймає числові ID користувачів Telegram. Префікси telegram: / tg: приймаються та нормалізуються.
dmPolicy: "allowlist" з порожнім allowFrom блокує всі DM і відхиляється перевіркою конфігурації.
Onboarding приймає введення @username і перетворює його на числові ID.
Якщо ви оновилися і ваш config містить записи allowlist у вигляді @username, виконайте openclaw doctor --fix, щоб перетворити їх (best-effort; потрібен токен Telegram bot).
Якщо ви раніше покладалися на файли allowlist зі сховища pairing, openclaw doctor --fix може відновити записи до channels.telegram.allowFrom у сценаріях allowlist (наприклад, коли dmPolicy: "allowlist" ще не має явних ID).Для bot, якими володіє одна особа, краще використовувати dmPolicy: "allowlist" з явними числовими ID в allowFrom, щоб політика доступу стабільно зберігалася в конфігурації (замість залежності від попередніх схвалень pairing).Поширене непорозуміння: схвалення pairing у DM не означає, що «цей відправник авторизований всюди».
Pairing надає доступ лише до DM. Авторизація відправника в групі, як і раніше, визначається явними allowlist у конфігурації.
Якщо ви хочете модель «я авторизований один раз, і працюють і DM, і команди в групі», додайте свій числовий Telegram user ID до channels.telegram.allowFrom.Як знайти свій Telegram user ID
Безпечніший спосіб (без стороннього бота):- Надішліть DM своєму боту.
- Виконайте
openclaw logs --follow. - Прочитайте
from.id.
@userinfobot або @getidsbot.Поведінка runtime
- Telegram належить процесу gateway.
- Маршрутизація детермінована: вхідні відповіді Telegram повертаються назад у Telegram (модель не вибирає канали).
- Вхідні повідомлення нормалізуються до спільного канального envelope з метаданими відповіді та placeholder медіа.
- Групові сесії ізольовані за ID групи. Для тем форуму додається
:topic:<threadId>, щоб ізолювати теми. - DM-повідомлення можуть містити
message_thread_id; OpenClaw маршрутизує їх із session key, що враховують thread, і зберігає ID thread для відповідей. - Long polling використовує grammY runner з послідовністю на рівні chat/per-thread. Загальна sink-конкурентність runner використовує
agents.defaults.maxConcurrent. - Telegram Bot API не підтримує підтвердження прочитання (
sendReadReceiptsне застосовується).
Довідник функцій
Попередній перегляд live stream (редагування повідомлень)
Попередній перегляд live stream (редагування повідомлень)
- прямі чати: повідомлення попереднього перегляду +
editMessageText - групи/теми: повідомлення попереднього перегляду +
editMessageText
channels.telegram.streamingмає значенняoff | partial | block | progress(типово:partial)progressу Telegram відображається якpartial(сумісність із міжканальним найменуванням)- застарілі значення
channels.telegram.streamModeі boolean-значенняstreamingавтоматично зіставляються
- DM: OpenClaw зберігає те саме повідомлення попереднього перегляду і виконує фінальне редагування на місці (без другого повідомлення)
- група/тема: OpenClaw зберігає те саме повідомлення попереднього перегляду і виконує фінальне редагування на місці (без другого повідомлення)
sendMessage + editMessageText.Потік reasoning лише для Telegram:/reasoning streamнадсилає reasoning у live preview під час генерації- фінальна відповідь надсилається без тексту reasoning
Форматування та резервний варіант HTML
Форматування та резервний варіант HTML
parse_mode: "HTML".- Текст у стилі Markdown рендериться у безпечний для Telegram HTML.
- Сирий HTML моделі екранується, щоб зменшити кількість помилок парсингу в Telegram.
- Якщо Telegram відхиляє розібраний HTML, OpenClaw повторює спробу як звичайний текст.
channels.telegram.linkPreview: false.Нативні команди та кастомні команди
Нативні команди та кастомні команди
setMyCommands.Типові значення нативних команд:commands.native: "auto"вмикає нативні команди для Telegram
- назви нормалізуються (знімається початковий
/, переводяться в нижній регістр) - допустимий шаблон:
a-z,0-9,_, довжина1..32 - кастомні команди не можуть перевизначати нативні команди
- конфлікти/дублікати пропускаються та логуються
- кастомні команди — це лише записи меню; вони не реалізують поведінку автоматично
- команди plugin/Skills можуть працювати при ручному введенні, навіть якщо не показані в меню Telegram
setMyCommands failedзBOT_COMMANDS_TOO_MUCHозначає, що меню Telegram усе ще переповнене після обрізання; зменште кількість команд plugin/Skills/кастомних або вимкнітьchannels.telegram.commands.native.setMyCommands failedз помилками network/fetch зазвичай означає, що заблоковано вихідний DNS/HTTPS доapi.telegram.org.
Команди pairing пристрою (device-pair plugin)
Коли встановлено plugin device-pair:/pairгенерує код налаштування- вставте код у застосунок iOS
/pair pendingпоказує запити, що очікують підтвердження (включно з role/scopes)- схваліть запит:
/pair approve <requestId>для явного схвалення/pair approve, коли є лише один запит, що очікує/pair approve latestдля найновішого
scopes: []; будь-який переданий operator token залишається обмеженим до operator.approvals, operator.read, operator.talk.secrets і operator.write. Перевірки bootstrap scope використовують префікси role, тому цей allowlist operator задовольняє лише запити operator; ролі, що не є operator, усе ще потребують scopes під власним префіксом ролі.Якщо пристрій повторює спробу зі зміненими деталями auth (наприклад role/scopes/public key), попередній запит, що очікує, замінюється, а новий запит використовує інший requestId. Перед схваленням повторно виконайте /pair pending.Докладніше: Pairing.Вбудовані кнопки
Вбудовані кнопки
offdmgroupallallowlist(типово)
capabilities: ["inlineButtons"] зіставляється з inlineButtons: "all".Приклад дії повідомлення:callback_data: <value>Дії повідомлень Telegram для агентів і автоматизації
Дії повідомлень Telegram для агентів і автоматизації
sendMessage(to,content, необов’язковоmediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,content)createForumTopic(chatId,name, необов’язковоiconColor,iconCustomEmojiId)
send, react, delete, edit, sticker, sticker-search, topic-create).Керування gating:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(типово: вимкнено)
edit і topic-create наразі типово ввімкнені й не мають окремих перемикачів channels.telegram.actions.*.
Надсилання runtime використовують активний знімок config/secrets (startup/reload), тому шляхи дій не виконують ad hoc повторного визначення SecretRef для кожного надсилання.Семантика видалення реакцій: /tools/reactionsТеги тредів відповідей
Теги тредів відповідей
[[reply_to_current]]відповідає на повідомлення, яке викликало дію[[reply_to:<id>]]відповідає на конкретний ID повідомлення Telegram
channels.telegram.replyToMode керує обробкою:off(типово)firstall
off вимикає неявний трединг відповідей. Явні теги [[reply_to_*]] усе одно враховуються.Теми форуму та поведінка thread
Теми форуму та поведінка thread
- до ключів сесії теми додається
:topic:<threadId> - відповіді й індикатор набору спрямовуються в thread теми
- шлях конфігурації теми:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- надсилання повідомлень пропускає
message_thread_id(Telegram відхиляєsendMessage(...thread_id=1)) - дії набору тексту все одно включають
message_thread_id
requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy).
agentId діє лише для теми й не успадковується з типових значень групи.Маршрутизація агента для окремої теми: кожна тема може маршрутизуватися до іншого агента, якщо задати agentId у конфігурації теми. Це дає кожній темі власний ізольований workspace, memory і session. Приклад:agent:zu:telegram:group:-1001234567890:topic:3Постійна прив’язка ACP до теми: теми форуму можуть закріплювати сесії harness ACP через типізовані прив’язки ACP верхнього рівня:bindings[]зtype: "acp"іmatch.channel: "telegram"
/acp spawn <agent> --thread here|autoможе прив’язати поточну тему Telegram до нової сесії ACP.- Подальші повідомлення в темі маршрутизуються безпосередньо до прив’язаної сесії ACP (без потреби в
/acp steer). - Після успішної прив’язки OpenClaw закріплює в темі повідомлення-підтвердження запуску.
- Потрібно
channels.telegram.threadBindings.spawnAcpSessions=true.
MessageThreadIdIsForum
- приватні чати з
message_thread_idзберігають маршрутизацію DM, але використовують session key і цілі відповіді з урахуванням thread.
Аудіо, відео та стикери
Аудіо, відео та стикери
Аудіоповідомлення
Telegram розрізняє voice note та аудіофайли.- типово: поведінка аудіофайлу
- тег
[[audio_as_voice]]у відповіді агента примусово надсилає як voice note
Відеоповідомлення
Telegram розрізняє відеофайли та video note.Приклад дії повідомлення:Стикери
Обробка вхідних стикерів:- статичний WEBP: завантажується й обробляється (placeholder
<media:sticker>) - анімований TGS: пропускається
- відео WEBM: пропускається
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
Сповіщення про реакції
Сповіщення про реакції
message_reaction (окремо від payload повідомлень).Коли їх увімкнено, OpenClaw ставить у чергу системні події на кшталт:Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(типово:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(типово:minimal)
ownозначає лише реакції користувачів на повідомлення, надіслані ботом (best-effort через кеш надісланих повідомлень).- Події реакцій усе одно враховують механізми доступу Telegram (
dmPolicy,allowFrom,groupPolicy,groupAllowFrom); неавторизовані відправники відкидаються. - Telegram не надає ID thread в оновленнях реакцій.
- у нефорумних групах маршрут іде до сесії групового чату
- у форумних групах маршрут іде до сесії загальної теми групи (
:topic:1), а не до точного початкового thread
allowed_updates для polling/webhook автоматично включають message_reaction.Реакції підтвердження
Реакції підтвердження
ackReaction надсилає емодзі-підтвердження, поки OpenClaw обробляє вхідне повідомлення.Порядок визначення:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- резервне значення з emoji identity агента (
agents.list[].identity.emoji, інакше"👀")
- Telegram очікує emoji Unicode (наприклад,
"👀"). - Використовуйте
"", щоб вимкнути реакцію для каналу або облікового запису.
Запис конфігурації з подій і команд Telegram
Запис конфігурації з подій і команд Telegram
configWrites !== false).Записи, ініційовані Telegram, включають:- події міграції груп (
migrate_to_chat_id) для оновленняchannels.telegram.groups /config setі/config unset(потрібне ввімкнення команд)
Long polling проти webhook
Long polling проти webhook
- задайте
channels.telegram.webhookUrl - задайте
channels.telegram.webhookSecret(обов’язково, коли задано webhook URL) - необов’язково
channels.telegram.webhookPath(типово/telegram-webhook) - необов’язково
channels.telegram.webhookHost(типово127.0.0.1) - необов’язково
channels.telegram.webhookPort(типово8787)
127.0.0.1:8787.Якщо ваш публічний ендпоїнт відрізняється, поставте перед ним reverse proxy і вкажіть у webhookUrl публічний URL.
Задайте webhookHost (наприклад, 0.0.0.0), коли свідомо потребуєте зовнішнього ingress.Ліміти, повторні спроби та цілі CLI
Ліміти, повторні спроби та цілі CLI
- Типове значення
channels.telegram.textChunkLimit— 4000. channels.telegram.chunkMode="newline"надає перевагу межам абзаців (порожнім рядкам) перед розбиттям за довжиною.channels.telegram.mediaMaxMb(типово 100) обмежує розмір вхідних і вихідних медіа Telegram.channels.telegram.timeoutSecondsперевизначає timeout клієнта Telegram API (якщо не задано, використовується типове значення grammY).- історія групового контексту використовує
channels.telegram.historyLimitабоmessages.groupChat.historyLimit(типово 50);0вимикає. - додатковий контекст reply/quote/forward наразі передається як отриманий.
- Telegram allowlist передусім обмежують, хто може активувати агента, а не є повною межею редагування додаткового контексту.
- керування історією DM:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- конфігурація
channels.telegram.retryзастосовується до допоміжних функцій надсилання Telegram (CLI/tools/actions) для відновлюваних вихідних помилок API.
openclaw message poll і підтримують теми форуму:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idдля тем форуму (або використовуйте ціль:topic:)
--buttonsдля вбудованих клавіатур, коли це дозволяєchannels.telegram.capabilities.inlineButtons--force-document, щоб надсилати вихідні зображення та GIF як документи замість стиснених фото або завантажень анімованих медіа
channels.telegram.actions.sendMessage=falseвимикає вихідні повідомлення Telegram, включно з pollschannels.telegram.actions.poll=falseвимикає створення Telegram poll, залишаючи звичайні надсилання ввімкненими
Погодження exec у Telegram
Погодження exec у Telegram
channels.telegram.execApprovals.enabledchannels.telegram.execApprovals.approvers(необов’язково; використовує резервне значення числових ID власників, визначених ізallowFromі прямогоdefaultTo, коли це можливо)channels.telegram.execApprovals.target(dm|channel|both, типово:dm)agentFilter,sessionFilter
enabled не задано або має значення "auto" і можна визначити щонайменше одного погоджувача — або з execApprovals.approvers, або з числової конфігурації власника облікового запису (allowFrom і DM defaultTo). Задайте enabled: false, щоб явно вимкнути Telegram як нативний клієнт погодження. В інших випадках запити на погодження повертаються до інших налаштованих маршрутів погодження або до резервної політики погодження exec.Telegram також відображає спільні кнопки погодження, які використовують інші чат-канали. Нативний адаптер Telegram переважно додає маршрутизацію в DM погоджувачів, fanout у канал/тему та підказки набору тексту перед доставкою.
Коли ці кнопки присутні, вони є основним UX погодження; OpenClaw
має включати ручну команду /approve лише тоді, коли результат інструмента каже,
що погодження в чаті недоступні або ручне погодження — єдиний шлях.Правила доставки:target: "dm"надсилає запити на погодження лише в DM визначеним погоджувачамtarget: "channel"надсилає запит назад у початковий чат/тему Telegramtarget: "both"надсилає в DM погоджувачів і в початковий чат/тему
/approve і не можуть використовувати кнопки погодження Telegram.Поведінка визначення погодження:- ID з префіксом
plugin:завжди визначаються через погодження plugin. - Інші ID спочатку пробують
exec.approval.resolve. - Якщо Telegram також авторизовано для погоджень plugin і gateway повідомляє,
що погодження exec невідоме/прострочене, Telegram один раз повторює спробу через
plugin.approval.resolve. - Справжні відмови/помилки погодження exec не переходять мовчки до визначення погодження plugin.
channel або both лише в довірених групах/темах. Коли запит потрапляє в тему форуму, OpenClaw зберігає тему як для запиту погодження, так і для дій після погодження. Погодження exec типово спливають через 30 хвилин.Вбудовані кнопки погодження також залежать від того, чи дозволяє channels.telegram.capabilities.inlineButtons цільову поверхню (dm, group або all).Пов’язана документація: Exec approvalsКерування відповідями на помилки
Коли агент стикається з помилкою доставки або провайдера, Telegram може або відповісти текстом помилки, або приховати її. Цю поведінку контролюють два ключі конфігурації:| Ключ | Значення | Типово | Опис |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply надсилає в чат дружнє повідомлення про помилку. silent повністю пригнічує відповіді з помилками. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Мінімальний час між відповідями з помилками в одному чаті. Запобігає спаму помилками під час збоїв. |
Усунення несправностей
Бот не відповідає на повідомлення групи без згадувань
Бот не відповідає на повідомлення групи без згадувань
- Якщо
requireMention=false, режим приватності Telegram має дозволяти повну видимість.- BotFather:
/setprivacy-> Disable - потім видаліть бота з групи й додайте знову
- BotFather:
openclaw channels statusпопереджає, коли конфігурація очікує повідомлення групи без згадувань.openclaw channels status --probeможе перевіряти явні числові ID груп; wildcard"*"не можна перевірити на членство.- швидкий тест сесії:
/activation always.
Бот взагалі не бачить повідомлень групи
Бот взагалі не бачить повідомлень групи
- коли існує
channels.telegram.groups, група має бути вказана там (або має бути"*") - перевірте, що бот є учасником групи
- перегляньте логи:
openclaw logs --followдля причин пропуску
Команди працюють частково або взагалі не працюють
Команди працюють частково або взагалі не працюють
- авторизуйте свою ідентичність відправника (pairing та/або числовий
allowFrom) - авторизація команд застосовується навіть тоді, коли групова політика має значення
open setMyCommands failedзBOT_COMMANDS_TOO_MUCHозначає, що нативне меню має забагато записів; зменште кількість команд plugin/Skills/кастомних або вимкніть нативні менюsetMyCommands failedз помилками network/fetch зазвичай вказує на проблеми досяжності DNS/HTTPS доapi.telegram.org
Нестабільність polling або мережі
Нестабільність polling або мережі
- Node 22+ + кастомний fetch/proxy можуть спричиняти негайне переривання, якщо типи AbortSignal не збігаються.
- На деяких хостах
api.telegram.orgспочатку визначається в IPv6; зламаний вихідний IPv6 може спричиняти періодичні збої Telegram API. - Якщо логи містять
TypeError: fetch failedабоNetwork request for 'getUpdates' failed!, OpenClaw тепер повторює їх як відновлювані мережеві помилки. - На VPS-хостах з нестабільним прямим egress/TLS маршрутизуйте виклики Telegram API через
channels.telegram.proxy:
- Node 22+ типово використовує
autoSelectFamily=true(окрім WSL2) іdnsResultOrder=ipv4first. - Якщо ваш хост — WSL2 або явно краще працює лише з IPv4, примусово задайте вибір family:
- Відповіді з benchmark-діапазону RFC 2544 (
198.18.0.0/15) уже типово дозволені для завантажень медіа Telegram. Якщо довірений fake-IP або transparent proxy переписуєapi.telegram.orgна якусь іншу приватну/внутрішню/special-use адресу під час завантаження медіа, ви можете явно ввімкнути цей обхід лише для Telegram:
- Те саме явне ввімкнення доступне для окремого облікового запису за шляхом
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - Якщо ваш proxy визначає медіахости Telegram у
198.18.x.x, спочатку залиште небезпечний прапорець вимкненим. Telegram media уже типово дозволяє benchmark-діапазон RFC 2544.
- Тимчасові перевизначення через змінні середовища:
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Перевірка DNS-відповідей:
Вказівники на довідник конфігурації Telegram
Основний довідник:-
channels.telegram.enabled: увімкнення/вимкнення запуску каналу. -
channels.telegram.botToken: токен бота (BotFather). -
channels.telegram.tokenFile: читання токена зі звичайного шляху до файлу. Символічні посилання відхиляються. -
channels.telegram.dmPolicy:pairing | allowlist | open | disabled(типово: pairing). -
channels.telegram.allowFrom: allowlist DM (числові ID користувачів Telegram). Дляallowlistпотрібен щонайменше один ID відправника. Дляopenпотрібен"*".openclaw doctor --fixможе перетворити застарілі записи@usernameна ID і може відновити записи allowlist із файлів pairing-store у сценаріях міграції allowlist. -
channels.telegram.actions.poll: увімкнення або вимкнення створення Telegram poll (типово: увімкнено; усе одно потребуєsendMessage). -
channels.telegram.defaultTo: типова ціль Telegram, яку використовує CLI--deliver, коли не задано явний--reply-to. -
channels.telegram.groupPolicy:open | allowlist | disabled(типово: allowlist). -
channels.telegram.groupAllowFrom: allowlist відправників у групах (числові ID користувачів Telegram).openclaw doctor --fixможе перетворити застарілі записи@usernameна ID. Нечислові записи ігноруються під час авторизації. Групова авторизація не використовує резервне значення зі сховища pairing для DM (2026.2.25+). -
Пріоритет для кількох облікових записів:
- Коли налаштовано два або більше account ID, задайте
channels.telegram.defaultAccount(або включітьchannels.telegram.accounts.default), щоб явно визначити типову маршрутизацію. - Якщо не задано жодного з них, OpenClaw використовує резервне значення першого нормалізованого account ID, а
openclaw doctorвидає попередження. channels.telegram.accounts.default.allowFromіchannels.telegram.accounts.default.groupAllowFromзастосовуються лише до облікового записуdefault.- Іменовані облікові записи успадковують
channels.telegram.allowFromіchannels.telegram.groupAllowFrom, коли значення на рівні облікового запису не задані. - Іменовані облікові записи не успадковують
channels.telegram.accounts.default.allowFrom/groupAllowFrom.
- Коли налаштовано два або більше account ID, задайте
-
channels.telegram.groups: типові значення для груп + allowlist (використовуйте"*"для глобальних типових значень).channels.telegram.groups.<id>.groupPolicy: перевизначення groupPolicy для окремої групи (open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: типове gating згадувань.channels.telegram.groups.<id>.skills: фільтр skill (omit = усі Skills, empty = жодного).channels.telegram.groups.<id>.allowFrom: перевизначення allowlist відправників для окремої групи.channels.telegram.groups.<id>.systemPrompt: додатковий system prompt для групи.channels.telegram.groups.<id>.enabled: вимикає групу, коли має значенняfalse.channels.telegram.groups.<id>.topics.<threadId>.*: перевизначення для окремої теми (поля групи +agentId, що діє лише для теми).channels.telegram.groups.<id>.topics.<threadId>.agentId: маршрутизує цю тему до конкретного агента (перевизначає маршрутизацію на рівні групи й через binding).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: перевизначення groupPolicy для окремої теми (open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: перевизначення gating згадувань для окремої теми. -
bindings[]верхнього рівня зtype: "acp"і канонічним ID темиchatId:topic:topicIdуmatch.peer.id: поля постійної прив’язки ACP до теми (див. ACP Agents). -
channels.telegram.direct.<id>.topics.<threadId>.agentId: маршрутизує теми DM до конкретного агента (та сама поведінка, що й для тем форуму). -
channels.telegram.execApprovals.enabled: увімкнення Telegram як клієнта погодження exec через чат для цього облікового запису. -
channels.telegram.execApprovals.approvers: ID користувачів Telegram, яким дозволено схвалювати або відхиляти запити exec. Необов’язково, якщоchannels.telegram.allowFromабо прямийchannels.telegram.defaultToуже ідентифікує власника. -
channels.telegram.execApprovals.target:dm | channel | both(типово:dm).channelіbothзберігають початкову тему Telegram, якщо вона є. -
channels.telegram.execApprovals.agentFilter: необов’язковий фільтр ID агента для пересланих запитів на погодження. -
channels.telegram.execApprovals.sessionFilter: необов’язковий фільтр ключа сесії (substring або regex) для пересланих запитів на погодження. -
channels.telegram.accounts.<account>.execApprovals: перевизначення на рівні облікового запису для маршрутизації погодження exec у Telegram та авторизації погоджувачів. -
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(типово: allowlist). -
channels.telegram.accounts.<account>.capabilities.inlineButtons: перевизначення на рівні облікового запису. -
channels.telegram.commands.nativeSkills: увімкнення/вимкнення нативних команд Skills у Telegram. -
channels.telegram.replyToMode:off | first | all(типово:off). -
channels.telegram.textChunkLimit: розмір вихідного chunk (символи). -
channels.telegram.chunkMode:length(типово) абоnewline, щоб розбивати за порожніми рядками (межами абзаців) перед розбиттям за довжиною. -
channels.telegram.linkPreview: перемикач попереднього перегляду посилань для вихідних повідомлень (типово: true). -
channels.telegram.streaming:off | partial | block | progress(live preview stream; типово:partial;progressзіставляється зpartial;block— сумісність із застарілим режимом preview). Telegram preview streaming використовує одне повідомлення попереднього перегляду, яке редагується на місці. -
channels.telegram.mediaMaxMb: ліміт вхідних/вихідних медіа Telegram (МБ, типово: 100). -
channels.telegram.retry: політика повторних спроб для допоміжних функцій надсилання Telegram (CLI/tools/actions) при відновлюваних вихідних помилках API (attempts, minDelayMs, maxDelayMs, jitter). -
channels.telegram.network.autoSelectFamily: перевизначення Node autoSelectFamily (true=увімкнути, false=вимкнути). Типово ввімкнено на Node 22+, а у WSL2 типово вимкнено. -
channels.telegram.network.dnsResultOrder: перевизначення порядку результатів DNS (ipv4firstабоverbatim). Типовоipv4firstна Node 22+. -
channels.telegram.network.dangerouslyAllowPrivateNetwork: небезпечне явне ввімкнення для довірених середовищ fake-IP або transparent proxy, де завантаження медіа Telegram визначаєapi.telegram.orgу приватні/внутрішні/special-use адреси поза типовим дозволеним benchmark-діапазоном RFC 2544. -
channels.telegram.proxy: URL proxy для викликів Bot API (SOCKS/HTTP). -
channels.telegram.webhookUrl: увімкнення режиму webhook (потрібенchannels.telegram.webhookSecret). -
channels.telegram.webhookSecret: секрет webhook (обов’язковий, коли задано webhookUrl). -
channels.telegram.webhookPath: локальний шлях webhook (типово/telegram-webhook). -
channels.telegram.webhookHost: локальний хост прив’язки webhook (типово127.0.0.1). -
channels.telegram.webhookPort: локальний порт прив’язки webhook (типово8787). -
channels.telegram.actions.reactions: gating реакцій інструментів Telegram. -
channels.telegram.actions.sendMessage: gating надсилання повідомлень інструментами Telegram. -
channels.telegram.actions.deleteMessage: gating видалення повідомлень інструментами Telegram. -
channels.telegram.actions.sticker: gating дій зі стикерами Telegram — надсилання та пошук (типово: false). -
channels.telegram.reactionNotifications:off | own | all— керує, які реакції запускають системні події (типово:own, якщо не задано). -
channels.telegram.reactionLevel:off | ack | minimal | extensive— керує можливістю реакцій агента (типово:minimal, якщо не задано). -
channels.telegram.errorPolicy:reply | silent— керує поведінкою відповіді на помилки (типово:reply). Підтримуються перевизначення для облікового запису/групи/теми. -
channels.telegram.errorCooldownMs: мінімальна кількість мс між відповідями з помилками в одному чаті (типово:60000). Запобігає спаму помилками під час збоїв. - Довідник конфігурації - Telegram
- startup/auth:
enabled,botToken,tokenFile,accounts.*(tokenFileмає вказувати на звичайний файл; символічні посилання відхиляються) - керування доступом:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*,bindings[]верхнього рівня (type: "acp") - погодження exec:
execApprovals,accounts.*.execApprovals - команди/меню:
commands.native,commands.nativeSkills,customCommands - thread/відповіді:
replyToMode - streaming:
streaming(preview),blockStreaming - форматування/доставка:
textChunkLimit,chunkMode,linkPreview,responsePrefix - медіа/мережа:
mediaMaxMb,timeoutSeconds,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - дії/можливості:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - реакції:
reactionNotifications,reactionLevel - помилки:
errorPolicy,errorCooldownMs - записи/історія:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit