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)