diff --git a/docs/uk/channels/discord.md b/docs/uk/channels/discord.md
index d4fc63f32..9362217b6 100644
--- a/docs/uk/channels/discord.md
+++ b/docs/uk/channels/discord.md
@@ -1,72 +1,72 @@
---
read_when:
- Робота над функціями каналу Discord
-summary: Статус підтримки бота Discord, можливості та налаштування
+summary: Стан підтримки бота Discord, можливості та конфігурація
title: Discord
x-i18n:
- generated_at: "2026-05-01T10:23:14Z"
+ generated_at: "2026-05-01T11:01:48Z"
model: gpt-5.5
provider: openai
- source_hash: 1d0d40792bf83a8d44dba3c70a94d888fb57af25bf240185265fd3a5edb207cb
+ source_hash: 43fdd86a45a815cfef7ab71746c9ca5966f76df3c9da4f18204bf5d0f59f6352
source_path: channels/discord.md
workflow: 16
---
-Готово для DM і каналів гільдій через офіційний Discord Gateway.
+Готово для приватних повідомлень і каналів серверів через офіційний Discord Gateway.
-
- DM у 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** (рекомендовано; обов’язково для allowlists ролей і зіставлення імен з ID)
- - **Presence Intent** (необов’язково; потрібен лише для оновлень присутності)
+ - **Message Content Intent** (обов'язково)
+ - **Server Members Intent** (рекомендовано; обов'язково для списків дозволених ролей і зіставлення імен з ID)
+ - **Presence Intent** (необов'язково; потрібно лише для оновлень присутності)
- Прокрутіть назад угору на сторінці **Bot** і натисніть **Reset Token**.
+ Прокрутіть угору на сторінці **Bot** і натисніть **Reset Token**.
- Попри назву, це створює ваш перший токен — нічого не "скидається."
+ Попри назву, це створює ваш перший токен — нічого не "скидається".
- Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він знадобиться вам незабаром.
+ Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він невдовзі знадобиться.
-
- Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з правильними дозволами, щоб додати бота на свій сервер.
+
+ Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з потрібними дозволами, щоб додати бота на свій сервер.
- Прокрутіть униз до **OAuth2 URL Generator** і увімкніть:
+ Прокрутіть до **OAuth2 URL Generator** і ввімкніть:
- `bot`
- `applications.commands`
- Нижче з’явиться розділ **Bot Permissions**. Увімкніть щонайменше:
+ Нижче з'явиться розділ **Bot Permissions**. Увімкніть щонайменше:
**General Permissions**
- View Channels
@@ -75,33 +75,33 @@ 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**
2. Клацніть правою кнопкою миші **значок сервера** на бічній панелі → **Copy Server ID**
3. Клацніть правою кнопкою миші **власний аватар** → **Copy User ID**
- Збережіть свої **Server ID** і **User ID** поруч із Bot Token — на наступному кроці ви надішлете всі три до OpenClaw.
+ Збережіть свої **Server ID** і **User ID** разом із Bot Token — на наступному кроці ви надішлете всі три в OpenClaw.
-
- Щоб зв’язування працювало, Discord має дозволяти вашому боту надсилати вам DM. Клацніть правою кнопкою миші **значок сервера** → **Privacy Settings** → увімкніть **Direct Messages**.
+
+ Щоб сполучення працювало, Discord має дозволити вашому боту надсилати вам приватні повідомлення. Клацніть правою кнопкою миші **значок сервера** → **Privacy Settings** → увімкніть **Direct Messages**.
- Це дає учасникам сервера (зокрема ботам) змогу надсилати вам DM. Залиште це ввімкненим, якщо хочете використовувати DM Discord з OpenClaw. Якщо ви плануєте використовувати лише канали гільдії, можете вимкнути DM після зв’язування.
+ Це дає змогу учасникам сервера (зокрема ботам) надсилати вам приватні повідомлення. Залиште це ввімкненим, якщо хочете використовувати приватні повідомлення Discord з OpenClaw. Якщо ви плануєте використовувати лише канали сервера, можете вимкнути приватні повідомлення після сполучення.
-
- Токен вашого бота Discord є секретом (як пароль). Задайте його на машині, де працює OpenClaw, перш ніж писати своєму агенту.
+
+ Токен вашого бота Discord є секретом (як пароль). Установіть його на машині, де працює OpenClaw, перш ніж писати своєму агенту.
```bash
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
@@ -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 / config.
- > "I already set my Discord bot token in config. Please finish Discord setup with User ID `` and Server ID ``."
+ > "Я вже встановив токен свого бота Discord у конфігурації. Заверши налаштування Discord з User ID `` і Server ID ``."
- Якщо ви віддаєте перевагу конфігурації на основі файлів, задайте:
+ Якщо ви віддаєте перевагу файловій конфігурації, установіть:
```json5
{
@@ -152,15 +152,15 @@ openclaw gateway
}
```
- Env fallback для стандартного акаунта:
+ Резервне 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 запрацює, а потім надішліть DM своєму боту в Discord. Він відповість кодом зв’язування.
+
+ Зачекайте, доки Gateway запрацює, а потім надішліть боту приватне повідомлення в Discord. Він відповість кодом сполучення.
- Надішліть код зв’язування своєму агенту у вашому наявному каналі:
+ Надішліть код сполучення своєму агенту в наявному каналі:
- > "Approve this Discord pairing code: ``"
+ > "Підтвердь цей код сполучення Discord: ``"
@@ -206,30 +206,30 @@ openclaw pairing approve discord
- Коди зв’язування спливають через 1 годину.
+ Коди сполучення спливають через 1 годину.
- Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через DM.
+ Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через приватні повідомлення.
-Розв’язання токена враховує акаунт. Значення токена з конфігурації мають перевагу над env fallback. `DISCORD_BOT_TOKEN` використовується лише для стандартного акаунта.
-Якщо два ввімкнені акаунти Discord розв’язуються в той самий токен бота, OpenClaw запускає лише один монітор Gateway для цього токена. Токен із конфігурації має перевагу над стандартним env fallback; інакше перший увімкнений акаунт перемагає, а дублікат акаунта повідомляється як вимкнений.
-Для розширених вихідних викликів (інструмент повідомлень/дії з каналами) явний `token` для кожного виклику використовується саме для цього виклику. Це стосується дій надсилання та читання/перевірки (наприклад, read/search/fetch/thread/pins/permissions). Політика акаунта й налаштування повторних спроб усе ще беруться з вибраного акаунта в активному runtime snapshot.
+Розв'язання токенів враховує обліковий запис. Значення токена в конфігурації мають пріоритет над резервним env-значенням. `DISCORD_BOT_TOKEN` використовується лише для типового облікового запису.
+Якщо два ввімкнені облікові записи Discord розв'язуються в той самий токен бота, OpenClaw запускає лише один монітор Gateway для цього токена. Токен із конфігурації має пріоритет над типовим резервним env-значенням; інакше перший увімкнений обліковий запис перемагає, а дубльований обліковий запис повідомляється як вимкнений.
+Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` для кожного виклику використовується для цього виклику. Це стосується дій надсилання та читання/перевірки (наприклад, read/search/fetch/thread/pins/permissions). Політика облікового запису та параметри повторних спроб усе одно надходять із вибраного облікового запису в активному знімку виконання.
-## Рекомендовано: налаштуйте робочий простір гільдії
+## Рекомендовано: налаштуйте робочий простір сервера
-Коли DM запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента зі своїм контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
+Коли приватні повідомлення запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
-
- Це дає вашому агенту змогу відповідати в будь-якому каналі на вашому сервері, а не лише в DM.
+
+ Це дає змогу вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в приватних повідомленнях.
- > "Add my Discord Server ID `` to the guild allowlist"
+ > "Додай мій Discord Server ID `` до списку дозволених серверів"
@@ -255,16 +255,16 @@ openclaw pairing approve discord
- За замовчуванням ваш агент відповідає в каналах гільдії лише коли його @mentioned. Для приватного сервера ви, ймовірно, захочете, щоб він відповідав на кожне повідомлення.
+ Типово ваш агент відповідає в каналах сервера лише коли його згадують через @mention. Для приватного сервера ви, ймовірно, захочете, щоб він відповідав на кожне повідомлення.
- У каналах гільдії звичайні фінальні відповіді асистента за замовчуванням залишаються приватними. Видимий вивід Discord потрібно надсилати явно за допомогою інструмента `message`, тож агент може за замовчуванням лишатися непомітним і публікувати лише тоді, коли вирішить, що відповідь у каналі корисна.
+ У каналах сервера звичайні фінальні відповіді асистента типово залишаються приватними. Видимий вивід Discord потрібно явно надсилати інструментом `message`, тож агент може типово непомітно спостерігати й писати лише тоді, коли вирішить, що відповідь у каналі корисна.
- > "Allow my agent to respond on this server without having to be @mentioned"
+ > "Дозволь моєму агенту відповідати на цьому сервері без потреби бути @mentioned"
- Задайте `requireMention: false` у конфігурації гільдії:
+ Установіть `requireMention: false` у конфігурації сервера:
```json5
{
@@ -280,72 +280,72 @@ openclaw pairing approve discord
}
```
- Щоб відновити застарілі автоматичні фінальні відповіді для групових/канальних кімнат, задайте `messages.groupChat.visibleReplies: "automatic"`.
+ Щоб відновити застарілі автоматичні фінальні відповіді для групових/канальних кімнат, установіть `messages.groupChat.visibleReplies: "automatic"`.
-
- За замовчуванням довгострокова пам’ять (MEMORY.md) завантажується лише в сесіях DM. Канали гільдії не завантажують MEMORY.md автоматично.
+
+ Типово довгострокова пам'ять (MEMORY.md) завантажується лише в сесіях приватних повідомлень. Канали сервера не завантажують MEMORY.md автоматично.
- > "When I ask questions in Discord channels, use memory_search or memory_get if you need long-term context from MEMORY.md."
+ > "Коли я ставлю запитання в каналах Discord, використовуй memory_search або memory_get, якщо тобі потрібен довгостроковий контекст із MEMORY.md."
- Якщо вам потрібен спільний контекст у кожному каналі, розмістіть сталі інструкції в `AGENTS.md` або `USER.md` (вони впроваджуються для кожної сесії). Зберігайте довгострокові нотатки в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам’яті.
+ Якщо вам потрібен спільний контекст у кожному каналі, помістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони вставляються в кожну сесію). Зберігайте довгострокові нотатки в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам'яті.
-Тепер створіть кілька каналів на своєму сервері Discord і починайте спілкуватися. Ваш агент бачить назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що відповідає вашому робочому процесу.
+Тепер створіть кілька каналів на своєму сервері Discord і почніть спілкування. Ваш агент може бачити назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що підходить вашому робочому процесу.
## Модель виконання
- Gateway володіє з’єднанням Discord.
-- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються до Discord.
-- Метадані гільдії/каналу Discord додаються до підказки моделі як ненадійний
- контекст, а не як видимий користувачу префікс відповіді. Якщо модель скопіює цей конверт
- назад, OpenClaw вилучає скопійовані метадані з вихідних відповідей і з
+- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються в Discord.
+- Метадані guild/channel Discord додаються до підказки моделі як ненадійний
+ контекст, а не як видимий користувачу префікс відповіді. Якщо модель скопіює цю обгортку
+ назад, OpenClaw видаляє скопійовані метадані з вихідних відповідей і з
майбутнього контексту повторного відтворення.
-- За замовчуванням (`session.dmScope=main`) прямі чати спільно використовують головну сесію агента (`agent:main:main`).
-- Канали гільдії ізольовані ключами сесій (`agent::discord:channel:`).
-- Групові DM ігноруються за замовчуванням (`channels.discord.dm.groupEnabled=false`).
-- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас зберігаючи `CommandTargetSessionKey` до маршрутизованої сесії розмови.
+- За замовчуванням (`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 компонентів залишаються
- багатоповідомними, коли агент надсилає кілька deliverable payload.
+ видиму асистенту відповідь один раз. Медіа й структуровані payload-и компонентів залишаються
+ багатоповідомленнєвими, коли агент генерує кілька payload-ів, придатних до доставки.
## Канали форумів
-Форуми та медіаканали Discord приймають лише дописи в тредах. OpenClaw підтримує два способи їх створення:
+Канали форумів і медіа Discord приймають лише дописи в гілках. OpenClaw підтримує два способи їх створення:
-- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити тред. Заголовок треду використовує перший непорожній рядок вашого повідомлення.
-- Використайте `openclaw message thread create`, щоб створити тред безпосередньо. Не передавайте `--message-id` для каналів форумів.
+- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити гілку. Назва гілки використовує перший непорожній рядок вашого повідомлення.
+- Використайте `openclaw message thread create`, щоб створити гілку напряму. Не передавайте `--message-id` для каналів форумів.
-Приклад: надіслати до батьківського форуму, щоб створити тред
+Приклад: надішліть до батьківського форуму, щоб створити гілку
```bash
openclaw message send --channel discord --target channel: \
--message "Topic title\nBody of the post"
```
-Приклад: явно створити тред форуму
+Приклад: явно створіть гілку форуму
```bash
openclaw message thread create --channel discord --target channel: \
--thread-name "Topic title" --message "Body of the post"
```
-Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самого треду (`channel:`).
+Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самої гілки (`channel:`).
## Інтерактивні компоненти
-OpenClaw підтримує контейнери компонентів Discord v2 для повідомлень агента. Використовуйте інструмент повідомлень із payload `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`.
+OpenClaw підтримує контейнери компонентів v2 Discord для повідомлень агента. Використовуйте інструмент повідомлень із payload-ом `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`.
Підтримувані блоки:
@@ -353,23 +353,23 @@ OpenClaw підтримує контейнери компонентів Discord
- Рядки дій дозволяють до 5 кнопок або одне меню вибору
- Типи вибору: `string`, `user`, `role`, `mentionable`, `channel`
-За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити використовувати кнопки, списки вибору та форми кілька разів, доки вони не спливуть.
+За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, елементів вибору й форм до завершення їхнього строку дії.
-Щоб обмежити, хто може натиснути кнопку, установіть `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Коли налаштовано, користувачі, що не збігаються, отримують ефемерну відмову.
+Щоб обмежити, хто може натискати кнопку, задайте `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Якщо налаштовано, користувачі без збігу отримують ephemeral відмову.
-Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з випадаючими списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь вибору ефемерна, і використовувати її може лише користувач, який викликав команду.
+Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з випадними списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарівання замість реєстрації моделей із чату. Відповідь вибору є ephemeral, і використовувати її може лише користувач, який її викликав.
Вкладення файлів:
-- Блоки `file` мають вказувати на посилання вкладення (`attachment://`)
+- Блоки `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,24 +425,24 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
-## Контроль доступу та маршрутизація
+## Контроль доступу й маршрутизація
- `channels.discord.dmPolicy` керує доступом до DM. `channels.discord.allowFrom` є канонічним списком дозволених DM.
+ `channels.discord.dmPolicy` контролює доступ до DM. `channels.discord.allowFrom` є канонічним списком дозволених DM.
- `pairing` (за замовчуванням)
- `allowlist`
- - `open` (потребує, щоб `channels.discord.allowFrom` містив `"*"`)
+ - `open` (потребує, щоб `channels.discord.allowFrom` включав `"*"`)
- `disabled`
- Якщо політика DM не відкрита, невідомі користувачі блокуються (або отримують запит на сполучення в режимі `pairing`).
+ Якщо політика DM не відкрита, невідомі користувачі блокуються (або отримують запит на pairing у режимі `pairing`).
Пріоритет для кількох облікових записів:
- `channels.discord.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
- Для одного облікового запису `allowFrom` має пріоритет над застарілим `dm.allowFrom`.
- - Іменовані облікові записи успадковують `channels.discord.allowFrom`, коли їхні власні `allowFrom` і застарілий `dm.allowFrom` не встановлені.
+ - Іменовані облікові записи успадковують `channels.discord.allowFrom`, коли їхні власні `allowFrom` і застарілий `dm.allowFrom` не задані.
- Іменовані облікові записи не успадковують `channels.discord.accounts.default.allowFrom`.
Застарілі `channels.discord.dm.policy` і `channels.discord.dm.allowFrom` усе ще читаються для сумісності. `openclaw doctor --fix` мігрує їх до `dmPolicy` і `allowFrom`, коли може зробити це без зміни доступу.
@@ -452,27 +452,27 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `user:`
- згадка `<@id>`
- Голі числові ID зазвичай розпізнаються як ID каналів, коли активне типове значення каналу, але ID, перелічені в ефективному DM `allowFrom` облікового запису, трактуються як цілі DM користувача для сумісності.
+ Голі числові ID зазвичай розпізнаються як ID каналів, коли активний стандартний канал, але ID, перелічені в ефективному DM `allowFrom` облікового запису, трактуються як цілі користувацьких DM для сумісності.
- Обробкою гільдій керує `channels.discord.groupPolicy`:
+ Обробка guild контролюється `channels.discord.groupPolicy`:
- `open`
- `allowlist`
- `disabled`
- Безпечною базовою лінією, коли існує `channels.discord`, є `allowlist`.
+ Безпечна базова конфігурація, коли існує `channels.discord`, це `allowlist`.
Поведінка `allowlist`:
- - гільдія має відповідати `channels.discord.guilds` (переважно `id`, slug приймається)
- - необов’язкові списки дозволених відправників: `users` (рекомендовані стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволені, коли вони збігаються з `users` АБО `roles`
- - пряме зіставлення імен/тегів вимкнене за замовчуванням; вмикайте `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
+ - guild має збігатися з `channels.discord.guilds` (`id` бажаний, slug приймається)
+ - необов’язкові списки дозволених відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволяються, коли вони збігаються з `users` АБО `roles`
+ - прямий збіг імен/тегів за замовчуванням вимкнений; вмикайте `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
- імена/теги підтримуються для `users`, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи імен/тегів
- - якщо для гільдії налаштовано `channels`, канали не зі списку заборонені
- - якщо гільдія не має блока `channels`, дозволені всі канали в цій гільдії зі списку дозволених
+ - якщо guild має налаштовані `channels`, канали не зі списку відхиляються
+ - якщо guild не має блока `channels`, усі канали в цій allowlisted guild дозволені
Приклад:
@@ -498,33 +498,33 @@ 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` налаштовується для кожної гільдії/каналу (`channels.discord.guilds...`).
- `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (крім @everyone/@here).
+ `requireMention` налаштовується для кожного guild/channel (`channels.discord.guilds...`).
+ `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (за винятком @everyone/@here).
- Групові DM:
+ Group DM:
- за замовчуванням: ігноруються (`dm.groupEnabled=false`)
- - необов’язковий список дозволених через `dm.groupChannels` (ID каналів або slugs)
+ - необов’язковий allowlist через `dm.groupChannels` (ID каналів або slug)
### Маршрутизація агентів на основі ролей
-Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників гільдії Discord до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише для гільдії. Якщо прив’язка також задає інші поля зіставлення (наприклад `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
+Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників Discord guild до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише guild. Якщо прив’язка також задає інші поля збігу (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
```json5
{
@@ -548,17 +548,17 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
-## Нативні команди та авторизація команд
+## Нативні команди й авторизація команд
-- `commands.native` за замовчуванням дорівнює `"auto"` і ввімкнено для Discord.
-- Перевизначення для кожного каналу: `channels.discord.commands.native`.
+- `commands.native` за замовчуванням має значення `"auto"` і ввімкнено для Discord.
+- Перевизначення для окремого каналу: `channels.discord.commands.native`.
- `commands.native=false` явно очищає раніше зареєстровані нативні команди Discord.
- Авторизація нативних команд використовує ті самі списки дозволених/політики Discord, що й звичайна обробка повідомлень.
-- Команди можуть усе ще бути видимими в UI Discord для користувачів, які не авторизовані; виконання все одно застосовує авторизацію OpenClaw і повертає "not authorized".
+- Команди все ще можуть бути видимими в UI Discord для користувачів, які не авторизовані; виконання все одно застосовує авторизацію OpenClaw і повертає "not authorized".
Див. [Slash-команди](/uk/tools/slash-commands) для каталогу команд і поведінки.
-Типові налаштування slash-команд:
+Стандартні налаштування slash-команд:
- `ephemeral: true`
@@ -566,33 +566,33 @@ 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_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 швидко впираються в обмеження частоти, коли кілька ботів або gateways спільно використовують обліковий запис.
+ За замовчуванням залишається `off`, оскільки редагування попереднього перегляду Discord швидко впираються в rate limits, коли кілька ботів або gateways спільно використовують обліковий запис.
```json5
{
@@ -610,22 +610,22 @@ Slash-команди `/model` і `/models` відкривають інтерак
```
- `partial` редагує одне повідомлення попереднього перегляду в міру надходження токенів.
- - `block` випускає шматки розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`).
- - Медіа, помилки та фінальні відповіді з явними reply скасовують очікувані редагування попереднього перегляду.
- - `streaming.preview.toolProgress` (за замовчуванням `true`) керує тим, чи оновлення інструментів/прогресу повторно використовують повідомлення попереднього перегляду.
+ - `block` випускає фрагменти розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`).
+ - Фінальні відповіді з медіа, помилками та явними відповідями скасовують очікувані редагування попереднього перегляду.
+ - `streaming.preview.toolProgress` (за замовчуванням `true`) контролює, чи повторно використовують оновлення інструментів/прогресу повідомлення попереднього перегляду.
- Потокова передача попереднього перегляду підтримує лише текст; медіавідповіді повертаються до звичайної доставки. Коли потокову передачу `block` явно ввімкнено, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійної потокової передачі.
+ Потоковий попередній перегляд підтримує лише текст; медіавідповіді повертаються до звичайної доставки. Коли потокове передавання `block` явно ввімкнено, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійного потокового передавання.
- Контекст історії гільдії:
+ Контекст історії guild:
- `channels.discord.historyLimit` за замовчуванням `20`
- fallback: `messages.groupChat.historyLimit`
- `0` вимикає
- Керування історією DM:
+ Елементи керування історією DM:
- `channels.discord.dmHistoryLimit`
- `channels.discord.dms[""].historyLimit`
@@ -633,24 +633,24 @@ Slash-команди `/model` і `/models` відкривають інтерак
Поведінка гілок:
- Гілки Discord маршрутизуються як сеанси каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено.
- - Сеанси гілок успадковують вибір `/model` рівня сеансу батьківського каналу як резервний варіант лише для моделі; локальні для гілки вибори `/model` все одно мають пріоритет, а історія транскрипту батьківського каналу не копіюється, якщо успадкування транскрипту не ввімкнено.
- - `channels.discord.thread.inheritParent` (типово `false`) вмикає заповнення нових автоматичних гілок із батьківського транскрипту. Перевизначення для окремого облікового запису розміщуються в `channels.discord.accounts..thread.inheritParent`.
- - Реакції інструмента повідомлень можуть розпізнавати цілі DM `user:`.
+ - Сеанси гілок успадковують вибір `/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 idle ` переглянути/оновити автоматичне зняття фокуса через неактивність для сфокусованих прив'язок
- `/session max-age ` переглянути/оновити жорсткий максимальний вік для сфокусованих прив'язок
Конфігурація:
@@ -681,8 +681,8 @@ 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 })`).
+ - `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).
@@ -690,7 +690,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Для стабільних "завжди ввімкнених" робочих просторів ACP налаштуйте типізовані прив'язки ACP верхнього рівня, що націлені на розмови Discord.
+ Для стабільних "завжди ввімкнених" робочих просторів ACP налаштуйте типізовані прив'язки ACP верхнього рівня, націлені на розмови Discord.
Шлях конфігурації:
@@ -746,11 +746,11 @@ Slash-команди `/model` і `/models` відкривають інтерак
Примітки:
- - `/acp spawn codex --bind here` прив'язує поточний канал або гілку на місці й утримує майбутні повідомлення в тому самому сеансі ACP. Повідомлення гілок успадковують прив'язку батьківського каналу.
- - У прив'язаному каналі або гілці `/new` і `/reset` скидають той самий сеанс ACP на місці. Тимчасові прив'язки гілок можуть перевизначати розпізнавання цілі, доки активні.
+ - `/acp spawn codex --bind here` прив'язує поточний канал або гілку на місці та залишає майбутні повідомлення в тому самому сеансі ACP. Повідомлення гілок успадковують прив'язку батьківського каналу.
+ - У прив'язаному каналі або гілці `/new` і `/reset` скидають той самий сеанс ACP на місці. Тимчасові прив'язки гілок можуть перевизначати розпізнавання цілі, поки вони активні.
- `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив'язати дочірню гілку через `--thread auto|here`.
- Див. [Агенти ACP](/uk/tools/acp-agents), щоб дізнатися подробиці поведінки прив'язок.
+ Див. [Агенти ACP](/uk/tools/acp-agents) для деталей поведінки прив'язки.
@@ -762,7 +762,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `all`
- `allowlist` (використовує `guilds..users`)
- Події реакцій перетворюються на системні події та додаються до маршрутизованого сеансу Discord.
+ Події реакцій перетворюються на системні події та прикріплюються до маршрутизованого сеансу Discord.
@@ -778,7 +778,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
Примітки:
- - Discord приймає Unicode-емодзі або назви власних емодзі.
+ - Discord приймає емодзі Unicode або назви користувацьких емодзі.
- Використовуйте `""`, щоб вимкнути реакцію для каналу або облікового запису.
@@ -788,7 +788,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
Це впливає на потоки `/config set|unset` (коли функції команд увімкнено).
- Вимкнути:
+ Вимкнення:
```json5
{
@@ -803,7 +803,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Маршрутизуйте трафік WebSocket Gateway Discord і початкові REST-пошуки (ID застосунку + розпізнавання списку дозволених) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
+ Маршрутизуйте WebSocket-трафік Gateway Discord і початкові REST-запити під час запуску (ідентифікатор застосунку + розпізнавання списку дозволених) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
```json5
{
@@ -853,13 +853,13 @@ Slash-команди `/model` і `/models` відкривають інтерак
- списки дозволених можуть використовувати `pk:`
- відображувані імена учасників зіставляються за іменем/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true`
- - пошуки використовують ID оригінального повідомлення та обмежені часовим вікном
- - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями бота й відкидаються, якщо `allowBots=true` не встановлено
+ - пошуки використовують початковий ідентифікатор повідомлення та обмежені часовим вікном
+ - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями ботів і відкидаються, якщо `allowBots=true` не задано
- Оновлення присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте автоматичну присутність.
+ Оновлення присутності застосовуються, коли ви задаєте поле статусу чи активності або коли вмикаєте автоматичну присутність.
Приклад лише зі статусом:
@@ -873,7 +873,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Приклад активності (власний статус є типовим типом активності):
+ Приклад активності (користувацький статус є типовим типом активності):
```json5
{
@@ -886,7 +886,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Приклад трансляції:
+ Приклад стримінгу:
```json5
{
@@ -900,16 +900,16 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Карта типів активності:
+ Мапа типів активності:
- 0: Грає
- - 1: Транслює (потребує `activityUrl`)
+ - 1: Стримить (потребує `activityUrl`)
- 2: Слухає
- 3: Дивиться
- - 4: Власна (використовує текст активності як стан статусу; емодзі необов'язковий)
+ - 4: Користувацька (використовує текст активності як стан статусу; емодзі необов'язковий)
- 5: Змагається
- Приклад автоматичної присутності (сигнал справності runtime):
+ Приклад автоматичної присутності (сигнал справності середовища виконання):
```json5
{
@@ -926,7 +926,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Автоматична присутність зіставляє доступність runtime зі статусом Discord: справний => online, погіршений або невідомий => idle, вичерпаний або недоступний => dnd. Необов'язкові перевизначення тексту:
+ Автоматична присутність зіставляє доступність середовища виконання зі статусом Discord: справний => онлайн, погіршений або невідомий => неактивний, вичерпаний або недоступний => не турбувати. Необов'язкові перевизначення тексту:
- `autoPresence.healthyText`
- `autoPresence.degradedText`
@@ -940,27 +940,27 @@ Slash-команди `/model` і `/models` відкривають інтерак
Шлях конфігурації:
- `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 автоматично вмикає нативні схвалення виконання, коли `enabled` не задано або дорівнює `"auto"` і можна розпізнати принаймні одного схвалювача, або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не виводить схвалювачів виконання з канального `allowFrom`, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Задайте `enabled: false`, щоб явно вимкнути Discord як нативний клієнт схвалень.
- Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на схвалення та фінальні результати приватно. Спочатку він пробує Discord DM, коли власник, що викликав команду, має маршрут власника Discord; якщо він недоступний, OpenClaw використовує перший доступний маршрут власника з `commands.ownerAllowFrom`, наприклад Telegram.
+ Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на схвалення та фінальні результати приватно. Спершу він пробує Discord DM, коли власник, який викликає команду, має маршрут власника Discord; якщо він недоступний, OpenClaw повертається до першого доступного маршруту власника з `commands.ownerAllowFrom`, наприклад Telegram.
- Коли `target` дорівнює `channel` або `both`, запит на схвалення видимий у каналі. Кнопки можуть використовувати лише розпізнані схвалювачі; інші користувачі отримують ефемерну відмову. Запити на схвалення містять текст команди, тому вмикайте доставлення в канал лише в довірених каналах. Якщо ID каналу не можна вивести з ключа сеансу, OpenClaw резервно використовує доставлення через DM.
+ Коли `target` дорівнює `channel` або `both`, запит на схвалення видимий у каналі. Кнопками можуть користуватися лише розпізнані схвалювачі; інші користувачі отримують ефемерну відмову. Запити на схвалення містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ідентифікатор каналу не можна вивести з ключа сеансу, OpenClaw повертається до доставки через DM.
- Discord також відображає спільні кнопки схвалення, які використовуються іншими чат-каналами. Нативний адаптер Discord переважно додає маршрутизацію DM схвалювача та розсилання в канал.
- Коли ці кнопки наявні, вони є основним UX схвалення; OpenClaw
+ Discord також відображає спільні кнопки схвалення, які використовуються іншими чат-каналами. Нативний адаптер Discord головно додає маршрутизацію DM для схвалювачів і розсилання в канал.
+ Коли ці кнопки наявні, вони є основним UX схвалень; OpenClaw
має включати ручну команду `/approve` лише тоді, коли результат інструмента каже,
- що чат-схвалення недоступні або ручне схвалення є єдиним шляхом.
- Якщо нативний runtime схвалень Discord не активний, OpenClaw залишає
+ що схвалення в чаті недоступні або ручне схвалення є єдиним шляхом.
+ Якщо нативне середовище виконання схвалень Discord неактивне, OpenClaw залишає
локальну детерміновану підказку `/approve ` видимою. Якщо
- runtime активний, але нативну картку не можна доставити до жодної цілі,
- OpenClaw надсилає резервне сповіщення в той самий чат із точною командою `/approve`
- з очікуваного схвалення.
+ середовище виконання активне, але нативну картку не можна доставити жодній цілі,
+ OpenClaw надсилає резервне повідомлення в той самий чат із точною командою `/approve`
+ із очікуваного схвалення.
- Автентифікація Gateway і розпізнавання схвалень дотримуються спільного контракту клієнта Gateway (ID `plugin:` розпізнаються через `plugin.approval.resolve`; інші ID через `exec.approval.resolve`). Типово схвалення спливають через 30 хвилин.
+ Автентифікація Gateway і розпізнавання схвалень дотримуються спільного контракту клієнта Gateway (ідентифікатори `plugin:` розпізнаються через `plugin.approval.resolve`; інші ідентифікатори через `exec.approval.resolve`). Типово схвалення спливають через 30 хвилин.
Див. [Схвалення виконання](/uk/tools/exec-approvals).
@@ -969,34 +969,34 @@ Slash-команди `/model` і `/models` відкривають інтерак
## Інструменти та шлюзи дій
-Дії повідомлень 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.*`.
Типова поведінка шлюзу:
-| Група дій | За замовчуванням |
-| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
+| Група дій | За замовчуванням |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- |
| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | увімкнено |
-| roles | вимкнено |
-| moderation | вимкнено |
-| presence | вимкнено |
+| roles | вимкнено |
+| moderation | вимкнено |
+| presence | вимкнено |
-## UI Components v2
+## UI компонентів v2
-OpenClaw використовує компоненти Discord v2 для підтверджень виконання та маркерів міжконтекстного переходу. Дії з повідомленнями Discord також можуть приймати `components` для користувацького UI (розширено; потребує створення payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані.
+OpenClaw використовує компоненти Discord v2 для схвалень виконання та маркерів міжконтекстного переходу. Дії з повідомленнями Discord також можуть приймати `components` для власного UI (розширений режим; потребує побудови payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані.
- `channels.discord.ui.components.accentColor` задає акцентний колір, який використовують контейнери компонентів Discord (hex).
-- Для окремого облікового запису задається через `channels.discord.accounts..ui.components.accentColor`.
+- Задавайте для кожного облікового запису через `channels.discord.accounts..ui.components.accentColor`.
- `embeds` ігноруються, коли присутні компоненти v2.
Приклад:
@@ -1017,7 +1017,7 @@ OpenClaw використовує компоненти Discord v2 для під
## Голос
-Discord має дві окремі голосові поверхні: голосові канали реального часу **voice channels** (безперервні розмови) та вкладення голосових повідомлень **voice message attachments** (формат попереднього перегляду хвилі). Gateway підтримує обидві.
+Discord має дві окремі голосові поверхні: голосові канали **voice channels** у реальному часі (безперервні розмови) та вкладення голосових повідомлень **voice message attachments** (формат попереднього перегляду з хвильовою формою). Gateway підтримує обидві.
### Голосові канали
@@ -1025,12 +1025,12 @@ Discord має дві окремі голосові поверхні: голос
1. Увімкніть Message Content Intent у Discord Developer Portal.
2. Увімкніть Server Members Intent, коли використовуються списки дозволених ролей/користувачів.
-3. Запросіть бота зі scope `bot` і `applications.commands`.
+3. Запросіть бота зі scopes `bot` і `applications.commands`.
4. Надайте Connect, Speak, Send Messages і Read Message History у цільовому голосовому каналі.
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:
@@ -1038,7 +1038,7 @@ Discord має дві окремі голосові поверхні: голос
/vc leave
```
-Приклад авто-приєднання:
+Приклад автоматичного приєднання:
```json5
{
@@ -1055,6 +1055,8 @@ Discord має дві окремі голосові поверхні: голос
],
daveEncryption: true,
decryptionFailureTolerance: 24,
+ connectTimeoutMs: 30000,
+ reconnectGraceMs: 15000,
tts: {
provider: "openai",
openai: { voice: "onyx" },
@@ -1068,30 +1070,32 @@ Discord має дві окремі голосові поверхні: голос
Примітки:
- `voice.tts` перевизначає `messages.tts` лише для голосового відтворення.
-- `voice.model` перевизначає LLM, що використовується лише для відповідей голосового каналу Discord. Залиште незаданим, щоб успадкувати модель маршрутизованого агента.
-- STT використовує `tools.media.audio`; `voice.model` не впливає на транскрибування.
-- Перевизначення Discord `systemPrompt` для окремого каналу застосовуються до ходів голосової транскрипції для цього голосового каналу.
-- Ходи голосової транскрипції визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); мовці без статусу власника не можуть отримувати доступ до інструментів лише для власника (наприклад, `gateway` і `cron`).
+- `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`, якщо їх не задано.
-- OpenClaw також відстежує помилки дешифрування прийому й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись до нього після повторних помилок за короткий проміжок часу.
-- Якщо після оновлення журнали прийому неодноразово показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` містить upstream-виправлення padding з PR discord.js #11449, яке закрило issue discord.js #11419.
+- `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 PCM перетворюється на тимчасовий WAV-файл.
- `tools.media.audio` обробляє STT, наприклад `openai/gpt-4o-mini-transcribe`.
-- Транскрипт надсилається через вхід Discord і маршрутизацію, тоді як LLM відповіді працює з політикою голосового виводу, яка приховує інструмент агента `tts` і просить повернути текст, оскільки Discord voice відповідає за фінальне TTS-відтворення.
+- Транскрипт надсилається через вхідний потік Discord і маршрутизацію, тоді як LLM відповіді працює з політикою голосового виводу, яка приховує інструмент агента `tts` і просить повернути текст, оскільки голос Discord відповідає за фінальне TTS-відтворення.
- `voice.model`, якщо задано, перевизначає лише LLM відповіді для цього ходу голосового каналу.
-- `voice.tts` об’єднується поверх `messages.tts`; отримане аудіо відтворюється у приєднаному каналі.
+- `voice.tts` об'єднується поверх `messages.tts`; отримане аудіо відтворюється в приєднаному каналі.
Облікові дані визначаються для кожного компонента: автентифікація маршруту LLM для `voice.model`, автентифікація STT для `tools.media.audio` і автентифікація TTS для `messages.tts`/`voice.tts`.
### Голосові повідомлення
-Голосові повідомлення Discord показують попередній перегляд хвилі та потребують аудіо OGG/Opus. OpenClaw генерує хвилю автоматично, але потребує `ffmpeg` і `ffprobe` на хості Gateway для перевірки та конвертації.
+Голосові повідомлення Discord показують попередній перегляд хвильової форми й потребують аудіо OGG/Opus. OpenClaw автоматично генерує хвильову форму, але потребує `ffmpeg` і `ffprobe` на хості Gateway для перевірки та перетворення.
- Надайте **локальний шлях до файлу** (URL відхиляються).
- Не вказуйте текстовий вміст (Discord відхиляє текст + голосове повідомлення в одному payload).
@@ -1104,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`
- - якщо існує мапа `channels` для guild, дозволені лише перелічені канали
+ - якщо існує map `channels` для guild, дозволено лише перелічені канали
- перевірте поведінку `requireMention` і шаблони згадок
Корисні перевірки:
@@ -1129,29 +1133,29 @@ openclaw logs --follow
-
- Типові причини:
+
+ Поширені причини:
- - `groupPolicy="allowlist"` без відповідного списку дозволених guild/каналу
- - `requireMention` налаштовано в неправильному місці (має бути під `channels.discord.guilds` або записом каналу)
- - відправник заблокований списком дозволених `users` для guild/каналу
+ - `groupPolicy="allowlist"` без відповідного списку дозволених guild/channel
+ - `requireMention` налаштовано в неправильному місці (має бути під `channels.discord.guilds` або записом channel)
+ - відправника заблоковано списком дозволених `users` guild/channel
-
+
Типові журнали:
- `Slow listener detected ...`
- `stuck session: sessionKey=agent:...:discord:... state=processing ...`
- Регулятори черги Gateway Discord:
+ Регулятори черги Discord Gateway:
- один обліковий запис: `channels.discord.eventQueue.listenerTimeout`
- кілька облікових записів: `channels.discord.accounts..eventQueue.listenerTimeout`
- - це керує лише роботою listener Gateway Discord, а не тривалістю ходу агента
+ - це керує лише роботою listener Discord Gateway, а не часом життя ходу агента
- Discord не застосовує власний для каналу timeout до поставлених у чергу ходів агента. Listeners повідомлень передають роботу негайно, а поставлені в чергу запуски Discord зберігають порядок у межах сесії, доки життєвий цикл сесії/інструмента/runtime не завершиться або не перерве роботу.
+ Discord не застосовує timeout, що належить каналу, до поставлених у чергу ходів агента. Listeners повідомлень передають роботу негайно, а поставлені в чергу запуски Discord зберігають порядок у межах сеансу, доки життєвий цикл сеансу/інструмента/runtime не завершиться або не скасує роботу.
```json5
{
@@ -1171,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, коли конфігурацію не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS`
+ - fallback env, коли config не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS`
- за замовчуванням: `30000` (30 секунд), максимум: `120000`
-
+
Перевірки дозволів `channels status --probe` працюють лише для числових ID каналів.
- Якщо ви використовуєте ключі slug, зіставлення в runtime все одно може працювати, але probe не може повністю перевірити дозволи.
+ Якщо ви використовуєте ключі slug, runtime-зіставлення все одно може працювати, але probe не може повністю перевірити дозволи.
-
+
- DM вимкнено: `channels.discord.dm.enabled=false`
- політику DM вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`)
- - очікування підтвердження pairing у режимі `pairing`
+ - очікування схвалення pairing у режимі `pairing`
-
- За замовчуванням повідомлення, створені ботом, ігноруються.
+
+ За замовчуванням повідомлення, створені ботами, ігноруються.
Якщо ви задаєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і списків дозволених, щоб уникнути циклічної поведінки.
Надавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота.
-
+
- - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була присутня логіка відновлення прийому голосу Discord
+ - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення прийому голосу 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)
@@ -1223,7 +1227,7 @@ openclaw logs --follow
Основний довідник: [Довідник конфігурації - Discord](/uk/gateway/config-channels#discord).
-
+
- запуск/автентифікація: `enabled`, `token`, `accounts.*`, `allowBots`
- політика: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
@@ -1231,7 +1235,7 @@ openclaw logs --follow
- черга подій: `eventQueue.listenerTimeout` (бюджет listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
- метадані Gateway: `gatewayInfoTimeoutMs`
- відповідь/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
-- доставлення: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
+- доставка: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
- streaming: `streaming` (застарілий alias: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
- медіа/повтор: `mediaMaxMb` (обмежує вихідні завантаження Discord, за замовчуванням `100MB`), `retry`
- дії: `actions.*`
@@ -1243,29 +1247,29 @@ openclaw logs --follow
## Безпека та операції
-- Вважайте токени ботів секретами (у керованих середовищах бажано `DISCORD_BOT_TOKEN`).
-- Надавайте мінімально необхідні дозволи Discord.
-- Якщо deploy/state команд застарілий, перезапустіть Gateway і перевірте знову через `openclaw channels status --probe`.
+- Розглядайте токени ботів як секрети (`DISCORD_BOT_TOKEN` бажано використовувати в керованих середовищах).
+- Надавайте Discord-дозволи за принципом найменших привілеїв.
+- Якщо розгортання/стан команд застаріли, перезапустіть Gateway і повторно перевірте через `openclaw channels status --probe`.
-## Пов’язане
+## Пов'язане
-
- Пов’яжіть користувача Discord із Gateway.
+
+ Сполучіть користувача Discord із Gateway.
-
- Поведінка групових чатів і списку дозволених.
+
+ Поведінка групового чату та списку дозволених.
-
+
Маршрутизуйте вхідні повідомлення до агентів.
-
+
Модель загроз і посилення захисту.
-
+
Зіставляйте гільдії та канали з агентами.
-
+
Поведінка нативних команд.
diff --git a/docs/uk/gateway/config-channels.md b/docs/uk/gateway/config-channels.md
index 978fca027..4a3a68d8e 100644
--- a/docs/uk/gateway/config-channels.md
+++ b/docs/uk/gateway/config-channels.md
@@ -2,55 +2,55 @@
read_when:
- Налаштування Plugin каналу (автентифікація, контроль доступу, кілька облікових записів)
- Усунення несправностей із ключами конфігурації для кожного каналу
- - Аудит політики DM, групової політики або обмеження за згадками
-summary: 'Конфігурація каналів: керування доступом, сполучення, ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших'
+ - Аудит політики приватних повідомлень, групової політики або обмеження за згадками
+summary: 'Конфігурація каналів: контроль доступу, створення пари, ключі для окремих каналів у Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо'
title: Конфігурація — канали
x-i18n:
- generated_at: "2026-05-01T03:00:48Z"
+ generated_at: "2026-05-01T11:02:08Z"
model: gpt-5.5
provider: openai
- source_hash: ce1571d51e026182d49b935780a986780a90b05afc0acca027b2541b80a1aac2
+ source_hash: bcdc5ba7dd6633749eccf27fa20f8933049061e5f11efbf315c31cd2512e055d
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 та інших вбудованих plugin каналів.
Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див.
[Довідник конфігурації](/uk/gateway/configuration-reference).
## Канали
-Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`).
+Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не задано `enabled: false`).
### Доступ до DM і груп
-Усі канали підтримують політики DM і групові політики:
+Усі канали підтримують політики DM і політики груп:
-| Політика DM | Поведінка |
+| Політика DM | Поведінка |
| ------------------- | --------------------------------------------------------------- |
-| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
-| `allowlist` | Лише відправники в `allowFrom` (або в сховищі дозволених сполучених) |
-| `open` | Дозволити всі вхідні DM (потребує `allowFrom: ["*"]`) |
-| `disabled` | Ігнорувати всі вхідні DM |
+| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
+| `allowlist` | Лише відправники в `allowFrom` (або в paired allow store) |
+| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) |
+| `disabled` | Ігнорувати всі вхідні DM |
-| Групова політика | Поведінка |
-| ---------------------- | ------------------------------------------------------- |
-| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених |
-| `open` | Обійти списки дозволених груп (обмеження за згадкою все ще застосовується) |
-| `disabled` | Блокувати всі повідомлення груп/кімнат |
+| Політика групи | Поведінка |
+| --------------------- | ------------------------------------------------------ |
+| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist |
+| `open` | Обійти allowlist груп (обмеження за згадкою все одно застосовується) |
+| `disabled` | Блокувати всі повідомлення груп/кімнат |
`channels.defaults.groupPolicy` задає типове значення, коли `groupPolicy` провайдера не встановлено.
-Коди сполучення спливають через 1 годину. Очікувані запити на сполучення DM обмежено до **3 на канал**.
-Якщо блок провайдера повністю відсутній (`channels.` відсутній), групова політика під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
+Коди сполучення спливають через 1 годину. Очікувані запити на сполучення DM обмежені **3 на канал**.
+Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
-### Перевизначення моделей каналів
+### Перевизначення моделі каналу
-Використовуйте `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,11 +91,11 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих Plugin
}
```
-- `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 у стилі індикатора.
+- `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.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора.
### WhatsApp
@@ -139,7 +139,7 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-
+
```json5
{
@@ -158,9 +158,9 @@ 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`.
+- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли збігається з налаштованим ID облікового запису.
+- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується `openclaw doctor` до `whatsapp/default`.
+- Перевизначення для облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
@@ -220,12 +220,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 облікового запису.
+- `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` попереджає, коли він відсутній або недійсний.
-- `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).
-- Попередні перегляди стримів Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах).
+- `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).
+- Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах).
- Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry).
### Discord
@@ -304,6 +304,8 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
],
daveEncryption: true,
decryptionFailureTolerance: 24,
+ connectTimeoutMs: 30000,
+ reconnectGraceMs: 15000,
tts: {
provider: "openai",
openai: { voice: "alloy" },
@@ -328,37 +330,39 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним значенням для облікового запису за замовчуванням.
-- Прямі вихідні виклики, що надають явний Discord `token`, використовують цей токен для виклику; параметри повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
-- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли збігається з налаштованим id облікового запису.
+- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для стандартного облікового запису.
+- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
+- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з ідентифікатором налаштованого облікового запису.
- Використовуйте `user:` (DM) або `channel:` (канал гільдії) для цілей доставки; голі числові ID відхиляються.
-- Слаги гільдій пишуться малими літерами, а пробіли замінюються на `-`; ключі каналів використовують назву у вигляді слага (без `#`). Надавайте перевагу ID гільдій.
-- Повідомлення, створені ботами, за замовчуванням ігноруються. `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`, а також прив’язаної доставки/маршрутизації)
+- Слаги гільдій пишуться малими літерами із заміною пробілів на `-`; ключі каналів використовують назву зі слагом (без `#`). Надавайте перевагу ID гільдій.
+- Повідомлення, створені ботами, типово ігноруються. `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` і прив’язана доставка/маршрутизація)
- `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає)
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
- - `spawnSubagentSessions`: перемикач явної згоди для автоматичного створення/прив’язування треду `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 і необов’язкові перевизначення auto-join + LLM + TTS.
-- `channels.discord.voice.model` необов’язково перевизначає модель LLM, що використовується для відповідей у голосових каналах Discord.
-- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (`true` і `24` за замовчуванням).
-- OpenClaw додатково намагається відновити прийом голосу, виходячи з голосової сесії та повторно приєднуючись до неї після повторюваних збоїв дешифрування.
-- `channels.discord.streaming` є канонічним ключем режиму потоку. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються.
-- `channels.discord.autoPresence` зіставляє доступність runtime з присутністю бота (healthy => online, degraded => idle, exhausted => dnd) і дає змогу необов’язково перевизначати текст статусу.
-- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає змінюване зіставлення імені/тега (режим сумісності break-glass).
-- `channels.discord.execApprovals`: доставка схвалень exec у Discord-native форматі та авторизація схвалювачів.
- - `enabled`: `true`, `false` або `"auto"` (за замовчуванням). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо пропущено, використовується резервне значення `commands.ownerAllowFrom`.
- - `agentFilter`: необов’язковий allowlist ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
+ - `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.
+- `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 агентів. Опустіть, щоб пересилати схвалення для всіх агентів.
- `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex).
- - `target`: куди надсилати запити на схвалення. `"dm"` (за замовчуванням) надсилає в DM схвалювачам, `"channel"` надсилає до початкового каналу, `"both"` надсилає в обидва місця. Коли ціль містить `"channel"`, кнопки можуть використовувати лише визначені схвалювачі.
- - `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленням після схвалення, відмови або тайм-ауту.
+ - `target`: куди надсилати запити схвалення. `"dm"` (типово) надсилає в DM схвалювачів, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва. Коли ціль містить `"channel"`, кнопки можуть використовувати лише визначені схвалювачі.
+ - `cleanupAfterResolve`: коли `true`, видаляє DM схвалень після схвалення, відхилення або тайм-ауту.
-**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень).
+**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень).
### Google Chat
@@ -391,9 +395,9 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
- JSON облікового запису сервісу: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`).
- SecretRef облікового запису сервісу також підтримується (`serviceAccountRef`).
-- Резервні значення env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
+- Резервні варіанти env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
- Використовуйте `spaces/` або `users/` для цілей доставки.
-- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає змінюване зіставлення email principal (режим сумісності break-glass).
+- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення змінного principal електронної пошти (режим аварійної сумісності).
### Slack
@@ -465,44 +469,44 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env облікового запису за замовчуванням).
-- **HTTP mode** потребує `botToken` плюс `signingSecret` (на кореневому рівні або для кожного облікового запису).
-- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API приймача Bolt. Використовуйте це лише під час дослідження тайм-аутів ping/pong або поведінки застарілого websocket.
-- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext
- рядки або об’єкти SecretRef.
-- Знімки облікових записів Slack надають поля джерела/статусу для кожних облікових даних, як-от
- `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в режимі HTTP —
+- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резервний env для стандартного облікового запису).
+- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для кожного облікового запису).
+- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API Bolt receiver. Використовуйте це лише під час дослідження тайм-ауту ping/pong або поведінки застарілого websocket.
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають рядки plaintext
+ або об’єкти SecretRef.
+- Знімки облікових записів Slack відкривають поля джерела/статусу для кожних облікових даних, такі як
+ `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в режимі HTTP
`signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
- налаштовано через SecretRef, але поточна команда/шлях runtime не зміг
+ налаштовано через SecretRef, але поточний шлях команди/runtime не зміг
визначити значення секрету.
- `configWrites: false` блокує записи конфігурації, ініційовані Slack.
-- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли збігається з налаштованим id облікового запису.
-- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує native streaming транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються.
+- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з ідентифікатором налаштованого облікового запису.
+- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним потоковим транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються.
- Використовуйте `user:` (DM) або `channel:` для цілей доставки.
-**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
-**Ізоляція тредових сесій:** `thread.historyScope` є окремим для кожного треду (за замовчуванням) або спільним для всього каналу. `thread.inheritParent` копіює transcript батьківського каналу в нові треди.
+**Ізоляція сесій потоків:** `thread.historyScope` діє для кожного потоку (типово) або спільно для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові потоки.
-- Slack native streaming плюс тредовий статус "is typing..." у стилі Slack assistant потребують цілі треду для відповіді. DM верхнього рівня за замовчуванням залишаються поза тредом, тому використовують `typingReaction` або звичайну доставку замість тредового попереднього перегляду.
-- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте Slack emoji shortcode, наприклад `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals`: доставка схвалень exec у Slack-native форматі та авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
+- Нативний 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"`).
-| Група дій | За замовчуванням | Примітки |
+| Група дій | Типово | Примітки |
| ------------ | ------- | ---------------------- |
-| reactions | enabled | Реакції + список реакцій |
-| messages | enabled | Читання/надсилання/редагування/видалення |
-| pins | enabled | Закріплення/відкріплення/список |
-| memberInfo | enabled | Інформація про учасника |
-| emojiList | enabled | Список користувацьких emoji |
+| reactions | увімкнено | Реагувати + перелічувати реакції |
+| messages | увімкнено | Читати/надсилати/редагувати/видаляти |
+| pins | увімкнено | Закріплювати/відкріплювати/перелічувати |
+| memberInfo | увімкнено | Інформація про учасника |
+| emojiList | увімкнено | Список користувацьких emoji |
### Mattermost
-Mattermost постачається як bundled plugin у поточних релізах OpenClaw. Старіші або
-користувацькі збірки можуть інсталювати поточний npm-пакет за допомогою
+Mattermost постачається як bundled Plugin у поточних випусках OpenClaw. Старіші або
+кастомні збірки можуть установити поточний npm-пакет за допомогою
`openclaw plugins install @openclaw/mattermost`; якщо npm повідомляє, що
-пакет, який належить OpenClaw, позначено як deprecated, використовуйте bundled plugin або локальний checkout
-доки новіший npm-пакет не буде опубліковано.
+пакет, яким володіє OpenClaw, застарілий, використовуйте bundled Plugin або локальний checkout
+до публікації новішого npm-пакета.
```json5
{
@@ -532,23 +536,23 @@ Mattermost постачається як bundled plugin у поточних ре
}
```
-Режими чату: `oncall` (відповідати на @-згадку, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера).
+Режими чату: `oncall` (відповідати на @-згадку, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера).
-Коли native commands Mattermost увімкнено:
+Коли нативні команди Mattermost увімкнені:
-- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повним URL.
-- `commands.callbackUrl` має вказувати на endpoint OpenClaw gateway і бути доступним із сервера Mattermost.
-- Native slash callbacks автентифікуються токенами кожної команди, повернутими
- Mattermost під час реєстрації slash command. Якщо реєстрація завершується невдало або жодних
- команд не активовано, OpenClaw відхиляє callbacks з
+- `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 host/domain.
- Використовуйте значення host/domain, а не повні URL.
-- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost.
+ щоб `ServiceSettings.AllowedUntrustedInternalConnections` включав callback-хост/домен.
+ Використовуйте значення хоста/домену, а не повні URL-адреси.
+- `channels.mattermost.configWrites`: дозволити або заборонити ініційовані Mattermost записи конфігурації.
- `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах.
-- `channels.mattermost.groups..requireMention`: перевизначення mention-gating для кожного каналу (`"*"` для значення за замовчуванням).
-- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли збігається з налаштованим id облікового запису.
+- `channels.mattermost.groups..requireMention`: перевизначення перевірки згадок для окремого каналу (`"*"` для типового значення).
+- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта.
### Signal
@@ -571,13 +575,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` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта.
### BlueBubbles
-BlueBubbles — рекомендований шлях для iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`).
+BlueBubbles — рекомендований шлях iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`).
```json5
{
@@ -593,7 +597,7 @@ BlueBubbles — рекомендований шлях для iMessage (на ба
```
- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
-- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає типовий вибір облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
+- Необов’язковий `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).
@@ -623,14 +627,14 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а
}
```
-- Необов’язковий `channels.imessage.defaultAccount` перевизначає типовий вибір облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
+- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта.
-- Потребує повного доступу до диска для БД Messages.
-- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб перелічити чати.
+- Потрібен 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 використовує сувору перевірку ключа хоста, тож переконайтеся, що ключ хоста ретранслятора вже є в `~/.ssh/known_hosts`.
-- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage.
+- 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).
@@ -674,21 +678,21 @@ 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`: необов’язкові шаблони ключів сеансів (підрядок або регулярний вираз).
- - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (початкова кімната) або `"both"`.
- - Перевизначення для окремих облікових записів: `channels.matrix.accounts..execApprovals`.
-- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовує сеанс за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату.
-- Проби стану Matrix і живі пошуки в каталозі використовують ту саму політику проксі, що й трафік runtime.
-- Повну конфігурацію Matrix, правила таргетингу та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
+- Автентифікація за токеном використовує `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).
### Microsoft Teams
@@ -708,7 +712,7 @@ Microsoft Teams працює на базі Plugin і налаштовуєтьс
```
- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
-- Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams).
+- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремої команди/каналу) задокументовано в [Microsoft Teams](/uk/channels/msteams).
### IRC
@@ -734,12 +738,12 @@ IRC працює на базі Plugin і налаштовується в `channe
```
- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
-- Необов’язковий `channels.irc.defaultAccount` перевизначає типовий вибір облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
+- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового акаунта, коли він збігається з ідентифікатором налаштованого акаунта.
- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc).
-### Кілька облікових записів (усі канали)
+### Кілька акаунтів (усі канали)
-Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`):
+Запускайте кілька акаунтів для кожного каналу (кожен зі своїм `accountId`):
```json5
{
@@ -761,33 +765,33 @@ 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 натомість може зберегти наявну відповідну іменовану/типову ціль.
+- Env-токени застосовуються лише до **типового** акаунта.
+- Базові налаштування каналу застосовуються до всіх акаунтів, якщо їх не перевизначено для окремого акаунта.
+- Використовуйте `bindings[].match.accountId`, щоб спрямувати кожен акаунт до іншого агента.
+- Якщо ви додаєте нетиповий акаунт через `openclaw channels add` (або onboarding каналу), коли все ще використовуєте конфігурацію каналу верхнього рівня для одного акаунта, OpenClaw спочатку переносить значення верхнього рівня одного акаунта, прив’язані до акаунта, у мапу акаунтів каналу, щоб початковий акаунт продовжив працювати. Більшість каналів переміщують їх у `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 у груповому чаті
+### Перевірка згадок у груповому чаті
-Для групових повідомлень типово **потрібна згадка** (згадка в метаданих або безпечні шаблони регулярних виразів). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
+Групові повідомлення типово **вимагають згадки** (згадка в метаданих або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
-Видимі відповіді керуються окремо. Групові/канальні кімнати типово використовують `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw все одно обробляє turn, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли вам потрібна застаріла поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`.
+Видимі відповіді керуються окремо. Групові/канальні кімнати типово мають `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе одно обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли потрібна застаріла поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`.
-Якщо інструмент повідомлень недоступний у межах активної політики інструментів, OpenClaw повертається до автоматичних видимих відповідей замість мовчазного придушення відповіді. `openclaw doctor` попереджає про цю невідповідність.
+Якщо інструмент повідомлень недоступний за активною політикою інструментів, OpenClaw переходить до автоматичних видимих відповідей замість тихого приглушення відповіді. `openclaw doctor` попереджає про цю невідповідність.
-Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в розгортанні.
+Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапуск потрібен лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в розгортанні.
**Типи згадок:**
-- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі самочату WhatsApp.
-- **Текстові шаблони**: безпечні шаблони регулярних виразів у `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються.
-- Mention gating застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон).
+- **Згадки в метаданих**: Нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp.
+- **Текстові шаблони**: Безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються.
+- Перевірка згадок застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон).
```json5
{
@@ -804,11 +808,11 @@ Gateway гаряче перезавантажує конфігурацію `mess
}
```
-`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначати його за допомогою `channels..historyLimit` (або для окремого облікового запису). Задайте `0`, щоб вимкнути.
+`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути.
-`messages.visibleReplies` — глобальне типове значення для source-turn; `messages.groupChat.visibleReplies` перевизначає його для group/channel source turns. Allowlist каналів і mention gating усе ще визначають, чи обробляється turn.
+`messages.visibleReplies` — це глобальне значення за замовчуванням для вихідних ходів; `messages.groupChat.visibleReplies` перевизначає його для вихідних ходів у групах/каналах. Списки дозволених каналів і перевірка згадок усе ще визначають, чи буде хід оброблено.
-#### Ліміти історії DM
+#### Ліміти історії особистих повідомлень
```json5
{
@@ -823,13 +827,13 @@ Gateway гаряче перезавантажує конфігурацію `mess
}
```
-Визначення: перевизначення для окремого DM → типове значення провайдера → без ліміту (зберігається все).
+Порядок визначення: перевизначення для окремого особистого повідомлення → стандартне значення провайдера → без ліміту (усе зберігається).
Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
-#### Режим самочату
+#### Режим чату із самим собою
-Додайте власний номер у `allowFrom`, щоб увімкнути режим самочату (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
+Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із самим собою (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
```json5
{
@@ -880,31 +884,31 @@ 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 залишає вимкненим.
-- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
+- `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` вмикає `! ` для командної оболонки хоста. Потрібні `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....`).
+- `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....`).
- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. За замовчуванням: `true`.
-- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він відокремлений від `allowFrom`.
-- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному промпті. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
-- `allowFrom` задається для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (списки дозволів/сполучення каналів і `useAccessGroups` ігноруються).
+- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він окремий від `allowFrom`.
+- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
+- `allowFrom` задається для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються).
- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено.
- Мапа документації команд:
- вбудований і комплектний каталог: [Slash Commands](/uk/tools/slash-commands)
- - поверхні команд для окремих каналів: [Channels](/uk/channels)
+ - поверхні команд, специфічні для каналів: [Канали](/uk/channels)
- команди QQ Bot: [QQ Bot](/uk/channels/qqbot)
- - команди сполучення: [Pairing](/uk/channels/pairing)
+ - команди сполучення: [Сполучення](/uk/channels/pairing)
- команда картки LINE: [LINE](/uk/channels/line)
- - memory dreaming: [Dreaming](/uk/concepts/dreaming)
+ - Dreaming пам’яті: [Dreaming](/uk/concepts/dreaming)