From d8d80a115afdefcada0dc0b86027fa116f7e111b Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 1 May 2026 11:55:57 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/channels/discord.md | 492 ++++++++++++++--------------- docs/uk/gateway/config-channels.md | 345 ++++++++++---------- 2 files changed, 416 insertions(+), 421 deletions(-) diff --git a/docs/uk/channels/discord.md b/docs/uk/channels/discord.md index 9362217b6..99372d493 100644 --- a/docs/uk/channels/discord.md +++ b/docs/uk/channels/discord.md @@ -1,49 +1,49 @@ --- read_when: - Робота над функціями каналу Discord -summary: Стан підтримки бота Discord, можливості та конфігурація +summary: Стан підтримки, можливості та конфігурація бота Discord title: Discord x-i18n: - generated_at: "2026-05-01T11:01:48Z" + generated_at: "2026-05-01T11:53:18Z" model: gpt-5.5 provider: openai - source_hash: 43fdd86a45a815cfef7ab71746c9ca5966f76df3c9da4f18204bf5d0f59f6352 + source_hash: d0b37006f5efaa36223f0b7faa2557f5d3f6cc1805625b39bc2dbc9430eaea95 source_path: channels/discord.md workflow: 16 --- -Готово для приватних повідомлень і каналів серверів через офіційний Discord Gateway. +Готово для особистих повідомлень і серверних каналів через офіційний Discord Gateway. - Приватні повідомлення Discord типово відкривають режим сполучення. + Особисті повідомлення Discord за замовчуванням працюють у режимі сполучення. - + Нативна поведінка команд і каталог команд. - + Міжканальна діагностика та процес відновлення. ## Швидке налаштування -Вам потрібно створити нову програму з ботом, додати бота на свій сервер і сполучити його з OpenClaw. Рекомендуємо додати бота на власний приватний сервер. Якщо у вас його ще немає, [спочатку створіть його](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (виберіть **Create My Own > For me and my friends**). +Вам потрібно створити нову програму з ботом, додати бота на свій сервер і сполучити його з OpenClaw. Радимо додати бота на власний приватний сервер. Якщо у вас його ще немає, [спершу створіть його](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (виберіть **Create My Own > For me and my friends**). - Перейдіть на [Discord Developer Portal](https://discord.com/developers/applications) і натисніть **New Application**. Назвіть її, наприклад, "OpenClaw". + Перейдіть до [Discord Developer Portal](https://discord.com/developers/applications) і натисніть **New Application**. Назвіть її на кшталт "OpenClaw". - Натисніть **Bot** на бічній панелі. Установіть **Username** на ім'я, яким ви називаєте свого агента OpenClaw. + Натисніть **Bot** на бічній панелі. Установіть **Username** на назву, якою ви називаєте свого агента OpenClaw. - - Залишаючись на сторінці **Bot**, прокрутіть до **Privileged Gateway Intents** і ввімкніть: + + Залишаючись на сторінці **Bot**, прокрутіть униз до **Privileged Gateway Intents** і ввімкніть: - - **Message Content Intent** (обов'язково) - - **Server Members Intent** (рекомендовано; обов'язково для списків дозволених ролей і зіставлення імен з ID) - - **Presence Intent** (необов'язково; потрібно лише для оновлень присутності) + - **Message Content Intent** (обов’язково) + - **Server Members Intent** (рекомендовано; потрібно для списків дозволених ролей і зіставлення імен з ID) + - **Presence Intent** (необов’язково; потрібно лише для оновлень присутності) @@ -58,15 +58,15 @@ x-i18n: - + Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з потрібними дозволами, щоб додати бота на свій сервер. - Прокрутіть до **OAuth2 URL Generator** і ввімкніть: + Прокрутіть униз до **OAuth2 URL Generator** і ввімкніть: - `bot` - `applications.commands` - Нижче з'явиться розділ **Bot Permissions**. Увімкніть щонайменше: + Нижче з’явиться розділ **Bot Permissions**. Увімкніть щонайменше: **General Permissions** - View Channels @@ -75,32 +75,32 @@ x-i18n: - Read Message History - Embed Links - Attach Files - - Add Reactions (необов'язково) + - Add Reactions (необов’язково) - Це базовий набір для звичайних текстових каналів. Якщо ви плануєте писати в гілках Discord, зокрема в робочих процесах форумних або медіаканалів, які створюють чи продовжують гілку, також увімкніть **Send Messages in Threads**. - Скопіюйте згенерований URL унизу, вставте його в браузер, виберіть свій сервер і натисніть **Continue**, щоб підключити. Тепер ви маєте бачити свого бота на сервері Discord. + Це базовий набір для звичайних текстових каналів. Якщо плануєте писати в гілках Discord, зокрема в робочих процесах форумних або медіаканалів, які створюють чи продовжують гілку, також увімкніть **Send Messages in Threads**. + Скопіюйте згенерований URL унизу, вставте його у браузер, виберіть свій сервер і натисніть **Continue**, щоб під’єднати. Тепер ви маєте бачити свого бота на сервері Discord. - Повернувшись у застосунок Discord, потрібно ввімкнути режим розробника, щоб копіювати внутрішні ID. + Повернувшись у програму Discord, потрібно ввімкнути режим розробника, щоб копіювати внутрішні ID. - 1. Натисніть **User Settings** (значок шестерні поруч із вашим аватаром) → **Advanced** → увімкніть **Developer Mode** + 1. Натисніть **User Settings** (значок шестерні поруч з аватаром) → **Advanced** → увімкніть **Developer Mode** 2. Клацніть правою кнопкою миші **значок сервера** на бічній панелі → **Copy Server ID** 3. Клацніть правою кнопкою миші **власний аватар** → **Copy User ID** - Збережіть свої **Server ID** і **User ID** разом із Bot Token — на наступному кроці ви надішлете всі три в OpenClaw. + Збережіть **Server ID** і **User ID** поруч із Bot Token — на наступному кроці ви надішлете всі три до OpenClaw. - - Щоб сполучення працювало, Discord має дозволити вашому боту надсилати вам приватні повідомлення. Клацніть правою кнопкою миші **значок сервера** → **Privacy Settings** → увімкніть **Direct Messages**. + + Щоб сполучення працювало, Discord має дозволяти вашому боту надсилати вам особисті повідомлення. Клацніть правою кнопкою миші **значок сервера** → **Privacy Settings** → увімкніть **Direct Messages**. - Це дає змогу учасникам сервера (зокрема ботам) надсилати вам приватні повідомлення. Залиште це ввімкненим, якщо хочете використовувати приватні повідомлення Discord з OpenClaw. Якщо ви плануєте використовувати лише канали сервера, можете вимкнути приватні повідомлення після сполучення. + Це дозволяє учасникам сервера (зокрема ботам) надсилати вам особисті повідомлення. Залиште це ввімкненим, якщо хочете використовувати особисті повідомлення Discord з OpenClaw. Якщо плануєте використовувати лише серверні канали, можна вимкнути особисті повідомлення після сполучення. - + Токен вашого бота Discord є секретом (як пароль). Установіть його на машині, де працює OpenClaw, перш ніж писати своєму агенту. ```bash @@ -120,22 +120,22 @@ openclaw config patch --file ./discord.patch.json5 openclaw gateway ``` - Якщо OpenClaw уже працює як фоновий сервіс, перезапустіть його через застосунок OpenClaw для Mac або зупинивши й повторно запустивши процес `openclaw gateway run`. - Для встановлень керованого сервісу запустіть `openclaw gateway install` з оболонки, де присутній `DISCORD_BOT_TOKEN`, або збережіть змінну в `~/.openclaw/.env`, щоб сервіс міг розв'язати env SecretRef після перезапуску. - Якщо ваш хост заблоковано або обмежено за частотою запитів під час стартового пошуку програми Discord, установіть ID програми/клієнта Discord із Developer Portal, щоб запуск міг пропустити цей виклик REST. Використовуйте `channels.discord.applicationId` для типового облікового запису або `channels.discord.accounts..applicationId`, коли запускаєте кількох ботів Discord. + Якщо OpenClaw уже працює як фоновий сервіс, перезапустіть його через програму OpenClaw для Mac або зупинивши й повторно запустивши процес `openclaw gateway run`. + Для встановлень керованого сервісу запустіть `openclaw gateway install` з оболонки, де доступний `DISCORD_BOT_TOKEN`, або збережіть змінну в `~/.openclaw/.env`, щоб сервіс міг розв’язати env SecretRef після перезапуску. + Якщо ваш хост заблокований або обмежений за частотою через стартовий пошук програми Discord, задайте ID програми/клієнта Discord з Developer Portal, щоб під час запуску можна було пропустити цей REST-виклик. Використовуйте `channels.discord.applicationId` для облікового запису за замовчуванням або `channels.discord.accounts..applicationId`, коли запускаєте кількох ботів Discord. - + - Поспілкуйтеся зі своїм агентом OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому. Якщо Discord — ваш перший канал, натомість використайте вкладку CLI / config. + Поспілкуйтеся зі своїм агентом OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому це. Якщо Discord — ваш перший канал, натомість скористайтеся вкладкою CLI / конфігурація. - > "Я вже встановив токен свого бота Discord у конфігурації. Заверши налаштування Discord з User ID `` і Server ID ``." + > "I already set my Discord bot token in config. Please finish Discord setup with User ID `` and Server ID ``." - - Якщо ви віддаєте перевагу файловій конфігурації, установіть: + + Якщо віддаєте перевагу файловій конфігурації, установіть: ```json5 { @@ -152,15 +152,15 @@ openclaw gateway } ``` - Резервне env-значення для типового облікового запису: + Резервний env для облікового запису за замовчуванням: ```bash DISCORD_BOT_TOKEN=... ``` - Для скриптового або віддаленого налаштування запишіть той самий блок JSON5 за допомогою `openclaw config patch --file ./discord.patch.json5 --dry-run`, а потім повторно запустіть без `--dry-run`. Підтримуються відкриті значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` у провайдерах env/file/exec. Див. [Керування секретами](/uk/gateway/secrets). + Для скриптового або віддаленого налаштування запишіть той самий блок JSON5 за допомогою `openclaw config patch --file ./discord.patch.json5 --dry-run`, а потім повторно запустіть без `--dry-run`. Підтримуються відкриті значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` через провайдери env/file/exec. Див. [Керування секретами](/uk/gateway/secrets). - Для кількох ботів Discord тримайте токен і ID програми кожного бота в його обліковому записі. Верхньорівневий `channels.discord.applicationId` успадковується обліковими записами, тому встановлюйте його там лише тоді, коли кожен обліковий запис має використовувати той самий ID програми. + Для кількох ботів Discord зберігайте токен і ID програми кожного бота в його обліковому записі. Верхньорівневий `channels.discord.applicationId` успадковується обліковими записами, тому задавайте його там лише тоді, коли кожен обліковий запис має використовувати той самий ID програми. ```json5 { @@ -187,14 +187,14 @@ DISCORD_BOT_TOKEN=... - - Зачекайте, доки Gateway запрацює, а потім надішліть боту приватне повідомлення в Discord. Він відповість кодом сполучення. + + Дочекайтеся, доки Gateway запрацює, а потім надішліть боту особисте повідомлення в Discord. Він відповість кодом сполучення. Надішліть код сполучення своєму агенту в наявному каналі: - > "Підтвердь цей код сполучення Discord: ``" + > "Approve this Discord pairing code: ``" @@ -208,28 +208,28 @@ openclaw pairing approve discord Коди сполучення спливають через 1 годину. - Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через приватні повідомлення. + Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через особисті повідомлення. -Розв'язання токенів враховує обліковий запис. Значення токена в конфігурації мають пріоритет над резервним env-значенням. `DISCORD_BOT_TOKEN` використовується лише для типового облікового запису. -Якщо два ввімкнені облікові записи Discord розв'язуються в той самий токен бота, OpenClaw запускає лише один монітор Gateway для цього токена. Токен із конфігурації має пріоритет над типовим резервним env-значенням; інакше перший увімкнений обліковий запис перемагає, а дубльований обліковий запис повідомляється як вимкнений. -Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` для кожного виклику використовується для цього виклику. Це стосується дій надсилання та читання/перевірки (наприклад, read/search/fetch/thread/pins/permissions). Політика облікового запису та параметри повторних спроб усе одно надходять із вибраного облікового запису в активному знімку виконання. +Розв’язання токена враховує обліковий запис. Значення токена в конфігурації мають пріоритет над резервним env. `DISCORD_BOT_TOKEN` використовується лише для облікового запису за замовчуванням. +Якщо два ввімкнені облікові записи Discord розв’язуються до того самого токена бота, OpenClaw запускає лише один монітор Gateway для цього токена. Токен із конфігурації має пріоритет над резервним env за замовчуванням; інакше перший увімкнений обліковий запис перемагає, а дубльований обліковий запис позначається як вимкнений. +Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` на рівні виклику використовується саме для цього виклику. Це застосовується до дій надсилання та читання/перевірки (наприклад, read/search/fetch/thread/pins/permissions). Політика облікового запису та налаштування повторних спроб усе одно беруться з вибраного облікового запису в активному знімку runtime. -## Рекомендовано: налаштуйте робочий простір сервера +## Рекомендовано: налаштуйте серверний робочий простір -Коли приватні повідомлення запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот. +Коли особисті повідомлення запрацюють, можна налаштувати сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента зі своїм контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот. - Це дає змогу вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в приватних повідомленнях. + Це дозволяє вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в особистих повідомленнях. - > "Додай мій Discord Server ID `` до списку дозволених серверів" + > "Add my Discord Server ID `` to the guild allowlist" @@ -255,13 +255,13 @@ openclaw pairing approve discord - Типово ваш агент відповідає в каналах сервера лише коли його згадують через @mention. Для приватного сервера ви, ймовірно, захочете, щоб він відповідав на кожне повідомлення. + За замовчуванням ваш агент відповідає в серверних каналах лише тоді, коли його згадують через @mention. Для приватного сервера ви, ймовірно, хочете, щоб він відповідав на кожне повідомлення. - У каналах сервера звичайні фінальні відповіді асистента типово залишаються приватними. Видимий вивід Discord потрібно явно надсилати інструментом `message`, тож агент може типово непомітно спостерігати й писати лише тоді, коли вирішить, що відповідь у каналі корисна. + У серверних каналах звичайні фінальні відповіді асистента за замовчуванням залишаються приватними. Видимий вивід Discord потрібно надсилати явно через інструмент `message`, тож агент може за замовчуванням залишатися непомітним і публікувати лише тоді, коли вирішить, що відповідь у каналі корисна. - > "Дозволь моєму агенту відповідати на цьому сервері без потреби бути @mentioned" + > "Allow my agent to respond on this server without having to be @mentioned" Установіть `requireMention: false` у конфігурації сервера: @@ -287,65 +287,65 @@ openclaw pairing approve discord - - Типово довгострокова пам'ять (MEMORY.md) завантажується лише в сесіях приватних повідомлень. Канали сервера не завантажують MEMORY.md автоматично. + + За замовчуванням довгострокова пам’ять (MEMORY.md) завантажується лише в сесіях особистих повідомлень. Серверні канали не завантажують MEMORY.md автоматично. - > "Коли я ставлю запитання в каналах Discord, використовуй memory_search або memory_get, якщо тобі потрібен довгостроковий контекст із MEMORY.md." + > "When I ask questions in Discord channels, use memory_search or memory_get if you need long-term context from MEMORY.md." - Якщо вам потрібен спільний контекст у кожному каналі, помістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони вставляються в кожну сесію). Зберігайте довгострокові нотатки в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам'яті. + Якщо вам потрібен спільний контекст у кожному каналі, помістіть сталі інструкції в `AGENTS.md` або `USER.md` (вони додаються до кожної сесії). Зберігайте довгострокові нотатки в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам’яті. -Тепер створіть кілька каналів на своєму сервері Discord і почніть спілкування. Ваш агент може бачити назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що підходить вашому робочому процесу. +Тепер створіть кілька каналів на своєму сервері Discord і починайте спілкуватися. Ваш агент бачить назву каналу, і кожен канал отримує власну ізольовану сесію — тож можна налаштувати `#coding`, `#home`, `#research` або будь-що, що підходить вашому робочому процесу. -## Модель виконання +## Модель runtime -- Gateway володіє з’єднанням Discord. -- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються в Discord. -- Метадані guild/channel Discord додаються до підказки моделі як ненадійний - контекст, а не як видимий користувачу префікс відповіді. Якщо модель скопіює цю обгортку - назад, OpenClaw видаляє скопійовані метадані з вихідних відповідей і з - майбутнього контексту повторного відтворення. +- Gateway володіє підключенням Discord. +- Маршрутизація відповідей є детермінованою: вхідні відповіді Discord повертаються до Discord. +- Метадані Discord guild/channel додаються до підказки моделі як недовірений + контекст, а не як видимий користувачу префікс відповіді. Якщо модель копіює цей конверт + назад, OpenClaw вилучає скопійовані метадані з вихідних відповідей і з + майбутнього контексту відтворення. - За замовчуванням (`session.dmScope=main`) прямі чати спільно використовують основну сесію агента (`agent:main:main`). - Канали guild ізольовані ключами сесій (`agent::discord:channel:`). -- Group DM за замовчуванням ігноруються (`channels.discord.dm.groupEnabled=false`). -- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас усе ще передаючи `CommandTargetSessionKey` до сесії маршрутизованої розмови. -- Доставка текстових оголошень cron/heartbeat до Discord використовує фінальну - видиму асистенту відповідь один раз. Медіа й структуровані payload-и компонентів залишаються - багатоповідомленнєвими, коли агент генерує кілька payload-ів, придатних до доставки. +- Групові DM за замовчуванням ігноруються (`channels.discord.dm.groupEnabled=false`). +- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас передаючи `CommandTargetSessionKey` до маршрутизованої сесії розмови. +- Доставлення текстових оголошень cron/heartbeat до Discord використовує фінальну + видиму асистенту відповідь один раз. Медіа та структуровані payload компонентів залишаються + багатоповідомленнєвими, коли агент видає кілька payload, придатних для доставлення. -## Канали форумів +## Форумні канали -Канали форумів і медіа Discord приймають лише дописи в гілках. OpenClaw підтримує два способи їх створення: +Форумні та медіаканали Discord приймають лише дописи в threads. OpenClaw підтримує два способи їх створення: -- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити гілку. Назва гілки використовує перший непорожній рядок вашого повідомлення. -- Використайте `openclaw message thread create`, щоб створити гілку напряму. Не передавайте `--message-id` для каналів форумів. +- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити thread. Назва thread використовує перший непорожній рядок вашого повідомлення. +- Використайте `openclaw message thread create`, щоб створити thread напряму. Не передавайте `--message-id` для форумних каналів. -Приклад: надішліть до батьківського форуму, щоб створити гілку +Приклад: надіслати до батьківського форуму, щоб створити thread ```bash openclaw message send --channel discord --target channel: \ --message "Topic title\nBody of the post" ``` -Приклад: явно створіть гілку форуму +Приклад: явно створити форумний thread ```bash openclaw message thread create --channel discord --target channel: \ --thread-name "Topic title" --message "Body of the post" ``` -Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самої гілки (`channel:`). +Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самого thread (`channel:`). ## Інтерактивні компоненти -OpenClaw підтримує контейнери компонентів v2 Discord для повідомлень агента. Використовуйте інструмент повідомлень із payload-ом `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`. +OpenClaw підтримує контейнери компонентів Discord v2 для повідомлень агента. Використовуйте інструмент повідомлень із payload `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`. Підтримувані блоки: @@ -353,23 +353,23 @@ OpenClaw підтримує контейнери компонентів v2 Disco - Рядки дій дозволяють до 5 кнопок або одне меню вибору - Типи вибору: `string`, `user`, `role`, `mentionable`, `channel` -За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, елементів вибору й форм до завершення їхнього строку дії. +За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити використовувати кнопки, списки вибору та форми кілька разів, доки вони не спливуть. -Щоб обмежити, хто може натискати кнопку, задайте `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Якщо налаштовано, користувачі без збігу отримують ephemeral відмову. +Щоб обмежити, хто може натиснути кнопку, задайте `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Коли налаштовано, користувачі без відповідності отримують ефемерну відмову. -Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з випадними списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарівання замість реєстрації моделей із чату. Відповідь вибору є ephemeral, і використовувати її може лише користувач, який її викликав. +Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з розкривними списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла і тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь вибору є ефемерною, і використовувати її може лише користувач, який її викликав. Вкладення файлів: - Блоки `file` мають указувати на посилання вкладення (`attachment://`) - Надайте вкладення через `media`/`path`/`filePath` (один файл); використовуйте `media-gallery` для кількох файлів -- Використовуйте `filename`, щоб перевизначити назву завантаження, коли вона має збігатися з посиланням вкладення +- Використовуйте `filename`, щоб перевизначити назву завантаження, коли вона має відповідати посиланню вкладення Модальні форми: -- Додайте `components.modal` з до 5 полями +- Додайте `components.modal` із до 5 полями - Типи полів: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select` -- OpenClaw додає кнопку запуску автоматично +- OpenClaw автоматично додає кнопку запуску Приклад: @@ -425,15 +425,15 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` -## Контроль доступу й маршрутизація +## Контроль доступу та маршрутизація - - `channels.discord.dmPolicy` контролює доступ до DM. `channels.discord.allowFrom` є канонічним списком дозволених DM. + + `channels.discord.dmPolicy` керує доступом DM. `channels.discord.allowFrom` є канонічним allowlist DM. - `pairing` (за замовчуванням) - `allowlist` - - `open` (потребує, щоб `channels.discord.allowFrom` включав `"*"`) + - `open` (вимагає, щоб `channels.discord.allowFrom` містив `"*"`) - `disabled` Якщо політика DM не відкрита, невідомі користувачі блокуються (або отримують запит на pairing у режимі `pairing`). @@ -445,34 +445,34 @@ Slash-команди `/model` і `/models` відкривають інтерак - Іменовані облікові записи успадковують `channels.discord.allowFrom`, коли їхні власні `allowFrom` і застарілий `dm.allowFrom` не задані. - Іменовані облікові записи не успадковують `channels.discord.accounts.default.allowFrom`. - Застарілі `channels.discord.dm.policy` і `channels.discord.dm.allowFrom` усе ще читаються для сумісності. `openclaw doctor --fix` мігрує їх до `dmPolicy` і `allowFrom`, коли може зробити це без зміни доступу. + Застарілі `channels.discord.dm.policy` і `channels.discord.dm.allowFrom` досі читаються для сумісності. `openclaw doctor --fix` мігрує їх до `dmPolicy` і `allowFrom`, коли може зробити це без зміни доступу. - Формат цілі DM для доставки: + Формат цілі DM для доставлення: - `user:` - згадка `<@id>` - Голі числові ID зазвичай розпізнаються як ID каналів, коли активний стандартний канал, але ID, перелічені в ефективному DM `allowFrom` облікового запису, трактуються як цілі користувацьких DM для сумісності. + Голі числові ID зазвичай розв’язуються як ID каналів, коли активне стандартне значення каналу, але ID, перелічені в ефективному DM `allowFrom` облікового запису, трактуються як цілі DM користувача для сумісності. - - Обробка guild контролюється `channels.discord.groupPolicy`: + + Обробкою guild керує `channels.discord.groupPolicy`: - `open` - `allowlist` - `disabled` - Безпечна базова конфігурація, коли існує `channels.discord`, це `allowlist`. + Безпечний базовий рівень, коли існує `channels.discord`, це `allowlist`. Поведінка `allowlist`: - - guild має збігатися з `channels.discord.guilds` (`id` бажаний, slug приймається) - - необов’язкові списки дозволених відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволяються, коли вони збігаються з `users` АБО `roles` - - прямий збіг імен/тегів за замовчуванням вимкнений; вмикайте `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності + - guild має відповідати `channels.discord.guilds` (перевага надається `id`, slug приймається) + - необов’язкові allowlist відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволені, коли вони відповідають `users` АБО `roles` + - пряме зіставлення імен/тегів вимкнене за замовчуванням; вмикайте `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності - імена/теги підтримуються для `users`, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи імен/тегів - - якщо guild має налаштовані `channels`, канали не зі списку відхиляються - - якщо guild не має блока `channels`, усі канали в цій allowlisted guild дозволені + - якщо guild має налаштовані `channels`, канали поза списком заборонені + - якщо guild не має блока `channels`, дозволені всі канали в цьому allowlisted guild Приклад: @@ -498,23 +498,23 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Якщо ви задаєте лише `DISCORD_BOT_TOKEN` і не створюєте блок `channels.discord`, runtime fallback — це `groupPolicy="allowlist"` (із попередженням у журналах), навіть якщо `channels.defaults.groupPolicy` має значення `open`. + Якщо ви задаєте лише `DISCORD_BOT_TOKEN` і не створюєте блок `channels.discord`, runtime fallback — `groupPolicy="allowlist"` (із попередженням у логах), навіть якщо `channels.defaults.groupPolicy` дорівнює `open`. - + Повідомлення guild за замовчуванням обмежені згадками. - Виявлення згадок включає: + Виявлення згадок охоплює: - явну згадку бота - налаштовані шаблони згадок (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`) - - неявну поведінку reply-to-bot у підтримуваних випадках + - неявну поведінку відповіді боту в підтримуваних випадках `requireMention` налаштовується для кожного guild/channel (`channels.discord.guilds...`). - `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (за винятком @everyone/@here). + `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (крім @everyone/@here). - Group DM: + Групові DM: - за замовчуванням: ігноруються (`dm.groupEnabled=false`) - необов’язковий allowlist через `dm.groupChannels` (ID каналів або slug) @@ -522,9 +522,9 @@ Slash-команди `/model` і `/models` відкривають інтерак -### Маршрутизація агентів на основі ролей +### Маршрутизація агента на основі ролей -Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників Discord guild до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише guild. Якщо прив’язка також задає інші поля збігу (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися. +Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників Discord guild до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише для guild. Якщо прив’язка також задає інші поля зіставлення (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися. ```json5 { @@ -548,15 +548,15 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` -## Нативні команди й авторизація команд +## Нативні команди та авторизація команд - `commands.native` за замовчуванням має значення `"auto"` і ввімкнено для Discord. -- Перевизначення для окремого каналу: `channels.discord.commands.native`. +- Перевизначення для каналу: `channels.discord.commands.native`. - `commands.native=false` явно очищає раніше зареєстровані нативні команди Discord. -- Авторизація нативних команд використовує ті самі списки дозволених/політики Discord, що й звичайна обробка повідомлень. -- Команди все ще можуть бути видимими в UI Discord для користувачів, які не авторизовані; виконання все одно застосовує авторизацію OpenClaw і повертає "not authorized". +- Авторизація нативних команд використовує ті самі allowlist/політики Discord, що й звичайна обробка повідомлень. +- Команди все ще можуть бути видимими в UI Discord для користувачів без авторизації; виконання все одно застосовує авторизацію OpenClaw і повертає "not authorized". -Див. [Slash-команди](/uk/tools/slash-commands) для каталогу команд і поведінки. +Див. [Slash-команди](/uk/tools/slash-commands), щоб переглянути каталог команд і поведінку. Стандартні налаштування slash-команд: @@ -565,34 +565,34 @@ Slash-команди `/model` і `/models` відкривають інтерак ## Деталі функцій - - Discord підтримує теги відповідей у виводі агента: + + Discord підтримує теги відповіді у виводі агента: - `[[reply_to_current]]` - `[[reply_to:]]` - Контролюється `channels.discord.replyToMode`: + Керується `channels.discord.replyToMode`: - `off` (за замовчуванням) - `first` - `all` - `batched` - Примітка: `off` вимикає неявне створення гілок відповідей. Явні теги `[[reply_to_*]]` усе ще враховуються. - `first` завжди додає неявне посилання нативної відповіді до першого вихідного повідомлення Discord для ходу. - `batched` додає неявне посилання нативної відповіді Discord лише тоді, коли + Примітка: `off` вимикає неявне створення reply thread. Явні теги `[[reply_to_*]]` усе ще враховуються. + `first` завжди додає неявне нативне посилання відповіді до першого вихідного повідомлення Discord для ходу. + `batched` додає неявне нативне посилання відповіді Discord лише тоді, коли вхідний хід був дебаунсованим пакетом із кількох повідомлень. Це корисно, - коли вам потрібні нативні відповіді переважно для неоднозначних сплесків чату, а не для кожного + коли вам потрібні нативні відповіді переважно для неоднозначних швидких серій чатів, а не для кожного ходу з одним повідомленням. - ID повідомлень передаються в контексті/історії, щоб агенти могли адресувати конкретні повідомлення. + ID повідомлень показуються в контексті/історії, щоб агенти могли націлюватися на конкретні повідомлення. - - OpenClaw може транслювати чорнові відповіді, надсилаючи тимчасове повідомлення й редагуючи його в міру надходження тексту. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` відображається на `partial` у Discord; `streamMode` є застарілим псевдонімом і мігрується автоматично. + + OpenClaw може транслювати чернетки відповідей, надсилаючи тимчасове повідомлення й редагуючи його, коли надходить текст. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` відображається на `partial` у Discord; `streamMode` є застарілим псевдонімом і мігрується автоматично. - За замовчуванням залишається `off`, оскільки редагування попереднього перегляду Discord швидко впираються в rate limits, коли кілька ботів або gateways спільно використовують обліковий запис. + За замовчуванням залишається `off`, оскільки редагування попереднього перегляду Discord швидко впираються в ліміти частоти, коли кілька ботів або Gateway спільно використовують обліковий запис. ```json5 { @@ -609,49 +609,49 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - - `partial` редагує одне повідомлення попереднього перегляду в міру надходження токенів. - - `block` випускає фрагменти розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`). - - Фінальні відповіді з медіа, помилками та явними відповідями скасовують очікувані редагування попереднього перегляду. - - `streaming.preview.toolProgress` (за замовчуванням `true`) контролює, чи повторно використовують оновлення інструментів/прогресу повідомлення попереднього перегляду. + - `partial` редагує одне повідомлення попереднього перегляду, коли надходять токени. + - `block` випускає chunks розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`). + - Медіа, помилки та фінальні відповіді з явним reply скасовують очікувані редагування попереднього перегляду. + - `streaming.preview.toolProgress` (за замовчуванням `true`) керує тим, чи оновлення інструментів/прогресу повторно використовують повідомлення попереднього перегляду. - Потоковий попередній перегляд підтримує лише текст; медіавідповіді повертаються до звичайної доставки. Коли потокове передавання `block` явно ввімкнено, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійного потокового передавання. + Трансляція попереднього перегляду підтримує лише текст; медіавідповіді повертаються до звичайного доставлення. Коли потокове передавання `block` явно ввімкнене, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійного потокового передавання. - + Контекст історії guild: - - `channels.discord.historyLimit` за замовчуванням `20` + - стандартне значення `channels.discord.historyLimit` — `20` - fallback: `messages.groupChat.historyLimit` - `0` вимикає - Елементи керування історією DM: + Керування історією DM: - `channels.discord.dmHistoryLimit` - `channels.discord.dms[""].historyLimit` - Поведінка гілок: + Поведінка потоків: - - Гілки Discord маршрутизуються як сеанси каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено. - - Сеанси гілок успадковують вибір `/model` на рівні сеансу батьківського каналу як резервний варіант лише для моделі; локальні для гілки вибори `/model` усе одно мають пріоритет, а історія транскрипту батьківського каналу не копіюється, якщо не ввімкнено успадкування транскрипту. - - `channels.discord.thread.inheritParent` (типово `false`) вмикає засівання нових автоматичних гілок із батьківського транскрипту. Перевизначення для окремого облікового запису розміщуються в `channels.discord.accounts..thread.inheritParent`. + - Потоки Discord маршрутизуються як сеанси каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено. + - Сеанси потоків успадковують вибір `/model` на рівні сеансу батьківського каналу як резервний варіант лише для моделі; локальні для потоку вибори `/model` усе одно мають пріоритет, а історія транскрипту батьківського каналу не копіюється, якщо не ввімкнено успадкування транскрипту. + - `channels.discord.thread.inheritParent` (типово `false`) вмикає для нових автоматичних потоків початкове наповнення з батьківського транскрипту. Перевизначення для окремих облікових записів розміщуються в `channels.discord.accounts..thread.inheritParent`. - Реакції інструментів повідомлень можуть розпізнавати цілі DM `user:`. - `guilds..channels..requireMention: false` зберігається під час резервної активації на етапі відповіді. - Теми каналів вставляються як **ненадійний** контекст. Списки дозволених визначають, хто може запускати агента, а не є повною межею редагування додаткового контексту. + Теми каналів додаються як **ненадійний** контекст. Списки дозволів обмежують, хто може запускати агента, але не є повною межею редагування додаткового контексту. - - Discord може прив'язати гілку до цілі сеансу, щоб подальші повідомлення в цій гілці й далі маршрутизувалися до того самого сеансу (зокрема сеансів субагентів). + + Discord може прив’язати потік до цілі сеансу, щоб наступні повідомлення в цьому потоці й далі маршрутизувалися до того самого сеансу (зокрема сеансів субагентів). Команди: - - `/focus ` прив'язати поточну/нову гілку до цілі субагента/сеансу - - `/unfocus` видалити прив'язку поточної гілки - - `/agents` показати активні запуски та стан прив'язки - - `/session idle ` переглянути/оновити автоматичне зняття фокуса через неактивність для сфокусованих прив'язок - - `/session max-age ` переглянути/оновити жорсткий максимальний вік для сфокусованих прив'язок + - `/focus ` прив’язати поточний/новий потік до цілі субагента/сеансу + - `/unfocus` видалити прив’язку поточного потоку + - `/agents` показати активні виконання та стан прив’язки + - `/session idle ` переглянути/оновити автоматичне зняття фокуса через неактивність для сфокусованих прив’язок + - `/session max-age ` переглянути/оновити жорсткий максимальний вік для сфокусованих прив’язок Конфігурація: @@ -681,16 +681,16 @@ Slash-команди `/model` і `/models` відкривають інтерак - `session.threadBindings.*` задає глобальні типові значення. - `channels.discord.threadBindings.*` перевизначає поведінку Discord. - - `spawnSubagentSessions` має бути `true`, щоб автоматично створювати/прив'язувати гілки для `sessions_spawn({ thread: true })`. - - `spawnAcpSessions` має бути `true`, щоб автоматично створювати/прив'язувати гілки для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`). - - Якщо прив'язки гілок вимкнено для облікового запису, `/focus` і пов'язані операції прив'язки гілок недоступні. + - `spawnSubagentSessions` має бути true, щоб автоматично створювати/прив’язувати потоки для `sessions_spawn({ thread: true })`. + - `spawnAcpSessions` має бути true, щоб автоматично створювати/прив’язувати потоки для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`). + - Якщо прив’язки потоків вимкнено для облікового запису, `/focus` і пов’язані операції прив’язки потоків недоступні. Див. [Субагенти](/uk/tools/subagents), [Агенти ACP](/uk/tools/acp-agents) і [Довідник конфігурації](/uk/gateway/configuration-reference). - - Для стабільних "завжди ввімкнених" робочих просторів ACP налаштуйте типізовані прив'язки ACP верхнього рівня, націлені на розмови Discord. + + Для стабільних робочих просторів ACP «завжди ввімкнено» налаштуйте типізовані прив’язки ACP верхнього рівня, націлені на розмови Discord. Шлях конфігурації: @@ -746,30 +746,30 @@ Slash-команди `/model` і `/models` відкривають інтерак Примітки: - - `/acp spawn codex --bind here` прив'язує поточний канал або гілку на місці та залишає майбутні повідомлення в тому самому сеансі ACP. Повідомлення гілок успадковують прив'язку батьківського каналу. - - У прив'язаному каналі або гілці `/new` і `/reset` скидають той самий сеанс ACP на місці. Тимчасові прив'язки гілок можуть перевизначати розпізнавання цілі, поки вони активні. - - `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив'язати дочірню гілку через `--thread auto|here`. + - `/acp spawn codex --bind here` прив’язує поточний канал або потік на місці та зберігає майбутні повідомлення в тому самому сеансі ACP. Повідомлення потоку успадковують прив’язку батьківського каналу. + - У прив’язаному каналі або потоці `/new` і `/reset` скидають той самий сеанс ACP на місці. Тимчасові прив’язки потоків можуть перевизначати розв’язання цілі, поки активні. + - `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив’язати дочірній потік через `--thread auto|here`. - Див. [Агенти ACP](/uk/tools/acp-agents) для деталей поведінки прив'язки. + Див. [Агенти ACP](/uk/tools/acp-agents), щоб дізнатися подробиці поведінки прив’язок. - Режим сповіщень про реакції для окремої гільдії: + Режим сповіщень про реакції для кожної гільдії: - `off` - `own` (типово) - `all` - `allowlist` (використовує `guilds..users`) - Події реакцій перетворюються на системні події та прикріплюються до маршрутизованого сеансу Discord. + Події реакцій перетворюються на системні події та приєднуються до маршрутизованого сеансу Discord. `ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення. - Порядок розпізнавання: + Порядок розв’язання: - `channels.discord.accounts..ackReaction` - `channels.discord.ackReaction` @@ -784,11 +784,11 @@ Slash-команди `/model` і `/models` відкривають інтерак - Записи конфігурації, ініційовані каналом, увімкнено типово. + Записи конфігурації, ініційовані каналом, увімкнені типово. - Це впливає на потоки `/config set|unset` (коли функції команд увімкнено). + Це впливає на потоки `/config set|unset` (коли функції команд увімкнені). - Вимкнення: + Вимкнути: ```json5 { @@ -803,7 +803,7 @@ Slash-команди `/model` і `/models` відкривають інтерак - Маршрутизуйте WebSocket-трафік Gateway Discord і початкові REST-запити під час запуску (ідентифікатор застосунку + розпізнавання списку дозволених) через HTTP(S)-проксі за допомогою `channels.discord.proxy`. + Маршрутизуйте WebSocket-трафік Gateway Discord і стартові REST-запити (ID застосунку + розв’язання списку дозволів) через HTTP(S)-проксі за допомогою `channels.discord.proxy`. ```json5 { @@ -834,7 +834,7 @@ Slash-команди `/model` і `/models` відкривають інтерак - Увімкніть розпізнавання PluralKit, щоб зіставляти проксійовані повідомлення з ідентичністю учасника системи: + Увімкніть розв’язання PluralKit, щоб зіставляти проксійовані повідомлення з ідентичністю учасника системи: ```json5 { @@ -851,15 +851,15 @@ Slash-команди `/model` і `/models` відкривають інтерак Примітки: - - списки дозволених можуть використовувати `pk:` + - списки дозволів можуть використовувати `pk:` - відображувані імена учасників зіставляються за іменем/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true` - - пошуки використовують початковий ідентифікатор повідомлення та обмежені часовим вікном - - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями ботів і відкидаються, якщо `allowBots=true` не задано + - пошуки використовують ID початкового повідомлення й обмежені часовим вікном + - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями бота й відкидаються, якщо `allowBots=true` не задано - Оновлення присутності застосовуються, коли ви задаєте поле статусу чи активності або коли вмикаєте автоматичну присутність. + Оновлення присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте автоматичну присутність. Приклад лише зі статусом: @@ -906,10 +906,10 @@ Slash-команди `/model` і `/models` відкривають інтерак - 1: Стримить (потребує `activityUrl`) - 2: Слухає - 3: Дивиться - - 4: Користувацька (використовує текст активності як стан статусу; емодзі необов'язковий) + - 4: Користувацька (використовує текст активності як стан статусу; емодзі необов’язковий) - 5: Змагається - Приклад автоматичної присутності (сигнал справності середовища виконання): + Приклад автоматичної присутності (сигнал стану runtime): ```json5 { @@ -926,7 +926,7 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Автоматична присутність зіставляє доступність середовища виконання зі статусом Discord: справний => онлайн, погіршений або невідомий => неактивний, вичерпаний або недоступний => не турбувати. Необов'язкові перевизначення тексту: + Автоматична присутність зіставляє доступність runtime зі статусом Discord: здоровий => онлайн, деградований або невідомий => бездіяльний, вичерпаний або недоступний => dnd. Необов’язкові перевизначення тексту: - `autoPresence.healthyText` - `autoPresence.degradedText` @@ -934,51 +934,51 @@ Slash-команди `/model` і `/models` відкривають інтерак - - Discord підтримує обробку схвалень на основі кнопок у DM і може додатково публікувати запити на схвалення в початковому каналі. + + Discord підтримує обробку затверджень за допомогою кнопок у DM і може необов’язково публікувати запити на затвердження у вихідному каналі. Шлях конфігурації: - `channels.discord.execApprovals.enabled` - - `channels.discord.execApprovals.approvers` (необов'язково; за можливості повертається до `commands.ownerAllowFrom`) + - `channels.discord.execApprovals.approvers` (необов’язково; за можливості повертається до `commands.ownerAllowFrom`) - `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`) - `agentFilter`, `sessionFilter`, `cleanupAfterResolve` - Discord автоматично вмикає нативні схвалення виконання, коли `enabled` не задано або дорівнює `"auto"` і можна розпізнати принаймні одного схвалювача, або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не виводить схвалювачів виконання з канального `allowFrom`, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Задайте `enabled: false`, щоб явно вимкнути Discord як нативний клієнт схвалень. + Discord автоматично вмикає нативні exec-затвердження, коли `enabled` не задано або має значення `"auto"` і можна розпізнати принаймні одного затверджувача, або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не виводить exec-затверджувачів із `allowFrom` каналу, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Установіть `enabled: false`, щоб явно вимкнути Discord як нативний клієнт затверджень. - Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на схвалення та фінальні результати приватно. Спершу він пробує Discord DM, коли власник, який викликає команду, має маршрут власника Discord; якщо він недоступний, OpenClaw повертається до першого доступного маршруту власника з `commands.ownerAllowFrom`, наприклад Telegram. + Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на затвердження та кінцеві результати приватно. Спочатку він пробує DM Discord, коли власник, що викликає команду, має маршрут власника Discord; якщо він недоступний, OpenClaw повертається до першого доступного маршруту власника з `commands.ownerAllowFrom`, наприклад Telegram. - Коли `target` дорівнює `channel` або `both`, запит на схвалення видимий у каналі. Кнопками можуть користуватися лише розпізнані схвалювачі; інші користувачі отримують ефемерну відмову. Запити на схвалення містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ідентифікатор каналу не можна вивести з ключа сеансу, OpenClaw повертається до доставки через DM. + Коли `target` має значення `channel` або `both`, запит на затвердження видимий у каналі. Кнопками можуть користуватися лише розпізнані затверджувачі; інші користувачі отримують ефемерну відмову. Запити на затвердження містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу неможливо вивести з ключа сеансу, OpenClaw повертається до доставки через DM. - Discord також відображає спільні кнопки схвалення, які використовуються іншими чат-каналами. Нативний адаптер Discord головно додає маршрутизацію DM для схвалювачів і розсилання в канал. - Коли ці кнопки наявні, вони є основним UX схвалень; OpenClaw + Discord також відтворює спільні кнопки затвердження, які використовують інші чат-канали. Нативний адаптер Discord переважно додає маршрутизацію DM для затверджувачів і розсилання в канали. + Коли ці кнопки присутні, вони є основним UX затвердження; OpenClaw має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, - що схвалення в чаті недоступні або ручне схвалення є єдиним шляхом. - Якщо нативне середовище виконання схвалень Discord неактивне, OpenClaw залишає - локальну детерміновану підказку `/approve ` видимою. Якщо - середовище виконання активне, але нативну картку не можна доставити жодній цілі, - OpenClaw надсилає резервне повідомлення в той самий чат із точною командою `/approve` - із очікуваного схвалення. + що чат-затвердження недоступні або ручне затвердження є єдиним шляхом. + Якщо нативний runtime затверджень Discord не активний, OpenClaw залишає + видимим локальний детермінований запит `/approve `. Якщо + runtime активний, але нативну картку неможливо доставити до жодної цілі, + OpenClaw надсилає резервне сповіщення в той самий чат із точною командою `/approve` + з очікуваного затвердження. - Автентифікація Gateway і розпізнавання схвалень дотримуються спільного контракту клієнта Gateway (ідентифікатори `plugin:` розпізнаються через `plugin.approval.resolve`; інші ідентифікатори через `exec.approval.resolve`). Типово схвалення спливають через 30 хвилин. + Автентифікація Gateway і розв’язання затверджень дотримуються спільного контракту клієнта Gateway (ID `plugin:` розв’язуються через `plugin.approval.resolve`; інші ID через `exec.approval.resolve`). Затвердження типово спливають через 30 хвилин. - Див. [Схвалення виконання](/uk/tools/exec-approvals). + Див. [Exec-затвердження](/uk/tools/exec-approvals). ## Інструменти та шлюзи дій -Дії повідомлень Discord включають повідомлення, адміністрування каналів, модерацію, присутність і дії з метаданими. +Дії повідомлень Discord включають обмін повідомленнями, адміністрування каналів, модерацію, присутність і дії з метаданими. Основні приклади: -- повідомлення: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply` +- обмін повідомленнями: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply` - реакції: `react`, `reactions`, `emojiList` - модерація: `timeout`, `kick`, `ban` - присутність: `setPresence` -Дія `event-create` приймає необов'язковий параметр `image` (URL або шлях до локального файлу), щоб задати обкладинку запланованої події. +Дія `event-create` приймає необов’язковий параметр `image` (URL або шлях до локального файлу), щоб задати зображення обкладинки запланованої події. Шлюзи дій розміщуються в `channels.discord.actions.*`. @@ -991,13 +991,13 @@ Slash-команди `/model` і `/models` відкривають інтерак | moderation | вимкнено | | presence | вимкнено | -## UI компонентів v2 +## Інтерфейс компонентів v2 -OpenClaw використовує компоненти Discord v2 для схвалень виконання та маркерів міжконтекстного переходу. Дії з повідомленнями Discord також можуть приймати `components` для власного UI (розширений режим; потребує побудови payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані. +OpenClaw використовує компоненти Discord v2 для підтверджень виконання та маркерів між контекстами. Дії з повідомленнями Discord також можуть приймати `components` для користувацького інтерфейсу (розширений сценарій; потребує створення payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані. - `channels.discord.ui.components.accentColor` задає акцентний колір, який використовують контейнери компонентів Discord (hex). -- Задавайте для кожного облікового запису через `channels.discord.accounts..ui.components.accentColor`. -- `embeds` ігноруються, коли присутні компоненти v2. +- Задається для кожного облікового запису через `channels.discord.accounts..ui.components.accentColor`. +- `embeds` ігноруються, коли наявні компоненти v2. Приклад: @@ -1017,7 +1017,7 @@ OpenClaw використовує компоненти Discord v2 для схв ## Голос -Discord має дві окремі голосові поверхні: голосові канали **voice channels** у реальному часі (безперервні розмови) та вкладення голосових повідомлень **voice message attachments** (формат попереднього перегляду з хвильовою формою). Gateway підтримує обидві. +Discord має дві окремі голосові поверхні: голосові канали реального часу (безперервні розмови) та вкладення голосових повідомлень (формат попереднього перегляду з хвильовою формою). Gateway підтримує обидва варіанти. ### Голосові канали @@ -1030,7 +1030,7 @@ Discord має дві окремі голосові поверхні: голос 5. Увімкніть нативні команди (`commands.native` або `channels.discord.commands.native`). 6. Налаштуйте `channels.discord.voice`. -Використовуйте `/vc join|leave|status` для керування сеансами. Команда використовує типового агента облікового запису й дотримується тих самих правил списку дозволених і групової політики, що й інші команди Discord. +Використовуйте `/vc join|leave|status` для керування сеансами. Команда використовує агент за замовчуванням для облікового запису й дотримується тих самих правил списків дозволів і групової політики, що й інші команди Discord. ```bash /vc join channel: @@ -1070,24 +1070,24 @@ Discord має дві окремі голосові поверхні: голос Примітки: - `voice.tts` перевизначає `messages.tts` лише для голосового відтворення. -- `voice.model` перевизначає LLM, що використовується лише для відповідей у голосовому каналі Discord. Не задавайте його, щоб успадкувати модель маршрутизованого агента. +- `voice.model` перевизначає LLM, що використовується лише для відповідей у голосовому каналі Discord. Залиште це незаданим, щоб успадкувати модель маршрутизованого агента. - STT використовує `tools.media.audio`; `voice.model` не впливає на транскрипцію. -- Перевизначення `systemPrompt` для окремих каналів Discord застосовуються до ходів голосового транскрипту для цього голосового каналу. -- Ходи голосового транскрипту визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); мовці, які не є власниками, не можуть отримувати доступ до інструментів лише для власника (наприклад `gateway` і `cron`). -- Голос увімкнено за замовчуванням; задайте `channels.discord.voice.enabled=false`, щоб вимкнути голосовий runtime і Gateway intent `GuildVoiceStates`. -- `channels.discord.intents.voiceStates` може явно перевизначити підписку на intent станів голосу. Не задавайте його, щоб intent відповідав `voice.enabled`. -- `voice.daveEncryption` і `voice.decryptionFailureTolerance` передаються до параметрів join `@discordjs/voice`. -- Типові значення `@discordjs/voice`: `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано. -- `voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб автоматичного приєднання. За замовчуванням: `30000`. -- `voice.reconnectGraceMs` керує тим, скільки OpenClaw чекає, доки від'єднаний голосовий сеанс почне перепідключення, перш ніж знищити його. За замовчуванням: `15000`. -- OpenClaw також відстежує збої розшифрування прийому й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись після повторюваних збоїв за короткий проміжок часу. -- Якщо після оновлення журнали прийому повторно показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` включає upstream-виправлення padding з PR discord.js #11449, яке закрило issue discord.js #11419. +- Перевизначення Discord `systemPrompt` для окремого каналу застосовуються до ходів голосового транскрипту для цього голосового каналу. +- Ходи голосового транскрипту визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); мовці, які не є власниками, не можуть отримувати доступ до інструментів лише для власника (наприклад, `gateway` і `cron`). +- Голос Discord є опційним для конфігурацій лише з текстом; задайте `channels.discord.voice.enabled=true` (або залиште наявний блок `channels.discord.voice`), щоб увімкнути команди `/vc`, голосовий runtime і gateway intent `GuildVoiceStates`. +- `channels.discord.intents.voiceStates` може явно перевизначити підписку на intent стану голосу. Залиште це незаданим, щоб intent відповідав ефективному ввімкненню голосу. +- `voice.daveEncryption` і `voice.decryptionFailureTolerance` передаються до параметрів приєднання `@discordjs/voice`. +- Типові значення `@discordjs/voice` — `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано. +- `voice.connectTimeoutMs` керує початковим очікуванням Ready у `@discordjs/voice` для `/vc join` і спроб автоматичного приєднання. Типово: `30000`. +- `voice.reconnectGraceMs` керує тим, як довго OpenClaw чекає, доки від'єднаний голосовий сеанс почне повторне підключення, перш ніж знищити його. Типово: `15000`. +- OpenClaw також відстежує помилки розшифрування під час приймання й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись після повторюваних помилок у короткому вікні. +- Якщо після оновлення журнали приймання неодноразово показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` містить upstream-виправлення padding з PR discord.js #11449, яке закрило issue discord.js #11419. Конвеєр голосового каналу: - Захоплення Discord PCM перетворюється на тимчасовий WAV-файл. - `tools.media.audio` обробляє STT, наприклад `openai/gpt-4o-mini-transcribe`. -- Транскрипт надсилається через вхідний потік Discord і маршрутизацію, тоді як LLM відповіді працює з політикою голосового виводу, яка приховує інструмент агента `tts` і просить повернути текст, оскільки голос Discord відповідає за фінальне TTS-відтворення. +- Транскрипт надсилається через вхідний обробник Discord і маршрутизацію, тоді як LLM відповіді працює з політикою голосового виводу, яка приховує інструмент агента `tts` і просить повернути текст, оскільки Discord voice відповідає за фінальне відтворення TTS. - `voice.model`, якщо задано, перевизначає лише LLM відповіді для цього ходу голосового каналу. - `voice.tts` об'єднується поверх `messages.tts`; отримане аудіо відтворюється в приєднаному каналі. @@ -1095,7 +1095,7 @@ Discord має дві окремі голосові поверхні: голос ### Голосові повідомлення -Голосові повідомлення Discord показують попередній перегляд хвильової форми й потребують аудіо OGG/Opus. OpenClaw автоматично генерує хвильову форму, але потребує `ffmpeg` і `ffprobe` на хості Gateway для перевірки та перетворення. +Голосові повідомлення Discord показують попередній перегляд хвильової форми й потребують аудіо OGG/Opus. OpenClaw генерує хвильову форму автоматично, але потребує `ffmpeg` і `ffprobe` на хості gateway для перевірки й перетворення. - Надайте **локальний шлях до файлу** (URL відхиляються). - Не вказуйте текстовий вміст (Discord відхиляє текст + голосове повідомлення в одному payload). @@ -1108,19 +1108,19 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a ## Усунення несправностей - + - увімкніть Message Content Intent - - увімкніть Server Members Intent, коли ви залежите від розпізнавання користувача/учасника - - перезапустіть Gateway після зміни intents + - увімкніть Server Members Intent, коли ви залежите від визначення користувача/учасника + - перезапустіть gateway після зміни intents - + - перевірте `groupPolicy` - перевірте список дозволених guild у `channels.discord.guilds` - - якщо існує map `channels` для guild, дозволено лише перелічені канали + - якщо існує map `channels` для guild, дозволені лише перелічені канали - перевірте поведінку `requireMention` і шаблони згадок Корисні перевірки: @@ -1133,29 +1133,29 @@ openclaw logs --follow - + Поширені причини: - `groupPolicy="allowlist"` без відповідного списку дозволених guild/channel - - `requireMention` налаштовано в неправильному місці (має бути під `channels.discord.guilds` або записом channel) - - відправника заблоковано списком дозволених `users` guild/channel + - `requireMention` налаштовано в неправильному місці (має бути під `channels.discord.guilds` або в записі каналу) + - відправника заблоковано списком дозволених `users` для guild/channel - + Типові журнали: - `Slow listener detected ...` - `stuck session: sessionKey=agent:...:discord:... state=processing ...` - Регулятори черги Discord Gateway: + Параметри черги gateway Discord: - один обліковий запис: `channels.discord.eventQueue.listenerTimeout` - кілька облікових записів: `channels.discord.accounts..eventQueue.listenerTimeout` - - це керує лише роботою listener Discord Gateway, а не часом життя ходу агента + - це керує лише роботою listener gateway Discord, а не тривалістю ходу агента - Discord не застосовує timeout, що належить каналу, до поставлених у чергу ходів агента. Listeners повідомлень передають роботу негайно, а поставлені в чергу запуски Discord зберігають порядок у межах сеансу, доки життєвий цикл сеансу/інструмента/runtime не завершиться або не скасує роботу. + Discord не застосовує тайм-аут, що належить каналу, до поставлених у чергу ходів агента. Message listeners передають роботу негайно, а поставлені в чергу запуски Discord зберігають порядок у межах сеансу, доки життєвий цикл сеансу/інструмента/runtime не завершиться або не перерве роботу. ```json5 { @@ -1175,50 +1175,50 @@ openclaw logs --follow - - OpenClaw отримує метадані Discord `/gateway/bot` перед підключенням. Тимчасові збої повертаються до типового URL Gateway Discord і мають обмеження частоти в журналах. + + OpenClaw отримує метадані Discord `/gateway/bot` перед підключенням. Тимчасові збої повертаються до типового URL gateway Discord і обмежуються за частотою в журналах. - Регулятори timeout метаданих: + Параметри тайм-ауту метаданих: - один обліковий запис: `channels.discord.gatewayInfoTimeoutMs` - кілька облікових записів: `channels.discord.accounts..gatewayInfoTimeoutMs` - - fallback env, коли config не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS` - - за замовчуванням: `30000` (30 секунд), максимум: `120000` + - запасний env, коли config не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS` + - типово: `30000` (30 секунд), максимум: `120000` - + Перевірки дозволів `channels status --probe` працюють лише для числових ID каналів. - Якщо ви використовуєте ключі slug, runtime-зіставлення все одно може працювати, але probe не може повністю перевірити дозволи. + Якщо ви використовуєте slug keys, runtime-зіставлення все одно може працювати, але probe не може повністю перевірити дозволи. - + - DM вимкнено: `channels.discord.dm.enabled=false` - політику DM вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`) - - очікування схвалення pairing у режимі `pairing` + - очікується підтвердження сполучення в режимі `pairing` - - За замовчуванням повідомлення, створені ботами, ігноруються. + + За замовчуванням повідомлення, створені ботом, ігноруються. - Якщо ви задаєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і списків дозволених, щоб уникнути циклічної поведінки. + Якщо ви задаєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і списків дозволів, щоб уникнути циклічної поведінки. Надавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота. - + - - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення прийому голосу Discord - - підтвердьте `channels.discord.voice.daveEncryption=true` (за замовчуванням) - - починайте з `channels.discord.voice.decryptionFailureTolerance=24` (upstream-значення за замовчуванням) і налаштовуйте лише за потреби + - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення приймання voice Discord + - підтвердьте `channels.discord.voice.daveEncryption=true` (типово) + - почніть із `channels.discord.voice.decryptionFailureTolerance=24` (upstream-типове значення) і налаштовуйте лише за потреби - стежте за журналами: - `discord voice: DAVE decrypt failures detected` - `discord voice: repeated decrypt failures; attempting rejoin` - - якщо збої тривають після автоматичного повторного приєднання, зберіть журнали й порівняйте з upstream-історією прийому DAVE в [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) і [discord.js #11449](https://github.com/discordjs/discord.js/pull/11449) + - якщо помилки тривають після автоматичного повторного приєднання, зберіть журнали й порівняйте з upstream-історією приймання DAVE у [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) і [discord.js #11449](https://github.com/discordjs/discord.js/pull/11449) @@ -1227,17 +1227,17 @@ openclaw logs --follow Основний довідник: [Довідник конфігурації - Discord](/uk/gateway/config-channels#discord). - + - запуск/автентифікація: `enabled`, `token`, `accounts.*`, `allowBots` - політика: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*` - команда: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*` - черга подій: `eventQueue.listenerTimeout` (бюджет listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency` -- метадані Gateway: `gatewayInfoTimeoutMs` +- метадані gateway: `gatewayInfoTimeoutMs` - відповідь/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - доставка: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage` - streaming: `streaming` (застарілий alias: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce` -- медіа/повтор: `mediaMaxMb` (обмежує вихідні завантаження Discord, за замовчуванням `100MB`), `retry` +- медіа/повтор: `mediaMaxMb` (обмежує вихідні завантаження Discord, типово `100MB`), `retry` - дії: `actions.*` - presence: `activity`, `status`, `activityType`, `activityUrl` - UI: `ui.components.accentColor` @@ -1245,20 +1245,20 @@ openclaw logs --follow -## Безпека та операції +## Безпека й операції -- Розглядайте токени ботів як секрети (`DISCORD_BOT_TOKEN` бажано використовувати в керованих середовищах). -- Надавайте Discord-дозволи за принципом найменших привілеїв. -- Якщо розгортання/стан команд застаріли, перезапустіть Gateway і повторно перевірте через `openclaw channels status --probe`. +- Обробляйте токени ботів як секрети (у керованих середовищах бажано використовувати `DISCORD_BOT_TOKEN`). +- Надавайте мінімально необхідні дозволи Discord. +- Якщо розгортання або стан команд застаріли, перезапустіть Gateway і повторно перевірте за допомогою `openclaw channels status --probe`. -## Пов'язане +## Пов’язане Сполучіть користувача Discord із Gateway. - Поведінка групового чату та списку дозволених. + Груповий чат і поведінка списку дозволених. Маршрутизуйте вхідні повідомлення до агентів. @@ -1266,10 +1266,10 @@ openclaw logs --follow Модель загроз і посилення захисту. - + Зіставляйте гільдії та канали з агентами. - - Поведінка нативних команд. + + Поведінка вбудованих команд. diff --git a/docs/uk/gateway/config-channels.md b/docs/uk/gateway/config-channels.md index 4a3a68d8e..61871a017 100644 --- a/docs/uk/gateway/config-channels.md +++ b/docs/uk/gateway/config-channels.md @@ -1,24 +1,24 @@ --- read_when: - Налаштування Plugin каналу (автентифікація, контроль доступу, кілька облікових записів) - - Усунення несправностей із ключами конфігурації для кожного каналу - - Аудит політики приватних повідомлень, групової політики або обмеження за згадками -summary: 'Конфігурація каналів: контроль доступу, створення пари, ключі для окремих каналів у Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо' + - Усунення неполадок із ключами конфігурації для кожного каналу + - Аудит політики прямих повідомлень, політики груп або контролю згадок +summary: 'Налаштування каналів: контроль доступу, сполучення, ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо' title: Конфігурація — канали x-i18n: - generated_at: "2026-05-01T11:02:08Z" + generated_at: "2026-05-01T11:53:39Z" model: gpt-5.5 provider: openai - source_hash: bcdc5ba7dd6633749eccf27fa20f8933049061e5f11efbf315c31cd2512e055d + source_hash: 5de8f93b0578e76d4e8cbe7d521bf536ad24df5aaf9a5bf613a7d8196024ae11 source_path: gateway/config-channels.md workflow: 16 --- -Ключі конфігурації для кожного каналу в `channels.*`. Охоплює доступ до DM і груп, -налаштування кількох облікових записів, обмеження за згадкою та ключі для кожного каналу Slack, Discord, -Telegram, WhatsApp, Matrix, iMessage та інших вбудованих plugin каналів. +Ключі конфігурації окремих каналів у `channels.*`. Охоплює доступ до DM і груп, +налаштування кількох акаунтів, вимогу згадки та ключі окремих каналів для Slack, Discord, +Telegram, WhatsApp, Matrix, iMessage та інших вбудованих channel plugins. -Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див. +Для агентів, інструментів, середовища виконання gateway та інших ключів верхнього рівня див. [Довідник конфігурації](/uk/gateway/configuration-reference). ## Канали @@ -29,28 +29,28 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих plugin Усі канали підтримують політики DM і політики груп: -| Політика DM | Поведінка | +| Політика DM | Поведінка | | ------------------- | --------------------------------------------------------------- | -| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | -| `allowlist` | Лише відправники в `allowFrom` (або в paired allow store) | -| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) | -| `disabled` | Ігнорувати всі вхідні DM | +| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | +| `allowlist` | Лише відправники в `allowFrom` (або у сховищі дозволених сполучень) | +| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) | +| `disabled` | Ігнорувати всі вхідні DM | -| Політика групи | Поведінка | +| Політика груп | Поведінка | | --------------------- | ------------------------------------------------------ | -| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist | -| `open` | Обійти allowlist груп (обмеження за згадкою все одно застосовується) | -| `disabled` | Блокувати всі повідомлення груп/кімнат | +| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist | +| `open` | Обійти allowlist груп (вимога згадки все одно діє) | +| `disabled` | Блокувати всі повідомлення груп/кімнат | `channels.defaults.groupPolicy` задає типове значення, коли `groupPolicy` провайдера не встановлено. -Коди сполучення спливають через 1 годину. Очікувані запити на сполучення DM обмежені **3 на канал**. -Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску. +Коди сполучення спливають через 1 годину. Очікувані запити сполучення DM обмежено **3 на канал**. +Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп у runtime повертається до `allowlist` (відмова за замовчуванням) із попередженням під час запуску. ### Перевизначення моделі каналу -Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, заданого через `/model`). +Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналу застосовується, коли сеанс ще не має перевизначення моделі (наприклад, заданого через `/model`). ```json5 { @@ -71,9 +71,9 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих plugin } ``` -### Типові значення каналів і Heartbeat +### Типові параметри каналу та Heartbeat -Використовуйте `channels.defaults` для спільної політики груп і поведінки Heartbeat між провайдерами: +Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat між провайдерами: ```json5 { @@ -91,15 +91,15 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих plugin } ``` -- `channels.defaults.groupPolicy`: резервна політика групи, коли `groupPolicy` на рівні провайдера не встановлено. -- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включає весь контекст цитат/тредів/історії), `allowlist` (включає лише контекст від відправників з allowlist), `allowlist_quote` (те саме, що allowlist, але зберігає явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`. -- `channels.defaults.heartbeat.showOk`: включати справні стани каналів у вивід Heartbeat. -- `channels.defaults.heartbeat.showAlerts`: включати погіршені/помилкові стани у вивід Heartbeat. +- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні провайдера не встановлено. +- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включає весь контекст цитат/тредів/історії), `allowlist` (включає лише контекст від дозволених відправників), `allowlist_quote` (те саме, що allowlist, але зберігає явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: включати справні статуси каналів у вивід Heartbeat. +- `channels.defaults.heartbeat.showAlerts`: включати погіршені/помилкові статуси у вивід Heartbeat. - `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора. ### WhatsApp -WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує пов’язана сесія. +WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує пов’язаний сеанс. ```json5 { @@ -139,7 +139,7 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` - + ```json5 { @@ -157,10 +157,10 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Вихідні команди типово використовують обліковий запис `default`, якщо він є; інакше перший налаштований ID облікового запису (відсортований). -- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли збігається з налаштованим ID облікового запису. -- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується `openclaw doctor` до `whatsapp/default`. -- Перевизначення для облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. +- Вихідні команди типово використовують акаунт `default`, якщо він існує; інакше перший налаштований ID акаунта (за сортуванням). +- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового акаунта, коли збігається з налаштованим ID акаунта. +- Застарілий каталог автентифікації Baileys для одного акаунта мігрується командою `openclaw doctor` у `whatsapp/default`. +- Перевизначення для акаунта: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -219,12 +219,12 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символічні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервом для типового облікового запису. -- `apiRoot` — це лише корінь Telegram Bot API. Використовуйте `https://api.telegram.org` або власний self-hosted/proxy корінь, а не `https://api.telegram.org/bot`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot`. -- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, коли збігається з налаштованим ID облікового запису. -- У налаштуваннях із кількома обліковими записами (2+ ID облікових записів) задайте явний типовий (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний. +- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символічні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового акаунта. +- `apiRoot` — це лише корінь Telegram Bot API. Використовуйте `https://api.telegram.org` або ваш самостійно розгорнутий/проксійований корінь, а не `https://api.telegram.org/bot`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot`. +- Необов’язковий `channels.telegram.defaultAccount` перевизначає типовий вибір акаунта, коли збігається з налаштованим ID акаунта. +- У налаштуваннях із кількома акаунтами (2+ ID акаунтів) задайте явний типовий акаунт (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний. - `configWrites: false` блокує записи конфігурації, ініційовані Telegram (міграції ID супергруп, `/config set|unset`). -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантику полів наведено в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). - Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах). - Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry). @@ -330,37 +330,37 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для стандартного облікового запису. +- Токен: `channels.discord.token`, із `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням. - Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. -- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з ідентифікатором налаштованого облікового запису. -- Використовуйте `user:` (DM) або `channel:` (канал гільдії) для цілей доставки; голі числові ID відхиляються. -- Слаги гільдій пишуться малими літерами із заміною пробілів на `-`; ключі каналів використовують назву зі слагом (без `#`). Надавайте перевагу ID гільдій. +- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з ідентифікатором налаштованого облікового запису. +- Використовуйте `user:` (DM) або `channel:` (канал guild) для цілей доставки; прості числові ID відхиляються. +- Слаги guild записуються малими літерами із заміною пробілів на `-`; ключі каналів використовують назву у форматі слага (без `#`). Надавайте перевагу ID guild. - Повідомлення, створені ботами, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються). -- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (крім @everyone/@here). -- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення, навіть якщо вони мають менше ніж 2000 символів. -- `channels.discord.threadBindings` керує маршрутизацією Discord, прив’язаною до потоків: - - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до потоку (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація) +- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here). +- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення навіть тоді, коли вони мають менше ніж 2000 символів. +- `channels.discord.threadBindings` керує маршрутизацією Discord, прив’язаною до threads: + - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до threads (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація) - `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає) - `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає) - - `spawnSubagentSessions`: opt-in перемикач для автоматичного створення/прив’язування потоку `sessions_spawn({ thread: true })` -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі прив’язки ACP для каналів і потоків (використовуйте ID каналу/потоку в `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). -- `channels.discord.ui.components.accentColor` задає колір акценту для контейнерів компонентів Discord v2. -- `channels.discord.voice` вмикає розмови голосових каналів Discord і необов’язкові перевизначення автоприєднання + LLM + TTS. -- `channels.discord.voice.model` необов’язково перевизначає модель LLM, що використовується для відповідей у голосовому каналі Discord. + - `spawnSubagentSessions`: перемикач добровільного ввімкнення для автоматичного створення/прив’язування threads через `sessions_spawn({ thread: true })` +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і threads (використовуйте ID каналу/thread у `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів Discord components v2. +- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкове автоприєднання + перевизначення LLM + TTS. Текстові конфігурації Discord типово залишають голос вимкненим; задайте `channels.discord.voice.enabled=true`, щоб увімкнути. +- `channels.discord.voice.model` необов’язково перевизначає модель LLM, яка використовується для відповідей у голосових каналах Discord. - `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (типово `true` і `24`). - `channels.discord.voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб автоприєднання (типово `30000`). -- `channels.discord.voice.reconnectGraceMs` керує тим, скільки часу від’єднана голосова сесія може входити в сигналізацію повторного підключення, перш ніж OpenClaw її знищить (типово `15000`). -- OpenClaw додатково намагається відновити отримання голосу, виходячи з голосової сесії та повторно приєднуючись до неї після повторних помилок розшифрування. -- `channels.discord.streaming` є канонічним ключем режиму потоку. Застарілі значення `streamMode` і булеві значення `streaming` автоматично мігруються. -- `channels.discord.autoPresence` відображає доступність runtime у присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. -- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає зіставлення змінних імен/тегів (режим аварійної сумісності). -- `channels.discord.execApprovals`: нативна для Discord доставка схвалень exec і авторизація схвалювачів. - - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо опущено, використовується резервний варіант `commands.ownerAllowFrom`. - - `agentFilter`: необов’язковий allowlist ID агентів. Опустіть, щоб пересилати схвалення для всіх агентів. +- `channels.discord.voice.reconnectGraceMs` керує тим, скільки часу від’єднана голосова сесія може витратити на перехід у сигналізацію повторного підключення, перш ніж OpenClaw її знищить (типово `15000`). +- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосової сесії та повторно приєднуючись після повторюваних помилок розшифрування. +- `channels.discord.streaming` є канонічним ключем режиму потоку. Застарілі значення `streamMode` і булеві значення `streaming` мігруються автоматично. +- `channels.discord.autoPresence` відображає доступність runtime на присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. +- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваним іменем/тегом (режим сумісності на випадок критичної потреби). +- `channels.discord.execApprovals`: нативна для Discord доставка затверджень exec і авторизація затверджувачів. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі затвердження exec активуються, коли затверджувачів можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Discord, яким дозволено затверджувати запити exec. Якщо пропущено, використовується резервний `commands.ownerAllowFrom`. + - `agentFilter`: необов’язковий allowlist ID агентів. Пропустіть, щоб пересилати затвердження для всіх агентів. - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити схвалення. `"dm"` (типово) надсилає в DM схвалювачів, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва. Коли ціль містить `"channel"`, кнопки можуть використовувати лише визначені схвалювачі. - - `cleanupAfterResolve`: коли `true`, видаляє DM схвалень після схвалення, відхилення або тайм-ауту. + - `target`: куди надсилати запити на затвердження. `"dm"` (типово) надсилає в DM затверджувачів, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва. Коли target містить `"channel"`, кнопки можуть використовувати лише визначені затверджувачі. + - `cleanupAfterResolve`: коли `true`, видаляє DM із затвердженнями після затвердження, відхилення або тайм-ауту. **Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень). @@ -393,11 +393,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- JSON облікового запису сервісу: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`). -- SecretRef облікового запису сервісу також підтримується (`serviceAccountRef`). -- Резервні варіанти env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. +- JSON сервісного облікового запису: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`). +- SecretRef сервісного облікового запису також підтримується (`serviceAccountRef`). +- Резервні env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. - Використовуйте `spaces/` або `users/` для цілей доставки. -- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення змінного principal електронної пошти (режим аварійної сумісності). +- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення змінюваного email principal (режим сумісності на випадок критичної потреби). ### Slack @@ -469,43 +469,43 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резервний env для стандартного облікового запису). -- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для кожного облікового запису). +- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env облікового запису за замовчуванням). +- **HTTP mode** потребує `botToken` плюс `signingSecret` (у root або для окремого облікового запису). - `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API Bolt receiver. Використовуйте це лише під час дослідження тайм-ауту ping/pong або поведінки застарілого websocket. -- `botToken`, `appToken`, `signingSecret` і `userToken` приймають рядки plaintext - або об’єкти SecretRef. -- Знімки облікових записів Slack відкривають поля джерела/статусу для кожних облікових даних, такі як - `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в режимі HTTP +- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext + рядки або об’єкти SecretRef. +- Знімки облікових записів Slack відкривають поля джерела/статусу для кожних облікових даних, як-от + `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, у режимі HTTP, `signingSecretStatus`. `configured_unavailable` означає, що обліковий запис - налаштовано через SecretRef, але поточний шлях команди/runtime не зміг + налаштований через SecretRef, але поточний шлях command/runtime не зміг визначити значення секрету. - `configWrites: false` блокує записи конфігурації, ініційовані Slack. -- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з ідентифікатором налаштованого облікового запису. -- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним потоковим транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються. +- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з ідентифікатором налаштованого облікового запису. +- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним streaming transport Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` мігруються автоматично. - Використовуйте `user:` (DM) або `channel:` для цілей доставки. **Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`). -**Ізоляція сесій потоків:** `thread.historyScope` діє для кожного потоку (типово) або спільно для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові потоки. +**Ізоляція сесій thread:** `thread.historyScope` є окремим для кожного thread (типово) або спільним у межах каналу. `thread.inheritParent` копіює transcript батьківського каналу в нові threads. -- Нативний streaming Slack разом зі статусом потоку в стилі помічника Slack "is typing..." потребує цільового потоку відповіді. DM верхнього рівня типово залишаються поза потоком, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду в стилі потоку. -- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте emoji shortcode Slack, наприклад `"hourglass_flowing_sand"`. -- `channels.slack.execApprovals`: нативна для Slack доставка схвалень exec і авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). +- Нативний streaming Slack плюс thread-статус у стилі Slack assistant "is typing..." потребують цільового thread для відповіді. DM верхнього рівня типово залишаються поза thread, тому використовують `typingReaction` або звичайну доставку замість preview у стилі thread. +- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode emoji Slack, наприклад `"hourglass_flowing_sand"`. +- `channels.slack.execApprovals`: нативна для Slack доставка затверджень exec і авторизація затверджувачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). | Група дій | Типово | Примітки | | ------------ | ------- | ---------------------- | -| reactions | увімкнено | Реагувати + перелічувати реакції | +| reactions | увімкнено | Реагувати + список реакцій | | messages | увімкнено | Читати/надсилати/редагувати/видаляти | -| pins | увімкнено | Закріплювати/відкріплювати/перелічувати | +| pins | увімкнено | Закріпити/відкріпити/показати список | | memberInfo | увімкнено | Інформація про учасника | | emojiList | увімкнено | Список користувацьких emoji | ### Mattermost -Mattermost постачається як bundled Plugin у поточних випусках OpenClaw. Старіші або -кастомні збірки можуть установити поточний npm-пакет за допомогою +Mattermost постачається як вбудований Plugin у поточних релізах OpenClaw. Старіші або +кастомні збірки можуть встановити поточний npm-пакет за допомогою `openclaw plugins install @openclaw/mattermost`; якщо npm повідомляє, що -пакет, яким володіє OpenClaw, застарілий, використовуйте bundled Plugin або локальний checkout +пакет, яким володіє OpenClaw, deprecated, використовуйте вбудований Plugin або локальний checkout до публікації новішого npm-пакета. ```json5 @@ -536,23 +536,18 @@ Mattermost постачається як bundled Plugin у поточних ви } ``` -Режими чату: `oncall` (відповідати на @-згадку, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера). +Режими чату: `oncall` (відповідати на @-згадку, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера). Коли нативні команди Mattermost увімкнені: -- `commands.callbackPath` має бути шляхом (наприклад, `/api/channels/mattermost/command`), а не повною URL-адресою. -- `commands.callbackUrl` має вказувати на endpoint OpenClaw Gateway і бути доступним із сервера Mattermost. -- Нативні slash callback автентифікуються токенами окремих команд, які Mattermost повертає - під час реєстрації slash command. Якщо реєстрація завершується невдало або жодні - команди не активовано, OpenClaw відхиляє callback із - `Unauthorized: invalid command token.` -- Для приватних/tailnet/внутрішніх callback-хостів Mattermost може вимагати, - щоб `ServiceSettings.AllowedUntrustedInternalConnections` включав callback-хост/домен. - Використовуйте значення хоста/домену, а не повні URL-адреси. -- `channels.mattermost.configWrites`: дозволити або заборонити ініційовані Mattermost записи конфігурації. +- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою. +- `commands.callbackUrl` має вказувати на endpoint Gateway OpenClaw і бути доступним із сервера Mattermost. +- Нативні slash callbacks автентифікуються за допомогою токенів для кожної команди, які Mattermost повертає під час реєстрації slash command. Якщо реєстрація завершується невдало або жодні команди не активовано, OpenClaw відхиляє callbacks з повідомленням `Unauthorized: invalid command token.` +- Для приватних/tailnet/внутрішніх хостів callback Mattermost може вимагати, щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен callback. Використовуйте значення хоста/домену, а не повні URL-адреси. +- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost. - `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах. -- `channels.mattermost.groups..requireMention`: перевизначення перевірки згадок для окремого каналу (`"*"` для типового значення). -- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта. +- `channels.mattermost.groups..requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для типового значення). +- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з id налаштованого облікового запису. ### Signal @@ -575,13 +570,13 @@ Mattermost постачається як bundled Plugin у поточних ви **Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`). -- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності акаунта Signal. -- `channels.signal.configWrites`: дозволити або заборонити ініційовані Signal записи конфігурації. -- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта. +- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal. +- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Signal. +- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з id налаштованого облікового запису. ### BlueBubbles -BlueBubbles — рекомендований шлях iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`). +BlueBubbles — рекомендований шлях iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`). ```json5 { @@ -596,14 +591,14 @@ BlueBubbles — рекомендований шлях iMessage (на базі Pl } ``` -- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте handle BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). -- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles). +- Основні ключові шляхи, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з id налаштованого облікового запису. +- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сесій ACP. Використовуйте handle BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- Повна конфігурація каналу BlueBubbles задокументована в [BlueBubbles](/uk/channels/bluebubbles). ### iMessage -OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон або порт не потрібні. +OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Daemon або port не потрібні. ```json5 { @@ -627,17 +622,17 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а } ``` -- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта. +- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з id налаштованого облікового запису. -- Потрібен Full Disk Access до Messages DB. -- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів. -- `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP. -- `attachmentRoots` і `remoteAttachmentRoots` обмежують вхідні шляхи вкладень (типово: `/Users/*/Library/Messages/Attachments`). -- SCP використовує сувору перевірку host key, тому переконайтеся, що ключ relay-хоста вже існує в `~/.ssh/known_hosts`. -- `channels.imessage.configWrites`: дозволити або заборонити ініційовані iMessage записи конфігурації. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). +- Потребує Full Disk Access до Messages DB. +- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб вивести список чатів. +- `cliPath` може вказувати на SSH wrapper; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP. +- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`). +- SCP використовує сувору перевірку host key, тому переконайтеся, що ключ хоста ретранслятора вже існує в `~/.ssh/known_hosts`. +- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage. +- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сесій ACP. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). - + ```bash #!/usr/bin/env bash @@ -648,7 +643,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix працює на базі Plugin і налаштовується в `channels.matrix`. +Matrix працює на основі Plugin і налаштовується в `channels.matrix`. ```json5 { @@ -679,24 +674,24 @@ Matrix працює на базі Plugin і налаштовується в `cha ``` - Автентифікація за токеном використовує `accessToken`; автентифікація за паролем використовує `userId` + `password`. -- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані акаунти можуть перевизначити його за допомогою `channels.matrix.accounts..proxy`. -- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і це мережеве явне ввімкнення є незалежними елементами керування. -- `channels.matrix.defaultAccount` вибирає бажаний акаунт у конфігураціях із кількома акаунтами. -- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`. -- `channels.matrix.execApprovals`: вбудована в Matrix доставка підтверджень exec і авторизація тих, хто підтверджує. - - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі підтвердження exec активуються, коли тих, хто підтверджує, можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ідентифікатори користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено підтверджувати запити exec. - - `agentFilter`: необов’язковий allowlist ідентифікаторів агентів. Не вказуйте, щоб пересилати підтвердження для всіх агентів. - - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex). - - `target`: куди надсилати запити на підтвердження. `"dm"` (типово), `"channel"` (кімната-джерело) або `"both"`. - - Перевизначення для окремого акаунта: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовується за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату. -- Проби статусу Matrix і live-пошуки в каталозі використовують ту саму політику проксі, що й runtime-трафік. -- Повну конфігурацію Matrix, правила націлювання та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix). +- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначити це за допомогою `channels.matrix.accounts..proxy`. +- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeservers. `proxy` і цей network opt-in є незалежними елементами керування. +- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у налаштуваннях із кількома обліковими записами. +- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені rooms і нові запрошення у стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`. +- `channels.matrix.execApprovals`: нативна для Matrix доставка exec approvals і авторизація approver. + - `enabled`: `true`, `false` або `"auto"` (типово). В auto mode exec approvals активуються, коли approvers можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: Matrix user IDs (наприклад `@owner:example.org`), яким дозволено схвалювати exec requests. + - `agentFilter`: необов’язковий agent ID allowlist. Пропустіть, щоб пересилати approvals для всіх agents. + - `sessionFilter`: необов’язкові шаблони session key (substring або regex). + - `target`: куди надсилати approval prompts. `"dm"` (типово), `"channel"` (originating room) або `"both"`. + - Перевизначення для окремого облікового запису: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` керує тим, як Matrix DMs групуються в сесії: `per-user` (типово) спільно використовує routed peer, тоді як `per-room` ізолює кожну DM room. +- Status probes Matrix і live directory lookups використовують ту саму політику proxy, що й runtime traffic. +- Повна конфігурація Matrix, правила targeting і приклади налаштування задокументовані в [Matrix](/uk/channels/matrix). ### Microsoft Teams -Microsoft Teams працює на базі Plugin і налаштовується в `channels.msteams`. +Microsoft Teams працює на основі Plugin і налаштовується в `channels.msteams`. ```json5 { @@ -711,12 +706,12 @@ Microsoft Teams працює на базі Plugin і налаштовуєтьс } ``` -- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`. -- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремої команди/каналу) задокументовано в [Microsoft Teams](/uk/channels/msteams). +- Основні ключові шляхи, описані тут: `channels.msteams`, `channels.msteams.configWrites`. +- Повна конфігурація Teams (credentials, Webhook, DM/group policy, перевизначення для окремих team/каналів) задокументована в [Microsoft Teams](/uk/channels/msteams). ### IRC -IRC працює на базі Plugin і налаштовується в `channels.irc`. +IRC працює на основі Plugin і налаштовується в `channels.irc`. ```json5 { @@ -737,13 +732,13 @@ IRC працює на базі Plugin і налаштовується в `channe } ``` -- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта. -- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc). +- Основні ключові шляхи, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з id налаштованого облікового запису. +- Повна конфігурація каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументована в [IRC](/uk/channels/irc). -### Кілька акаунтів (усі канали) +### Кілька облікових записів (усі канали) -Запускайте кілька акаунтів для кожного каналу (кожен зі своїм `accountId`): +Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`): ```json5 { @@ -764,34 +759,34 @@ IRC працює на базі Plugin і налаштовується в `channe } ``` -- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація). -- Env-токени застосовуються лише до **типового** акаунта. -- Базові налаштування каналу застосовуються до всіх акаунтів, якщо їх не перевизначено для окремого акаунта. -- Використовуйте `bindings[].match.accountId`, щоб спрямувати кожен акаунт до іншого агента. -- Якщо ви додаєте нетиповий акаунт через `openclaw channels add` (або onboarding каналу), коли все ще використовуєте конфігурацію каналу верхнього рівня для одного акаунта, OpenClaw спочатку переносить значення верхнього рівня одного акаунта, прив’язані до акаунта, у мапу акаунтів каналу, щоб початковий акаунт продовжив працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. -- Наявні прив’язки лише каналу (без `accountId`) продовжують відповідати типовому акаунту; прив’язки з областю акаунта залишаються необов’язковими. -- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня одного акаунта, прив’язані до акаунта, у підвищений акаунт, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- `default` використовується, коли `accountId` пропущено (CLI + routing). +- Env tokens застосовуються лише до **типового** облікового запису. +- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремого облікового запису. +- Використовуйте `bindings[].match.accountId`, щоб спрямувати кожен обліковий запис до іншого agent. +- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або channel onboarding), поки все ще використовуєте конфігурацію каналу верхнього рівня з одним обліковим записом, OpenClaw спочатку переносить прив’язані до облікового запису значення верхнього рівня для одного облікового запису в map облікових записів каналу, щоб оригінальний обліковий запис продовжив працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- Наявні прив’язки лише до каналу (без `accountId`) продовжують відповідати типовому обліковому запису; прив’язки з областю облікового запису залишаються необов’язковими. +- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи прив’язані до облікового запису значення верхнього рівня для одного облікового запису в підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. ### Інші канали Plugin -Багато каналів Plugin налаштовуються як `channels.` і задокументовані на своїх спеціальних сторінках каналів (наприклад, Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). +Багато каналів Plugin налаштовуються як `channels.` і задокументовані на своїх спеціальних сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). Дивіться повний індекс каналів: [Канали](/uk/channels). -### Перевірка згадок у груповому чаті +### Mention gating у груповому чаті -Групові повідомлення типово **вимагають згадки** (згадка в метаданих або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. +Для групових повідомлень типово **потрібна згадка** (metadata mention або безпечні regex patterns). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage. -Видимі відповіді керуються окремо. Групові/канальні кімнати типово мають `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе одно обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли потрібна застаріла поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`. +Видимі відповіді керуються окремо. Для group/channel rooms типово задано `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе ще обробляє turn, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у room потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли потрібна legacy поведінка, за якої звичайні відповіді публікуються назад у room. Щоб застосувати таку саму поведінку видимих відповідей лише через tool і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`. -Якщо інструмент повідомлень недоступний за активною політикою інструментів, OpenClaw переходить до автоматичних видимих відповідей замість тихого приглушення відповіді. `openclaw doctor` попереджає про цю невідповідність. +Якщо message tool недоступний за активною tool policy, OpenClaw повертається до автоматичних видимих відповідей замість того, щоб мовчки придушувати response. `openclaw doctor` попереджає про цю невідповідність. -Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапуск потрібен лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в розгортанні. +Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапуск потрібен лише тоді, коли file watching або config reload вимкнено в deployment. **Типи згадок:** -- **Згадки в метаданих**: Нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp. -- **Текстові шаблони**: Безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються. -- Перевірка згадок застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон). +- **Metadata mentions**: нативні platform @-mentions. Ігноруються в режимі WhatsApp self-chat. +- **Text patterns**: безпечні regex patterns у `agents.list[].groupChat.mentionPatterns`. Недійсні patterns і небезпечне nested repetition ігноруються. +- Mention gating застосовується лише тоді, коли виявлення можливе (native mentions або принаймні один pattern). ```json5 { @@ -808,11 +803,11 @@ Gateway гаряче перезавантажує конфігурацію `mess } ``` -`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути. +`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначити його через `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути. -`messages.visibleReplies` — це глобальне значення за замовчуванням для вихідних ходів; `messages.groupChat.visibleReplies` перевизначає його для вихідних ходів у групах/каналах. Списки дозволених каналів і перевірка згадок усе ще визначають, чи буде хід оброблено. +`messages.visibleReplies` — це глобальне значення за замовчуванням для вихідних turn; `messages.groupChat.visibleReplies` перевизначає його для вихідних turn у групах/каналах. Списки дозволених каналів і перевірка згадок усе ще визначають, чи буде turn оброблено. -#### Ліміти історії особистих повідомлень +#### Ліміти історії DM ```json5 { @@ -827,13 +822,13 @@ Gateway гаряче перезавантажує конфігурацію `mess } ``` -Порядок визначення: перевизначення для окремого особистого повідомлення → стандартне значення провайдера → без ліміту (усе зберігається). +Розв’язання: перевизначення для окремого DM → значення провайдера за замовчуванням → без ліміту (зберігається все). Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. -#### Режим чату із самим собою +#### Режим чату із собою -Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із самим собою (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): +Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із собою (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): ```json5 { @@ -884,29 +879,29 @@ Gateway гаряче перезавантажує конфігурацію `mess - Цей блок налаштовує поверхні команд. Поточний вбудований і комплектний каталог команд див. у [Slash Commands](/uk/tools/slash-commands). -- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на відповідних сторінках каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands). +- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, якими володіють канали/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands). - Текстові команди мають бути **окремими** повідомленнями з початковим `/`. -- `native: "auto"` вмикає нативні команди для Discord/Telegram і залишає Slack вимкненим. -- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram і залишає Slack вимкненим. +- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим. +- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, залишає Slack вимкненим. - Перевизначення для окремого каналу: `channels.discord.commands.native` (булеве значення або `"auto"`). `false` очищає раніше зареєстровані команди. -- Перевизначайте реєстрацію нативних Skills для окремого каналу через `channels..commands.nativeSkills`. -- `channels.telegram.customCommands` додає додаткові пункти меню Telegram-бота. -- `bash: true` вмикає `! ` для shell хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`. -- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; `/config show` лише для читання залишається доступним звичайним клієнтам operator з областю запису. -- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, керованого OpenClaw, у `mcp.servers`. -- `plugins: true` вмикає `/plugins` для пошуку Plugin, установлення та керування ввімкненням/вимкненням. -- `channels..configWrites` керує змінами конфігурації для окремого каналу (за замовчуванням: true). -- Для каналів із кількома обліковими записами `channels..accounts..configWrites` також керує записами, націленими на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`). +- Перевизначте реєстрацію нативних Skills для окремого каналу через `channels..commands.nativeSkills`. +- `channels.telegram.customCommands` додає додаткові пункти меню бота Telegram. +- `bash: true` вмикає `! ` для оболонки хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.`. +- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів Gateway `chat.send` сталі записи `/config set|unset` також потребують `operator.admin`; доступна лише для читання команда `/config show` лишається доступною для звичайних операторських клієнтів з областю запису. +- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, яким керує OpenClaw, у `mcp.servers`. +- `plugins: true` вмикає `/plugins` для пошуку Plugin, встановлення та керування ввімкненням/вимкненням. +- `channels..configWrites` обмежує мутації конфігурації для окремого каналу (за замовчуванням: true). +- Для каналів із кількома обліковими записами `channels..accounts..configWrites` також обмежує записи, що націлені на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`). - `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. За замовчуванням: `true`. -- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він окремий від `allowFrom`. +- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів, доступних лише власнику. Він відокремлений від `allowFrom`. - `ownerDisplay: "hash"` хешує ідентифікатори власників у системному prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням. -- `allowFrom` задається для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються). +- `allowFrom` задається для кожного провайдера. Коли встановлено, це **єдине** джерело авторизації (списки дозволених каналів/спарювання та `useAccessGroups` ігноруються). - `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено. - Мапа документації команд: - вбудований і комплектний каталог: [Slash Commands](/uk/tools/slash-commands) - поверхні команд, специфічні для каналів: [Канали](/uk/channels) - команди QQ Bot: [QQ Bot](/uk/channels/qqbot) - - команди сполучення: [Сполучення](/uk/channels/pairing) + - команди спарювання: [Спарювання](/uk/channels/pairing) - команда картки LINE: [LINE](/uk/channels/line) - Dreaming пам’яті: [Dreaming](/uk/concepts/dreaming)