Telegram (Bot API)
Статус: готовий до продакшену для DM бота + груп через grammY. Long polling — режим за замовчуванням; режим Webhook — необов’язковий.Підключення
Усунення несправностей каналу
Конфігурація 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
- Політика груп і allowlist
- Поведінка згадування
channels.telegram.dmPolicy керує доступом до прямих повідомлень:pairing(за замовчуванням)allowlist(потрібен принаймні один ID відправника вallowFrom)open(потрібно, щобallowFromмістив"*")disabled
channels.telegram.allowFrom приймає числові ID користувачів Telegram. Префікси telegram: / tg: приймаються та нормалізуються.
dmPolicy: "allowlist" з порожнім allowFrom блокує всі DM і відхиляється валідацією config.
Під час налаштування запитуються лише числові ID користувачів.
Якщо ви оновилися і ваша config містить записи allowlist у форматі @username, виконайте openclaw doctor --fix, щоб перетворити їх (best-effort; потрібен токен Telegram-бота).
Якщо ви раніше покладалися на файли allowlist зі сховища підключень, openclaw doctor --fix може відновити записи в channels.telegram.allowFrom для сценаріїв allowlist (наприклад, коли dmPolicy: "allowlist" ще не має явних ID).Для ботів з одним власником рекомендується dmPolicy: "allowlist" з явними числовими ID у allowFrom, щоб політика доступу стабільно зберігалася в config (замість залежності від попередніх підтверджень підключення).Поширена плутанина: підтвердження підключення для DM не означає, що «цей відправник авторизований усюди».
Підключення надає доступ лише до DM. Авторизація відправників у групах, як і раніше, визначається явними allowlist у config.
Якщо ви хочете модель «я один раз авторизований, і працюють і DM, і команди в групах», додайте свій числовий ID користувача Telegram до channels.telegram.allowFrom.Як знайти свій ID користувача Telegram
Безпечніший спосіб (без стороннього бота):- Надішліть DM своєму боту.
- Виконайте
openclaw logs --follow. - Прочитайте
from.id.
@userinfobot або @getidsbot.Поведінка runtime
- Telegram належить процесу gateway.
- Маршрутизація детермінована: вхідні відповіді Telegram повертаються в Telegram (модель не вибирає канали).
- Вхідні повідомлення нормалізуються у спільний конверт каналу з метаданими відповіді та заповнювачами для медіа.
- Групові сесії ізольовані за ID групи. Теми форуму додають
:topic:<threadId>, щоб теми залишалися ізольованими. - DM-повідомлення можуть містити
message_thread_id; OpenClaw маршрутизує їх за thread-aware ключами сесії та зберігає ID треду для відповідей. - Long polling використовує runner grammY із послідовністю на рівні чату/треду. Загальна конкурентність sink runner-а використовує
agents.defaults.maxConcurrent. - Перезапуски watchdog для long polling спрацьовують після 120 секунд без завершеної перевірки живості
getUpdatesза замовчуванням. Збільшуйтеchannels.telegram.pollingStallThresholdMsлише якщо у вашому розгортанні все ще трапляються хибні перезапуски через зависання polling під час довготривалої роботи. Значення задається в мілісекундах і може бути від30000до600000; підтримуються перевизначення для окремих облікових записів. - Telegram Bot API не підтримує квитанції про прочитання (
sendReadReceiptsне застосовується).
Довідник можливостей
Попередній перегляд live stream (редагування повідомлень)
Попередній перегляд live stream (редагування повідомлень)
- прямі чати: повідомлення попереднього перегляду +
editMessageText - групи/теми: повідомлення попереднього перегляду +
editMessageText
channels.telegram.streamingмає бутиoff | partial | block | progress(за замовчуванням:partial)progressу Telegram відображається якpartial(сумісність із міжканальним найменуванням)streaming.preview.toolProgressкерує тим, чи оновлення інструментів/прогресу повторно використовують те саме відредаговане повідомлення попереднього перегляду (за замовчуванням:true). Установітьfalse, щоб зберігати окремі повідомлення інструментів/прогресу.- застарілі
channels.telegram.streamModeі булеві значення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заблокований.
Команди підключення пристроїв (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, тому цей operator allowlist задовольняє лише operator-запити; для не-operator ролей усе ще потрібні scopes під власним префіксом ролі.Якщо пристрій повторює спробу зі зміненими даними auth (наприклад, role/scopes/public key), попередній запит, що очікує на розгляд, заміщується, а новий запит використовує інший requestId. Перед підтвердженням знову виконайте /pair pending.Докладніше: Підключення.Вбудовані кнопки
Вбудовані кнопки
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).Керування доступом:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(за замовчуванням: вимкнено)
edit і topic-create зараз увімкнені за замовчуванням і не мають окремих перемикачів channels.telegram.actions.*.
Надсилання в runtime використовує активний snapshot 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_*]] усе одно враховуються.Теми форуму та поведінка тредів
Теми форуму та поведінка тредів
- ключі сесій тем додають
:topic:<threadId> - відповіді й набір тексту націлюються на тред теми
- шлях config теми:
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 у config теми. Це дає кожній темі власний ізольований workspace, пам’ять і сесію. Приклад: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-маршрутизацію, але використовують thread-aware ключі сесій/цілі відповідей.
Аудіо, відео та стікери
Аудіо, відео та стікери
Аудіоповідомлення
Telegram розрізняє голосові повідомлення та аудіофайли.- за замовчуванням: поведінка аудіофайлу
- тег
[[audio_as_voice]]у відповіді агента примусово надсилає як голосове повідомлення
Відеоповідомлення
Telegram розрізняє відеофайли та video note.Приклад дії повідомлення:Стікери
Обробка вхідних стікерів:- статичний WEBP: завантажується та обробляється (заповнювач
<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 тредів в оновленнях реакцій.
- нефорумні групи маршрутизуються до сесії групового чату
- форумні групи маршрутизуються до сесії загальної теми групи (
:topic:1), а не до точної початкової теми
allowed_updates для polling/webhook автоматично включають message_reaction.Реакції підтвердження
Реакції підтвердження
ackReaction надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.Порядок визначення:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- резервне emoji з identity агента (
agents.list[].identity.emoji, інакше ”👀”)
- Telegram очікує emoji Unicode (наприклад, ”👀”).
- Використовуйте
"", щоб вимкнути реакцію для каналу або облікового запису.
Записи config з подій і команд Telegram
Записи config з подій і команд Telegram
configWrites !== false).Записи, ініційовані Telegram, включають:- події міграції груп (
migrate_to_chat_id) для оновленняchannels.telegram.groups /config setі/config unset(потрібне ввімкнення команд)
Long polling vs webhook
Long polling vs webhook
- задайте
channels.telegram.webhookUrl - задайте
channels.telegram.webhookSecret(обов’язково, коли задано URL webhook) - необов’язково
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), коли вам свідомо потрібен зовнішній вхідний доступ.Ліміти, повторні спроби та цілі CLI
Ліміти, повторні спроби та цілі CLI
channels.telegram.textChunkLimitза замовчуванням має значення 4000.channels.telegram.chunkMode="newline"надає перевагу межам абзаців (порожнім рядкам) перед поділом за довжиною.channels.telegram.mediaMaxMb(за замовчуванням 100) обмежує розмір вхідних і вихідних медіафайлів Telegram.channels.telegram.timeoutSecondsперевизначає тайм-аут клієнта Telegram API (якщо не задано, застосовується значення grammY за замовчуванням).channels.telegram.pollingStallThresholdMsза замовчуванням дорівнює120000; налаштовуйте в межах30000–600000лише для хибнопозитивних перезапусків через зависання polling.- історія контексту групи використовує
channels.telegram.historyLimitабоmessages.groupChat.historyLimit(за замовчуванням 50);0вимикає її. - додатковий контекст reply/quote/forward наразі передається як отримано.
- allowlist Telegram насамперед обмежують, хто може викликати агента, а не є повноцінною межею редагування додаткового контексту.
- елементи керування історією DM:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- config
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, включно з опитуваннямиchannels.telegram.actions.poll=falseвимикає створення опитувань Telegram, залишаючи звичайне надсилання увімкненим
Підтвердження 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, або з числової config власника облікового запису (allowFrom і 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Параметри відповіді на помилки
Коли агент стикається з помилкою доставки або провайдера, Telegram може або відповісти текстом помилки, або приховати його. Цю поведінку контролюють два ключі config:| Key | Values | Default | Description |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | reply надсилає дружнє повідомлення про помилку в чат. silent повністю пригнічує відповіді про помилки. |
channels.telegram.errorCooldownMs | number (ms) | 60000 | Мінімальний час між відповідями про помилки в той самий чат. Запобігає спаму помилками під час збоїв. |
Усунення несправностей
Бот не відповідає на повідомлення в групі без згадування
Бот не відповідає на повідомлення в групі без згадування
- Якщо
requireMention=false, режим приватності Telegram має дозволяти повну видимість.- BotFather:
/setprivacy-> Disable - потім видаліть і знову додайте бота в групу
- BotFather:
openclaw channels statusпопереджає, коли config очікує повідомлення групи без згадування.openclaw channels status --probeможе перевіряти явні числові ID груп; wildcard"*"не можна перевірити на членство.- швидкий тест сесії:
/activation always.
Бот взагалі не бачить повідомлень групи
Бот взагалі не бачить повідомлень групи
- коли існує
channels.telegram.groups, група має бути вказана (або має бути"*") - перевірте членство бота в групі
- перегляньте журнали:
openclaw logs --followдля причин пропуску
Команди працюють частково або не працюють зовсім
Команди працюють частково або не працюють зовсім
- авторизуйте свою ідентичність відправника (підключення та/або числовий
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 тепер повторює їх як відновлювані помилки мережі. - Якщо журнали містять
Polling stall detected, OpenClaw перезапускає polling і перебудовує транспорт Telegram після 120 секунд без завершеної перевірки живості long-poll за замовчуванням. - Збільшуйте
channels.telegram.pollingStallThresholdMsлише тоді, коли довготривалі викликиgetUpdatesє здоровими, але ваш хост усе одно повідомляє про хибнопозитивні перезапуски через зависання polling. Стійкі зависання зазвичай вказують на проблеми з proxy, DNS, IPv6 або TLS egress між хостом іapi.telegram.org. - На 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 уже дозволяє діапазон benchmark RFC 2544 за замовчуванням.
- Перевизначення через env (тимчасово):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- Перевірка DNS-відповідей:
Вказівники на довідник config 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 (за замовчуванням: увімкнено; усе ще потребує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. Нечислові записи ігноруються під час auth. Авторизація груп не використовує резервний варіант через DM pairing-store (2026.2.25+). -
Пріоритет для кількох облікових записів:
- Коли налаштовано два або більше ID облікових записів, задайте
channels.telegram.defaultAccount(або включітьchannels.telegram.accounts.default), щоб явно визначити маршрутизацію за замовчуванням. - Якщо не задано жодного з них, OpenClaw використовує перший нормалізований 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.
- Коли налаштовано два або більше ID облікових записів, задайте
-
channels.telegram.groups: значення за замовчуванням для окремих груп + allowlist (використовуйте"*"для глобальних значень за замовчуванням).channels.telegram.groups.<id>.groupPolicy: перевизначення groupPolicy для окремої групи (open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: значення за замовчуванням для обмеження через згадування.channels.telegram.groups.<id>.skills: фільтр Skills (пропущено = усі Skills, порожньо = жодного).channels.telegram.groups.<id>.allowFrom: перевизначення allowlist відправників для окремої групи.channels.telegram.groups.<id>.systemPrompt: додатковий системний запит для групи.channels.telegram.groups.<id>.enabled: вимкнути групу, колиfalse.channels.telegram.groups.<id>.topics.<threadId>.*: перевизначення для окремої теми (поля групи +agentId, доступний лише для теми).channels.telegram.groups.<id>.topics.<threadId>.agentId: маршрутизувати цю тему до конкретного агента (перевизначає маршрутизацію на рівні групи та bindings).
-
channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: перевизначення groupPolicy для окремої теми (open | allowlist | disabled). -
channels.telegram.groups.<id>.topics.<threadId>.requireMention: перевизначення обмеження через згадування для окремої теми. -
верхньорівневий
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: необов’язковий фільтр ключа сесії (підрядок або 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: розмір вихідного фрагмента (символи). -
channels.telegram.chunkMode:length(за замовчуванням) абоnewlineдля поділу за порожніми рядками (межами абзаців) перед поділом за довжиною. -
channels.telegram.linkPreview: перемикач попереднього перегляду посилань для вихідних повідомлень (за замовчуванням: true). -
channels.telegram.streaming:off | partial | block | progress(попередній перегляд live stream; за замовчуванням:partial;progressвідображається якpartial;block— сумісність із застарілим режимом preview). Потоковий preview у Telegram використовує одне повідомлення попереднього перегляду, яке редагується на місці. -
channels.telegram.streaming.preview.toolProgress: повторно використовувати повідомлення live preview для оновлень інструментів/прогресу, коли preview streaming активний (за замовчуванням:true). Установітьfalse, щоб зберігати окремі повідомлення інструментів/прогресу. -
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: керування доступом до реакцій інструментів Telegram. -
channels.telegram.actions.sendMessage: керування доступом до надсилання повідомлень інструментами Telegram. -
channels.telegram.actions.deleteMessage: керування доступом до видалення повідомлень інструментами Telegram. -
channels.telegram.actions.sticker: керування доступом до дій зі стікерами 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 - треди/відповіді:
replyToMode - streaming:
streaming(preview),streaming.preview.toolProgress,blockStreaming - форматування/доставка:
textChunkLimit,chunkMode,linkPreview,responsePrefix - медіа/мережа:
mediaMaxMb,timeoutSeconds,pollingStallThresholdMs,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