diff --git a/docs/uk/channels/discord.md b/docs/uk/channels/discord.md
index aac676711..a76acd4f4 100644
--- a/docs/uk/channels/discord.md
+++ b/docs/uk/channels/discord.md
@@ -1,51 +1,51 @@
---
read_when:
- - Працюєте над функціями каналу Discord
-summary: Статус підтримки Discord-бота, можливості та конфігурація
+ - Робота над функціями каналу Discord
+summary: Статус підтримки Discord бота, можливості та конфігурація
title: Discord
x-i18n:
- generated_at: "2026-04-05T17:59:19Z"
+ generated_at: "2026-04-05T20:19:40Z"
model: gpt-5.4
provider: openai
- source_hash: e757d321d80d05642cd9e24b51fb47897bacaf8db19df83bd61a49a8ce51ed3a
+ source_hash: 7fc471394b4fd2384779487f7ea5249897e826d2964094c0780613f3aea13946
source_path: channels/discord.md
workflow: 15
---
# Discord (Bot API)
-Статус: готовий для DM і каналів guild через офіційний шлюз Discord.
+Статус: готовий для приватних повідомлень і каналів сервера через офіційний шлюз Discord.
-
- Для Discord DM типовим є режим підключення.
+
+ Для Discord DM за замовчуванням використовується режим підключення.
-
- Вбудована поведінка команд і каталог команд.
+
+ Власна поведінка команд і каталог команд.
-
- Кросканальна діагностика та процес відновлення.
+
+ Діагностика між каналами та процес відновлення.
## Швидке налаштування
-Вам потрібно буде створити новий застосунок із ботом, додати бота на свій сервер і підключити його до 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".
- На бічній панелі натисніть **Bot**. Встановіть **Username** на будь-яку назву, якою ви називаєте свого агента OpenClaw.
+ На бічній панелі натисніть **Bot**. У полі **Username** вкажіть назву вашого агента OpenClaw.
- Все ще на сторінці **Bot**, прокрутіть до **Privileged Gateway Intents** і увімкніть:
+ На сторінці **Bot** прокрутіть до розділу **Privileged Gateway Intents** і увімкніть:
- **Message Content Intent** (обов’язково)
- - **Server Members Intent** (рекомендовано; обов’язково для allowlist ролей і зіставлення імен з ID)
- - **Presence Intent** (необов’язково; потрібен лише для оновлень присутності)
+ - **Server Members Intent** (рекомендовано; потрібно для allowlist ролей і зіставлення імен з ID)
+ - **Presence Intent** (необов’язково; потрібне лише для оновлень присутності)
@@ -53,15 +53,15 @@ x-i18n:
Прокрутіть угору на сторінці **Bot** і натисніть **Reset Token**.
- Попри назву, це генерує ваш перший токен — нічого не «скидається».
+ Попри назву, це створює ваш перший токен — нічого насправді не "скидається".
- Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і незабаром він вам знадобиться.
+ Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він знадобиться вам за мить.
-
- На бічній панелі натисніть **OAuth2**. Ви згенеруєте URL запрошення з правильними дозволами для додавання бота на свій сервер.
+
+ На бічній панелі натисніть **OAuth2**. Ви згенеруєте URL-запрошення з правильними дозволами, щоб додати бота на свій сервер.
Прокрутіть до **OAuth2 URL Generator** і увімкніть:
@@ -77,30 +77,30 @@ x-i18n:
- Attach Files
- Add Reactions (необов’язково)
- Скопіюйте згенерований URL унизу, вставте його в браузер, виберіть свій сервер і натисніть **Continue**, щоб підключити. Тепер ви маєте побачити свого бота на сервері Discord.
+ Скопіюйте згенерований URL унизу, вставте його в браузер, виберіть свій сервер і натисніть **Continue**, щоб підключити. Тепер ви маєте побачити свого бота на Discord-сервері.
- Повернувшись у застосунок Discord, вам потрібно увімкнути Developer Mode, щоб можна було копіювати внутрішні ID.
+ Повернувшись до застосунку Discord, вам потрібно ввімкнути Developer Mode, щоб можна було копіювати внутрішні ID.
- 1. Натисніть **User Settings** (значок шестерні поруч з аватаром) → **Advanced** → увімкніть **Developer Mode**
- 2. Клацніть правою кнопкою миші на **значку сервера** на бічній панелі → **Copy Server ID**
- 3. Клацніть правою кнопкою миші на **власному аватарі** → **Copy User 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 має дозволяти вашому боту надсилати вам DM. Натисніть правою кнопкою миші на **іконці сервера** → **Privacy Settings** → увімкніть **Direct Messages**.
- Це дозволяє учасникам сервера (включно з ботами) надсилати вам DM. Залиште це ввімкненим, якщо хочете використовувати Discord DM з OpenClaw. Якщо ви плануєте використовувати лише канали guild, після підключення DM можна вимкнути.
+ Це дозволяє учасникам сервера (включно з ботами) надсилати вам DM. Залиште цю опцію увімкненою, якщо хочете використовувати Discord DM з OpenClaw. Якщо ви плануєте використовувати лише канали сервера, після підключення DM можна вимкнути.
- Токен вашого Discord-бота — це секрет (як пароль). Задайте його на машині, де працює OpenClaw, перш ніж писати своєму агенту.
+ Токен вашого Discord бота — це секрет (як пароль). Задайте його на машині, де працює OpenClaw, перш ніж писати своєму агенту.
```bash
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
@@ -118,9 +118,9 @@ openclaw gateway
- Напишіть своєму агенту OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому це. Якщо Discord — ваш перший канал, натомість використайте вкладку CLI / config.
+ Напишіть своєму агенту OpenClaw у будь-якому вже наявному каналі (наприклад, Telegram) і повідомте йому про це. Якщо Discord — це ваш перший канал, натомість використайте вкладку CLI / config.
- > "Я вже задав токен свого Discord-бота в конфігурації. Будь ласка, заверши налаштування Discord із User ID `` і Server ID ``."
+ > "Я вже задав токен Discord бота в конфігурації. Будь ласка, заверши налаштування Discord з User ID `` і Server ID ``."
Якщо ви віддаєте перевагу конфігурації на основі файлу, задайте:
@@ -146,21 +146,21 @@ openclaw gateway
DISCORD_BOT_TOKEN=...
```
- Підтримуються прості текстові значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` у провайдерах env/file/exec. Див. [Secrets Management](/gateway/secrets).
+ Підтримуються відкриті значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` у провайдерах env/file/exec. Див. [Керування секретами](/uk/gateway/secrets).
-
- Дочекайтеся, поки шлюз запуститься, а потім напишіть своєму боту в Discord у DM. Він відповість кодом підключення.
+
+ Дочекайтеся, поки шлюз запуститься, а потім надішліть DM своєму боту в Discord. Він відповість кодом підключення.
- Надішліть код підключення своєму агенту в наявному каналі:
+ Надішліть код підключення своєму агенту в уже наявному каналі:
- > "Підтвердь цей код підключення Discord: ``"
+ > "Схвали цей код підключення Discord: ``"
@@ -180,23 +180,23 @@ openclaw pairing approve discord
-Розв’язання токенів враховує обліковий запис. Значення токена в конфігурації мають пріоритет над резервним env-значенням. `DISCORD_BOT_TOKEN` використовується лише для облікового запису за замовчуванням.
-Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` використовується для цього конкретного виклику. Це стосується дій надсилання і читання/перевірки на кшталт read/search/fetch/thread/pins/permissions. Політика облікового запису та налаштування повторних спроб, як і раніше, беруться з вибраного облікового запису в активному знімку runtime.
+Визначення токена залежить від облікового запису. Значення токена в конфігурації мають пріоритет над резервним env-значенням. `DISCORD_BOT_TOKEN` використовується лише для облікового запису за замовчуванням.
+Для розширених вихідних викликів (дії message tool/channel) явний `token` для виклику використовується саме для цього виклику. Це стосується дій надсилання та дій у стилі читання/перевірки (наприклад read/search/fetch/thread/pins/permissions). Політика облікового запису й налаштування повторних спроб як і раніше беруться з вибраного облікового запису в активному знімку runtime.
-## Рекомендовано: налаштуйте робочий простір guild
+## Рекомендовано: налаштуйте простір роботи сервера
-Щойно DM запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви і ваш бот.
+Коли DM уже працюють, ви можете налаштувати свій Discord-сервер як повноцінний простір роботи, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
-
- Це дає агенту змогу відповідати в будь-якому каналі на вашому сервері, а не лише в DM.
+
+ Це дозволить вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в DM.
- > "Додай мій Discord Server ID `` до allowlist guild"
+ > "Додай мій Discord Server ID `` до allowlist серверів"
-
+
```json5
{
@@ -220,14 +220,14 @@ openclaw pairing approve discord
- Типово ваш агент відповідає в каналах guild лише тоді, коли його згадують через @mention. Для приватного сервера вам, імовірно, потрібно, щоб він відповідав на кожне повідомлення.
+ За замовчуванням ваш агент відповідає в каналах сервера лише тоді, коли його згадують через @mention. Для приватного сервера, імовірно, вам потрібно, щоб він відповідав на кожне повідомлення.
- > "Дозволь моєму агенту відповідати на цьому сервері без @mentioned"
+ > "Дозволь моєму агенту відповідати на цьому сервері без обов’язкової @mention"
-
- У конфігурації guild задайте `requireMention: false`:
+
+ Установіть `requireMention: false` у конфігурації сервера:
```json5
{
@@ -248,76 +248,76 @@ openclaw pairing approve discord
-
- Типово довготривала пам’ять (`MEMORY.md`) завантажується лише в DM-сесіях. Канали guild не завантажують `MEMORY.md` автоматично.
+
+ За замовчуванням довготривала пам’ять (MEMORY.md) завантажується лише в DM-сесіях. У каналах сервера 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` або будь-що, що відповідає вашому процесу роботи.
## Модель runtime
-- Gateway керує підключенням до Discord.
-- Маршрутизація відповідей детермінована: вхідні повідомлення з Discord отримують відповіді назад у Discord.
-- Типово (`session.dmScope=main`) прямі чати спільно використовують основну сесію агента (`agent:main:main`).
-- Канали guild мають ізольовані ключі сесій (`agent::discord:channel:`).
-- Group DM типово ігноруються (`channels.discord.dm.groupEnabled=false`).
-- Вбудовані slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас несучи `CommandTargetSessionKey` до маршрутизованої сесії розмови.
+- Підключенням до Discord керує шлюз.
+- Маршрутизація відповідей детермінована: вхідні повідомлення Discord отримують відповіді назад у Discord.
+- За замовчуванням (`session.dmScope=main`) прямі чати використовують спільну основну сесію агента (`agent:main:main`).
+- Канали сервера мають ізольовані ключі сесій (`agent::discord:channel:`).
+- Групові DM ігноруються за замовчуванням (`channels.discord.dm.groupEnabled=false`).
+- Власні слеш-команди запускаються в ізольованих командних сесіях (`agent::discord:slash:`), водночас несучи `CommandTargetSessionKey` до спрямованої сесії розмови.
-## Канали forum
+## Канали форуму
-Канали forum і media у Discord приймають лише публікації у threads. OpenClaw підтримує два способи їх створення:
+Discord forum і media channels приймають лише публікації у тредах. OpenClaw підтримує два способи їх створення:
-- Надішліть повідомлення до батьківського forum (`channel:`), щоб автоматично створити thread. Заголовок thread використовує перший непорожній рядок вашого повідомлення.
-- Використайте `openclaw message thread create`, щоб створити thread напряму. Не передавайте `--message-id` для каналів forum.
+- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити тред. Заголовок треду використовує перший непорожній рядок вашого повідомлення.
+- Використайте `openclaw message thread create`, щоб створити тред безпосередньо. Не передавайте `--message-id` для каналів форуму.
-Приклад: надсилання до батьківського forum для створення thread
+Приклад: надсилання до батьківського форуму для створення треду
```bash
openclaw message send --channel discord --target channel: \
--message "Topic title\nBody of the post"
```
-Приклад: явне створення thread форуму
+Приклад: явне створення треду форуму
```bash
openclaw message thread create --channel discord --target channel: \
--thread-name "Topic title" --message "Body of the post"
```
-Батьківські forum не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самого thread (`channel:`).
+Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте повідомлення в сам тред (`channel:`).
## Інтерактивні компоненти
-OpenClaw підтримує контейнери Discord components v2 для повідомлень агента. Використовуйте інструмент повідомлень із payload `components`. Результати взаємодії маршрутизуються назад агенту як звичайні вхідні повідомлення й дотримуються наявних налаштувань Discord `replyToMode`.
+OpenClaw підтримує Discord components v2 containers для повідомлень агента. Використовуйте message tool з payload `components`. Результати взаємодії спрямовуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`.
Підтримувані блоки:
- `text`, `section`, `separator`, `actions`, `media-gallery`, `file`
-- Рядки дій дозволяють до 5 кнопок або одне меню вибору
+- Рядки дій допускають до 5 кнопок або одне меню вибору
- Типи вибору: `string`, `user`, `role`, `mentionable`, `channel`
-Типово компоненти одноразові. Задайте `components.reusable=true`, щоб дозволити багаторазове використання кнопок, списків вибору та форм до завершення строку їх дії.
+За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, списків вибору й форм до завершення терміну їх дії.
-Щоб обмежити, хто може натискати кнопку, задайте `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Якщо це налаштовано, користувачі, які не збігаються, отримають ефемерну відмову.
+Щоб обмежити коло користувачів, які можуть натискати кнопку, задайте `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Якщо налаштовано, користувачі, які не збігаються, отримують ефемерну відмову.
-Slash-команди `/model` і `/models` відкривають інтерактивний засіб вибору моделі з випадними списками провайдера та моделі, а також кроком Submit. Відповідь засобу вибору є ефемерною, і використовувати її може лише користувач, який викликав команду.
+Слеш-команди `/model` і `/models` відкривають інтерактивний вибір моделі зі списками провайдера й моделі, а також кроком Submit. Відповідь вибору є ефемерною, і використовувати її може лише користувач, який викликав команду.
Вкладення файлів:
-- Блоки `file` мають вказувати на посилання вкладення (`attachment://`)
-- Надайте вкладення через `media`/`path`/`filePath` (один файл); використовуйте `media-gallery` для кількох файлів
-- Використовуйте `filename`, щоб перевизначити назву завантаження, коли вона має збігатися з посиланням вкладення
+- Блоки `file` мають вказувати на посилання на вкладення (`attachment://`)
+- Надайте вкладення через `media`/`path`/`filePath` (один файл); для кількох файлів використовуйте `media-gallery`
+- Використовуйте `filename`, щоб перевизначити ім’я завантаження, коли воно має збігатися з посиланням на вкладення
Модальні форми:
@@ -379,13 +379,13 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
-## Контроль доступу та маршрутизація
+## Керування доступом і маршрутизація
`channels.discord.dmPolicy` керує доступом до DM (застаріле: `channels.discord.dm.policy`):
- - `pairing` (типово)
+ - `pairing` (за замовчуванням)
- `allowlist`
- `open` (потребує, щоб `channels.discord.allowFrom` містив `"*"`; застаріле: `channels.discord.dm.allowFrom`)
- `disabled`
@@ -403,27 +403,27 @@ Slash-команди `/model` і `/models` відкривають інтерак
- `user:`
- згадка `<@id>`
- Числові ID без типу є неоднозначними й відхиляються, якщо явно не задано тип цілі користувача/каналу.
+ Прості числові ID неоднозначні й відхиляються, якщо явно не вказано тип цілі користувача/каналу.
-
- Обробка guild керується через `channels.discord.groupPolicy`:
+
+ Обробка сервера керується через `channels.discord.groupPolicy`:
- `open`
- `allowlist`
- `disabled`
- Безпечна базова поведінка, коли існує `channels.discord`, — `allowlist`.
+ Безпечний базовий режим, коли існує `channels.discord`, — `allowlist`.
Поведінка `allowlist`:
- - guild має відповідати `channels.discord.guilds` (бажано `id`, slug також приймається)
- - необов’язкові allowlist відправників: `users` (рекомендовані стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволяються, коли вони відповідають `users` АБО `roles`
- - пряме зіставлення імен/тегів типово вимкнене; вмикайте `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
- - імена/теги підтримуються для `users`, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи з іменами/тегами
- - якщо для guild налаштовано `channels`, канали, яких немає в списку, забороняються
- - якщо в guild немає блоку `channels`, дозволяються всі канали в цій guild з allowlist
+ - сервер має відповідати `channels.discord.guilds` (бажано `id`, також приймається slug)
+ - необов’язкові allowlist відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволяються, коли збігаються з `users` АБО `roles`
+ - пряме зіставлення за іменем/тегом вимкнене за замовчуванням; увімкніть `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
+ - для `users` підтримуються імена/теги, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи з іменами/тегами
+ - якщо для сервера налаштовано `channels`, канали, яких немає у списку, забороняються
+ - якщо для сервера немає блоку `channels`, дозволяються всі канали цього сервера з allowlist
Приклад:
@@ -449,25 +449,25 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Якщо ви лише задали `DISCORD_BOT_TOKEN` і не створили блок `channels.discord`, резервна поведінка runtime буде `groupPolicy="allowlist"` (із попередженням у логах), навіть якщо `channels.defaults.groupPolicy` має значення `open`.
+ Якщо ви лише задаєте `DISCORD_BOT_TOKEN` і не створюєте блок `channels.discord`, резервний режим runtime буде `groupPolicy="allowlist"` (із попередженням у логах), навіть якщо `channels.defaults.groupPolicy` дорівнює `open`.
-
- Повідомлення guild типово вимагають згадки.
+
+ Повідомлення сервера за замовчуванням проходять через перевірку згадки.
- Виявлення згадок включає:
+ Виявлення згадки включає:
- явну згадку бота
- - налаштовані шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
+ - налаштовані шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервно — `messages.groupChat.mentionPatterns`)
- неявну поведінку reply-to-bot у підтримуваних випадках
- `requireMention` налаштовується для кожної guild/каналу (`channels.discord.guilds...`).
- `ignoreOtherMentions` за потреби відкидає повідомлення, які згадують іншого користувача/роль, але не бота (крім @everyone/@here).
+ `requireMention` налаштовується для кожного сервера/каналу (`channels.discord.guilds...`).
+ `ignoreOtherMentions` за потреби відкидає повідомлення, які згадують іншого користувача/роль, але не бота (за винятком @everyone/@here).
- Group DM:
+ Групові DM:
- - типово: ігноруються (`dm.groupEnabled=false`)
+ - за замовчуванням: ігноруються (`dm.groupEnabled=false`)
- необов’язковий allowlist через `dm.groupChannels` (ID каналів або slug)
@@ -475,7 +475,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
### Маршрутизація агентів за ролями
-Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників Discord guild до різних агентів за ID ролі. Прив’язки за ролями приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише для guild. Якщо прив’язка також задає інші поля зіставлення (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
+Використовуйте `bindings[].match.roles`, щоб спрямовувати учасників Discord-сервера до різних агентів за ID ролі. Прив’язки за ролями приймають лише ID ролей і обчислюються після прив’язок peer або parent-peer та перед прив’язками лише за сервером. Якщо прив’язка також задає інші поля зіставлення (наприклад, `peer` + `guildId` + `roles`), мають збігатися всі налаштовані поля.
```json5
{
@@ -502,7 +502,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
## Налаштування Developer Portal
-
+
1. Discord Developer Portal -> **Applications** -> **New Application**
2. **Bot** -> **Add Bot**
@@ -516,7 +516,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Message Content Intent
- Server Members Intent (рекомендовано)
- Presence intent необов’язковий і потрібен лише тоді, коли ви хочете отримувати оновлення присутності. Для встановлення присутності бота (`setPresence`) не потрібно вмикати оновлення присутності для учасників.
+ Presence intent є необов’язковим і потрібне лише якщо ви хочете отримувати оновлення присутності. Налаштування присутності бота (`setPresence`) не потребує ввімкнення оновлень присутності для учасників.
@@ -534,66 +534,72 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Attach Files
- Add Reactions (необов’язково)
- Уникайте `Administrator`, якщо він не потрібен явно.
+ Уникайте `Administrator`, якщо це не потрібно явно.
-
+
Увімкніть Discord Developer Mode, а потім скопіюйте:
- ID сервера
- ID каналу
- ID користувача
- Для надійного аудиту й перевірок у конфігурації OpenClaw віддавайте перевагу числовим ID.
+ Для надійних аудитів і перевірок у конфігурації OpenClaw надавайте перевагу числовим ID.
-## Вбудовані команди та авторизація команд
+## Власні команди і авторизація команд
-- `commands.native` типово дорівнює `"auto"` і ввімкнено для Discord.
+- `commands.native` за замовчуванням має значення `"auto"` і ввімкнене для Discord.
- Перевизначення для каналу: `channels.discord.commands.native`.
-- `commands.native=false` явним чином очищає раніше зареєстровані вбудовані команди Discord.
-- Авторизація вбудованих команд використовує ті самі allowlist/політики Discord, що й звичайна обробка повідомлень.
-- Команди можуть бути видимими в UI Discord навіть для користувачів, які не мають авторизації; виконання все одно застосовує авторизацію OpenClaw і повертає "not authorized".
+- `commands.native=false` явно очищає раніше зареєстровані власні команди Discord.
+- Авторизація власних команд використовує ті самі allowlist/політики Discord, що й звичайна обробка повідомлень.
+- Команди все ще можуть бути видимі в UI Discord для користувачів, які не мають доступу; виконання однаково перевіряє авторизацію OpenClaw і повертає "not authorized".
-Див. [Slash commands](/tools/slash-commands), щоб переглянути каталог команд і їхню поведінку.
+Див. [Слеш-команди](/uk/tools/slash-commands), щоб переглянути каталог команд і їхню поведінку.
-Типові налаштування slash-команд:
+Налаштування слеш-команд за замовчуванням:
- `ephemeral: true`
-## Деталі можливостей
+## Деталі функцій
-
- Discord підтримує теги reply у виводі агента:
+
+ Discord підтримує теги відповіді у вихідних повідомленнях агента:
- `[[reply_to_current]]`
- `[[reply_to:]]`
Керується через `channels.discord.replyToMode`:
- - `off` (типово)
+ - `off` (за замовчуванням)
- `first`
- `all`
+ - `batched`
- Примітка: `off` вимикає неявну прив’язку відповідей до threads. Явні теги `[[reply_to_*]]` усе одно враховуються.
+ Примітка: `off` вимикає неявне розгалуження відповідей. Явні теги `[[reply_to_*]]` все одно враховуються.
+ `first` завжди прикріплює неявне власне посилання на відповідь до першого вихідного повідомлення Discord у поточному ході.
+ `batched` прикріплює неявне власне посилання Discord на відповідь лише тоді, коли
+ вхідний хід був відкладеним пакетом із кількох повідомлень. Це зручно,
+ коли власні відповіді потрібні переважно для неоднозначних чатів із частими серіями повідомлень, а не для кожного
+ окремого ходу з одним повідомленням.
- ID повідомлень відображаються в контексті/історії, тому агенти можуть націлюватися на конкретні повідомлення.
+ ID повідомлень додаються до контексту/історії, щоб агенти могли націлюватися на конкретні повідомлення.
-
- OpenClaw може потоково надсилати чернетки відповідей, надсилаючи тимчасове повідомлення та редагуючи його в міру надходження тексту.
+
+ OpenClaw може потоково показувати чернетки відповідей, надсилаючи тимчасове повідомлення й редагуючи його в міру надходження тексту.
- - `channels.discord.streaming` керує потоковим попереднім переглядом (`off` | `partial` | `block` | `progress`, типово: `off`).
- - Значення `off` залишається типовим, тому що редагування попереднього перегляду в Discord може швидко впертися в ліміти частоти, особливо коли кілька ботів або шлюзів використовують один і той самий обліковий запис або трафік guild.
- - `progress` приймається для узгодженості між каналами та в Discord відображається як `partial`.
- - `channels.discord.streamMode` — застарілий псевдонім, який мігрується автоматично.
+ - `channels.discord.streaming` керує потоковим попереднім переглядом (`off` | `partial` | `block` | `progress`, за замовчуванням: `off`).
+ - За замовчуванням лишається `off`, бо редагування попереднього перегляду в Discord може швидко впиратися в обмеження частоти, особливо коли кілька ботів або шлюзів використовують той самий обліковий запис чи трафік сервера.
+ - `progress` приймається для узгодженості між каналами та в Discord зіставляється з `partial`.
+ - `channels.discord.streamMode` — це застарілий псевдонім, який мігрується автоматично.
- `partial` редагує одне повідомлення попереднього перегляду в міру надходження токенів.
- - `block` надсилає чернетки порціями (для налаштування розміру та точок розбиття використовуйте `draftChunk`).
+ - `block` видає фрагменти розміру чернетки (розмір і точки розриву налаштовуються через `draftChunk`).
Приклад:
@@ -607,7 +613,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Типові значення розбиття для режиму `block` (обмежуються `channels.discord.textChunkLimit`):
+ Значення за замовчуванням для розбиття в режимі `block` (обмежуються `channels.discord.textChunkLimit`):
```json5
{
@@ -624,47 +630,47 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Потоковий попередній перегляд підтримує лише текст; відповіді з медіа повертаються до звичайної доставки.
+ Потоковий попередній перегляд працює лише з текстом; відповіді з медіа повертаються до звичайної доставки.
- Примітка: потоковий попередній перегляд — це окрема функція від block streaming. Коли для Discord явно
- ввімкнено block streaming, OpenClaw пропускає preview stream, щоб уникнути подвійного потокового надсилання.
+ Примітка: потоковий попередній перегляд — це окрема функція від block streaming. Коли block streaming явно
+ увімкнено для Discord, OpenClaw пропускає попередній перегляд потоку, щоб уникнути подвійного потокового передавання.
-
- Контекст історії guild:
+
+ Контекст історії сервера:
- - `channels.discord.historyLimit` типово `20`
+ - `channels.discord.historyLimit` за замовчуванням `20`
- резервне значення: `messages.groupChat.historyLimit`
- `0` вимикає
- Керування історією DM:
+ Елементи керування історією DM:
- `channels.discord.dmHistoryLimit`
- `channels.discord.dms[""].historyLimit`
- Поведінка threads:
+ Поведінка тредів:
- - Discord threads маршрутизуються як сесії каналів
- - метадані батьківського thread можуть використовуватися для зв’язку з батьківською сесією
- - конфігурація thread успадковує конфігурацію батьківського каналу, якщо немає окремого запису для thread
+ - Discord-треди спрямовуються як сесії каналів
+ - метадані батьківського треду можуть використовуватися для зв’язку з батьківською сесією
+ - конфігурація треду успадковує конфігурацію батьківського каналу, якщо немає запису, специфічного для треду
- Теми каналів додаються як **ненадійний** контекст (а не як системний prompt).
- Контекст reply і цитованих повідомлень наразі зберігається як отриманий.
- Allowlist у Discord переважно визначають, хто може активувати агента, а не є повноцінною межею редагування додаткового контексту.
+ Теми каналів додаються як **недовірений** контекст (не як system prompt).
+ Контекст відповіді та цитованого повідомлення наразі зберігається в отриманому вигляді.
+ Allowlist Discord передусім обмежують, хто може запускати агента, а не є повною межею редагування додаткового контексту.
-
- Discord може прив’язати thread до цілі сесії, щоб подальші повідомлення в цьому thread продовжували маршрутизуватися до тієї самої сесії (включно із сесіями субагентів).
+
+ Discord може прив’язати тред до цілі сесії, щоб подальші повідомлення в цьому треді й далі спрямовувалися до тієї самої сесії (зокрема сесій субагентів).
Команди:
- - `/focus ` прив’язує поточний/новий thread до цілі субагента/сесії
- - `/unfocus` видаляє поточну прив’язку thread
- - `/agents` показує активні запуски та стан прив’язки
- - `/session idle ` переглядає/оновлює автоматичне зняття фокуса через неактивність для фокусованих прив’язок
- - `/session max-age ` переглядає/оновлює жорсткий максимальний вік для фокусованих прив’язок
+ - `/focus ` прив’язує поточний/новий тред до цілі субагента/сесії
+ - `/unfocus` прибирає поточну прив’язку треду
+ - `/agents` показує активні запуски і стан прив’язки
+ - `/session idle ` переглядає/оновлює автоматичне зняття фокуса через неактивність для сфокусованих прив’язок
+ - `/session max-age ` переглядає/оновлює жорсткий максимальний вік для сфокусованих прив’язок
Конфігурація:
@@ -692,22 +698,22 @@ Slash-команди `/model` і `/models` відкривають інтерак
Примітки:
- - `session.threadBindings.*` задає глобальні типові значення.
+ - `session.threadBindings.*` задає глобальні значення за замовчуванням.
- `channels.discord.threadBindings.*` перевизначає поведінку Discord.
- - `spawnSubagentSessions` має бути true, щоб автоматично створювати/прив’язувати threads для `sessions_spawn({ thread: true })`.
- - `spawnAcpSessions` має бути true, щоб автоматично створювати/прив’язувати threads для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`).
- - Якщо прив’язки thread вимкнені для облікового запису, `/focus` та пов’язані операції прив’язки thread недоступні.
+ - `spawnSubagentSessions` має бути true, щоб автоматично створювати/прив’язувати треди для `sessions_spawn({ thread: true })`.
+ - `spawnAcpSessions` має бути true, щоб автоматично створювати/прив’язувати треди для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`).
+ - Якщо прив’язки тредів вимкнено для облікового запису, `/focus` і пов’язані операції прив’язки тредів недоступні.
- Див. [Sub-agents](/tools/subagents), [ACP Agents](/tools/acp-agents) і [Configuration Reference](/gateway/configuration-reference).
+ Див. [Sub-agents](/uk/tools/subagents), [ACP Agents](/uk/tools/acp-agents) і [Configuration Reference](/uk/gateway/configuration-reference).
- Для стабільних ACP-робочих просторів «always-on» налаштуйте типізовані ACP-прив’язки верхнього рівня, націлені на розмови Discord.
+ Для стабільних "завжди активних" просторів роботи ACP налаштуйте типізовані ACP-прив’язки верхнього рівня, націлені на розмови Discord.
Шлях конфігурації:
- - `bindings[]` з `type: "acp"` і `match.channel: "discord"`
+ - `bindings[]` із `type: "acp"` і `match.channel: "discord"`
Приклад:
@@ -759,53 +765,53 @@ Slash-команди `/model` і `/models` відкривають інтерак
Примітки:
- - `/acp spawn codex --bind here` прив’язує поточний канал або thread Discord на місці й зберігає маршрутизацію майбутніх повідомлень до тієї самої ACP-сесії.
- - Це все ще може означати «запустити нову ACP-сесію Codex», але саме по собі не створює новий thread Discord. Наявний канал залишається поверхнею чату.
- - Codex усе ще може працювати у власному `cwd` або робочому просторі backend на диску. Цей робочий простір є станом runtime, а не thread Discord.
- - Повідомлення в threads можуть успадковувати ACP-прив’язку батьківського каналу.
- - У прив’язаному каналі або thread команди `/new` і `/reset` скидають ту саму ACP-сесію на місці.
- - Тимчасові прив’язки thread усе ще працюють і можуть перевизначати розв’язання цілі, поки активні.
- - `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив’язати дочірній thread через `--thread auto|here`. Він не потрібен для `/acp spawn ... --bind here` у поточному каналі.
+ - `/acp spawn codex --bind here` прив’язує поточний канал або тред Discord на місці та зберігає маршрутизацію майбутніх повідомлень до тієї самої ACP-сесії.
+ - Це все ще може означати "запустити нову ACP-сесію Codex", але саме по собі не створює новий тред Discord. Наявний канал залишається поверхнею чату.
+ - Codex усе одно може працювати у власному `cwd` або робочому просторі backend на диску. Цей робочий простір є станом runtime, а не тредом Discord.
+ - Повідомлення в треді можуть успадковувати ACP-прив’язку батьківського каналу.
+ - У прив’язаному каналі або треді `/new` і `/reset` скидають ту саму ACP-сесію на місці.
+ - Тимчасові прив’язки тредів як і раніше працюють і можуть перевизначати визначення цілі, поки активні.
+ - `spawnAcpSessions` потрібне лише тоді, коли OpenClaw має створити/прив’язати дочірній тред через `--thread auto|here`. Воно не потрібне для `/acp spawn ... --bind here` у поточному каналі.
- Див. [ACP Agents](/tools/acp-agents), щоб дізнатися подробиці поведінки прив’язок.
+ Докладніше про поведінку прив’язок див. у [ACP Agents](/uk/tools/acp-agents).
- Режим сповіщень про реакції для кожної guild:
+ Режим сповіщень про реакції для кожного сервера:
- `off`
- - `own` (типово)
+ - `own` (за замовчуванням)
- `all`
- `allowlist` (використовує `guilds..users`)
- Події реакцій перетворюються на системні події та прикріплюються до маршрутизованої Discord-сесії.
+ Події реакцій перетворюються на системні події й прикріплюються до спрямованої Discord-сесії.
`ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
- Порядок розв’язання:
+ Порядок визначення:
- `channels.discord.accounts..ackReaction`
- `channels.discord.ackReaction`
- `messages.ackReaction`
- - резервний emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
+ - резервне emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
- - Discord приймає unicode emoji або власні назви emoji.
+ - Discord приймає unicode emoji або назви кастомних emoji.
- Використовуйте `""`, щоб вимкнути реакцію для каналу або облікового запису.
-
- Записи конфігурації, ініційовані з каналу, типово ввімкнені.
+
+ Запис конфігурації, ініційований із каналу, увімкнено за замовчуванням.
- Це впливає на потоки `/config set|unset` (коли можливості команд увімкнені).
+ Це впливає на потоки `/config set|unset` (коли функції команд увімкнено).
- Вимкнення:
+ Вимкнути:
```json5
{
@@ -820,7 +826,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Маршрутизуйте трафік WebSocket шлюзу Discord і REST-запити під час запуску (ID застосунку + розв’язання allowlist) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
+ Спрямовуйте трафік WebSocket шлюзу Discord і початкові REST-запити (ID застосунку + визначення allowlist) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
```json5
{
@@ -832,7 +838,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Перевизначення для окремого облікового запису:
+ Перевизначення для облікового запису:
```json5
{
@@ -851,7 +857,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
- Увімкніть розв’язання PluralKit, щоб зіставляти проксійовані повідомлення з ідентичністю члена системи:
+ Увімкніть визначення PluralKit, щоб зіставляти проксовані повідомлення з ідентичністю учасника системи:
```json5
{
@@ -869,14 +875,14 @@ Slash-команди `/model` і `/models` відкривають інтерак
Примітки:
- allowlist можуть використовувати `pk:`
- - відображувані імена учасників зіставляються за іменем/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true`
- - пошуки використовують ID оригінального повідомлення та обмежуються часовим вікном
- - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями бота і відкидаються, якщо не задано `allowBots=true`
+ - відображувані імена учасників зіставляються за name/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true`
+ - пошук використовує ID початкового повідомлення й обмежується часовим вікном
+ - якщо пошук не вдається, проксовані повідомлення вважаються повідомленнями бота й відкидаються, якщо тільки не `allowBots=true`
- Оновлення присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте auto presence.
+ Оновлення присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте автоматичну присутність.
Приклад лише зі статусом:
@@ -890,7 +896,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Приклад активності (custom status — типовий тип активності):
+ Приклад активності (custom status — це тип активності за замовчуванням):
```json5
{
@@ -903,7 +909,7 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Приклад streaming:
+ Приклад трансляції:
```json5
{
@@ -920,13 +926,13 @@ Slash-команди `/model` і `/models` відкривають інтерак
Відповідність типів активності:
- 0: Playing
- - 1: Streaming (потребує `activityUrl`)
+ - 1: Streaming (потрібен `activityUrl`)
- 2: Listening
- 3: Watching
- - 4: Custom (використовує текст активності як стан статусу; emoji необов’язковий)
+ - 4: Custom (використовує текст активності як стан статусу; emoji необов’язкове)
- 5: Competing
- Приклад auto presence (сигнал стану runtime):
+ Приклад автоматичної присутності (сигнал працездатності runtime):
```json5
{
@@ -943,84 +949,84 @@ Slash-команди `/model` і `/models` відкривають інтерак
}
```
- Auto presence відображає доступність runtime у статус Discord: healthy => online, degraded або unknown => idle, exhausted або unavailable => dnd. Необов’язкові перевизначення тексту:
+ Автоматична присутність зіставляє доступність runtime зі статусом Discord: healthy => online, degraded або unknown => idle, exhausted або unavailable => dnd. Необов’язкові перевизначення тексту:
- `autoPresence.healthyText`
- `autoPresence.degradedText`
- - `autoPresence.exhaustedText` (підтримує placeholder `{reason}`)
+ - `autoPresence.exhaustedText` (підтримує заповнювач `{reason}`)
- Discord підтримує обробку погоджень за допомогою кнопок у DM і за потреби може публікувати запити на погодження у вихідному каналі.
+ Discord підтримує обробку погоджень через кнопки в DM і може за бажанням публікувати запити на погодження у вихідному каналі.
Шлях конфігурації:
- `channels.discord.execApprovals.enabled`
- - `channels.discord.execApprovals.approvers` (необов’язково; за можливості резервно використовує `commands.ownerAllowFrom`)
- - `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
+ - `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 як власний клієнт погоджень.
- Коли `target` має значення `channel` або `both`, запит на погодження видно в каналі. Лише розв’язані погоджувачі можуть використовувати кнопки; інші користувачі отримують ефемерну відмову. Запити на погодження містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу неможливо вивести з ключа сесії, OpenClaw повертається до доставки через DM.
+ Коли `target` має значення `channel` або `both`, запит на погодження видно в каналі. Лише визначені затверджувачі можуть використовувати кнопки; інші користувачі отримують ефемерну відмову. Запити на погодження містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу неможливо вивести з ключа сесії, OpenClaw повертається до доставки через DM.
- Discord також відображає спільні кнопки погодження, які використовуються іншими чат-каналами. Вбудований адаптер Discord головним чином додає маршрутизацію DM погоджувачів і розсилання в канали.
- Коли ці кнопки присутні, вони є основним UX для погоджень; OpenClaw
- повинен включати ручну команду `/approve` лише тоді, коли результат інструмента вказує,
- що погодження через чат недоступні або ручне погодження є єдиним шляхом.
+ Discord також відображає спільні кнопки погодження, що використовуються іншими чат-каналами. Власний адаптер Discord головно додає маршрутизацію погоджень затверджувачам у DM і fanout у канал.
+ Коли ці кнопки присутні, вони є основним UX для погодження; OpenClaw
+ повинен включати ручну команду `/approve` лише тоді, коли результат інструмента каже,
+ що погодження в чаті недоступні або ручне погодження — єдиний шлях.
- Автентифікація Gateway для цього обробника використовує той самий спільний контракт розв’язання облікових даних, що й інші клієнти Gateway:
+ Авторизація шлюзу для цього обробника використовує той самий спільний контракт визначення облікових даних, що й інші клієнти Gateway:
- - локальна автентифікація з пріоритетом env (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`, потім `gateway.auth.*`)
- - у локальному режимі `gateway.remote.*` може використовуватися як резервний варіант лише тоді, коли `gateway.auth.*` не задано; налаштовані, але не розв’язані локальні SecretRef завершуються із закритою відмовою
+ - локальна авторизація env-first (`OPENCLAW_GATEWAY_TOKEN` / `OPENCLAW_GATEWAY_PASSWORD`, далі `gateway.auth.*`)
+ - у локальному режимі `gateway.remote.*` може використовуватися як резервний варіант лише коли `gateway.auth.*` не задано; налаштовані, але не визначені локальні SecretRef закриваються в безпечний режим відмови
- підтримка remote-mode через `gateway.remote.*`, де це застосовно
- - перевизначення URL безпечні щодо перевизначень: перевизначення CLI не використовують неявні облікові дані повторно, а перевизначення env використовують лише облікові дані env
+ - перевизначення URL безпечні щодо перевизначень: перевизначення CLI не повторно використовують неявні облікові дані, а перевизначення env використовують лише env-облікові дані
- Поведінка розв’язання погоджень:
+ Поведінка визначення погоджень:
- - ID з префіксом `plugin:` розв’язуються через `plugin.approval.resolve`.
- - Інші ID розв’язуються через `exec.approval.resolve`.
- - Discord не виконує тут додатковий резервний перехід від exec до plugin; префікс
- ID визначає, який метод gateway він викликає.
+ - ID з префіксом `plugin:` визначаються через `plugin.approval.resolve`.
+ - Інші ID визначаються через `exec.approval.resolve`.
+ - Discord не робить тут додаткового резервного переходу exec-to-plugin; тип
+ префікса ID визначає, який метод шлюзу буде викликано.
- Типово строк дії погоджень виконання спливає через 30 хвилин. Якщо погодження завершуються помилкою з
- невідомими ID погоджень, перевірте розв’язання погоджувачів, увімкнення функції та
- те, що доставлений вид ID погодження збігається з очікуваним запитом.
+ Термін дії погоджень виконання за замовчуванням спливає через 30 хвилин. Якщо погодження завершуються помилкою з
+ невідомими ID погоджень, перевірте визначення затверджувачів, увімкнення функції і
+ те, що доставлений тип ID погодження збігається з очікуваним запитом.
- Пов’язана документація: [Exec approvals](/tools/exec-approvals)
+ Пов’язана документація: [Exec approvals](/uk/tools/exec-approvals)
-## Інструменти та обмеження дій
+## Інструменти і gate дій
-Дії з повідомленнями Discord включають обмін повідомленнями, адміністрування каналів, модерацію, присутність і дії з метаданими.
+Дії повідомлень Discord включають повідомлення, адміністрування каналів, модерацію, присутність і дії з метаданими.
Основні приклади:
-- обмін повідомленнями: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply`
+- повідомлення: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply`
- реакції: `react`, `reactions`, `emojiList`
- модерація: `timeout`, `kick`, `ban`
- присутність: `setPresence`
-Обмеження дій розташовані в `channels.discord.actions.*`.
+Gate дій розміщені в `channels.discord.actions.*`.
-Типова поведінка обмежень:
+Типова поведінка gate:
-| Група дій | Типово |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
-| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | увімкнено |
-| roles | вимкнено |
-| moderation | вимкнено |
-| presence | вимкнено |
+| Група дій | За замовчуванням |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- |
+| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | увімкнено |
+| roles | вимкнено |
+| moderation | вимкнено |
+| presence | вимкнено |
-## Components v2 UI
+## UI Components v2
-OpenClaw використовує Discord components v2 для погоджень виконання та маркерів між контекстами. Дії з повідомленнями Discord також можуть приймати `components` для власного UI (розширений варіант; потребує побудови payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані.
+OpenClaw використовує Discord components v2 для погоджень виконання і маркерів між контекстами. Дії повідомлень Discord також можуть приймати `components` для власного UI (розширений сценарій; потребує побудови payload компонента через discord tool), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані.
-- `channels.discord.ui.components.accentColor` задає колір акценту, який використовується контейнерами компонентів Discord (hex).
-- Для окремого облікового запису задавайте через `channels.discord.accounts..ui.components.accentColor`.
+- `channels.discord.ui.components.accentColor` задає акцентний колір, який використовується контейнерами компонентів Discord (hex).
+- Для окремого облікового запису задається через `channels.discord.accounts..ui.components.accentColor`.
- `embeds` ігноруються, коли присутні components v2.
Приклад:
@@ -1041,17 +1047,17 @@ OpenClaw використовує Discord components v2 для погоджен
## Голосові канали
-OpenClaw може приєднуватися до голосових каналів Discord для розмов у реальному часі безперервного характеру. Це окрема можливість від вкладень голосових повідомлень.
+OpenClaw може приєднуватися до голосових каналів Discord для розмов у реальному часі без перерв. Це окрема функція від вкладень голосових повідомлень.
Вимоги:
-- Увімкніть вбудовані команди (`commands.native` або `channels.discord.commands.native`).
+- Увімкніть власні команди (`commands.native` або `channels.discord.commands.native`).
- Налаштуйте `channels.discord.voice`.
-- Боту потрібні дозволи Connect + Speak у цільовому голосовому каналі.
+- Бот повинен мати дозволи Connect + Speak у цільовому голосовому каналі.
-Використовуйте вбудовану команду Discord `/vc join|leave|status` для керування сесіями. Команда використовує агента облікового запису за замовчуванням і підпорядковується тим самим правилам allowlist і group policy, що й інші команди Discord.
+Використовуйте власну Discord-команду `/vc join|leave|status` для керування сесіями. Команда використовує агента облікового запису за замовчуванням і дотримується тих самих правил allowlist і group policy, що й інші команди Discord.
-Приклад auto-join:
+Приклад автоматичного приєднання:
```json5
{
@@ -1079,23 +1085,23 @@ OpenClaw може приєднуватися до голосових канал
Примітки:
-- `voice.tts` перевизначає `messages.tts` лише для голосового відтворення.
-- Ходи транскрипції голосу визначають статус власника з `allowFrom` Discord (або `dm.allowFrom`); мовці, які не є власниками, не можуть використовувати інструменти лише для власника (наприклад, `gateway` і `cron`).
-- Голос типово ввімкнено; задайте `channels.discord.voice.enabled=false`, щоб вимкнути його.
+- `voice.tts` перевизначає `messages.tts` лише для відтворення голосу.
+- Ходи транскрипції голосу визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); користувачі, які не є власниками, не можуть отримувати доступ до інструментів тільки для власника (наприклад `gateway` і `cron`).
+- Голос увімкнено за замовчуванням; установіть `channels.discord.voice.enabled=false`, щоб вимкнути його.
- `voice.daveEncryption` і `voice.decryptionFailureTolerance` напряму передаються в параметри приєднання `@discordjs/voice`.
-- Якщо не задано, типовими для `@discordjs/voice` є `daveEncryption=true` і `decryptionFailureTolerance=24`.
-- OpenClaw також відстежує помилки розшифрування під час отримання та автоматично відновлюється, виходячи з голосового каналу й приєднуючись знову після повторних збоїв за короткий проміжок часу.
-- Якщо журнали отримання постійно показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, можливо, це upstream-баг отримання `@discordjs/voice`, відстежуваний у [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
+- Якщо не задано, `@discordjs/voice` використовує значення за замовчуванням `daveEncryption=true` і `decryptionFailureTolerance=24`.
+- OpenClaw також відстежує помилки дешифрування під час прийому й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись після повторних помилок у короткому вікні часу.
+- Якщо журнали прийому неодноразово показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, це може бути висхідною помилкою прийому `@discordjs/voice`, яку відстежено в [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
## Голосові повідомлення
-Голосові повідомлення Discord показують попередній перегляд waveform і потребують аудіо OGG/Opus плюс метадані. OpenClaw генерує waveform автоматично, але для перевірки й перетворення аудіофайлів на хості gateway мають бути доступні `ffmpeg` і `ffprobe`.
+Голосові повідомлення Discord відображають попередній перегляд форми хвилі й вимагають аудіо OGG/Opus разом із метаданими. OpenClaw генерує форму хвилі автоматично, але на хості шлюзу мають бути доступні `ffmpeg` і `ffprobe`, щоб аналізувати й конвертувати аудіофайли.
Вимоги й обмеження:
-- Надайте **локальний шлях до файлу** (URL відхиляються).
+- Вкажіть **локальний шлях до файлу** (URL відхиляються).
- Не додавайте текстовий вміст (Discord не дозволяє текст + голосове повідомлення в одному payload).
-- Підтримується будь-який аудіоформат; за потреби OpenClaw перетворює його в OGG/Opus.
+- Підтримується будь-який аудіоформат; OpenClaw за потреби конвертує його в OGG/Opus.
Приклад:
@@ -1106,19 +1112,19 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a
## Усунення проблем
-
+
- увімкніть Message Content Intent
- - увімкніть Server Members Intent, якщо ви залежите від розв’язання користувачів/учасників
- - перезапустіть gateway після зміни intents
+ - увімкніть Server Members Intent, якщо ви залежите від визначення користувача/учасника
+ - перезапустіть шлюз після зміни intents
-
+
- перевірте `groupPolicy`
- - перевірте allowlist guild у `channels.discord.guilds`
- - якщо існує мапа `channels` для guild, дозволені лише канали зі списку
+ - перевірте allowlist серверів у `channels.discord.guilds`
+ - якщо існує мапа `channels` сервера, дозволені лише канали зі списку
- перевірте поведінку `requireMention` і шаблони згадок
Корисні перевірки:
@@ -1131,16 +1137,16 @@ openclaw logs --follow
-
- Поширені причини:
+
+ Типові причини:
- - `groupPolicy="allowlist"` без відповідного allowlist guild/каналу
- - `requireMention` налаштовано не в тому місці (має бути в `channels.discord.guilds` або записі каналу)
- - відправника заблоковано allowlist `users` для guild/каналу
+ - `groupPolicy="allowlist"` без відповідного allowlist сервера/каналу
+ - `requireMention` налаштовано в неправильному місці (має бути в `channels.discord.guilds` або в записі каналу)
+ - відправника блокує allowlist `users` сервера/каналу
-
+
Типові журнали:
@@ -1153,13 +1159,13 @@ openclaw logs --follow
- один обліковий запис: `channels.discord.eventQueue.listenerTimeout`
- кілька облікових записів: `channels.discord.accounts..eventQueue.listenerTimeout`
- Параметр тайм-ауту виконання worker:
+ Параметр тайм-ауту запуску worker:
- один обліковий запис: `channels.discord.inboundWorker.runTimeoutMs`
- кілька облікових записів: `channels.discord.accounts..inboundWorker.runTimeoutMs`
- - типове значення: `1800000` (30 хвилин); задайте `0`, щоб вимкнути
+ - за замовчуванням: `1800000` (30 хвилин); установіть `0`, щоб вимкнути
- Рекомендована базова конфігурація:
+ Рекомендований базовий варіант:
```json5
{
@@ -1181,81 +1187,81 @@ openclaw logs --follow
```
Використовуйте `eventQueue.listenerTimeout` для повільного налаштування listener, а `inboundWorker.runTimeoutMs`
- лише якщо вам потрібен окремий запобіжник для чергових ходів агента.
+ лише якщо вам потрібен окремий запобіжник для черги ходів агента.
Перевірки дозволів `channels status --probe` працюють лише для числових ID каналів.
- Якщо ви використовуєте ключі slug, зіставлення під час runtime усе ще може працювати, але перевірка не може повністю підтвердити дозволи.
+ Якщо ви використовуєте ключі slug, зіставлення в runtime усе ще може працювати, але probe не може повністю перевірити дозволи.
- DM вимкнено: `channels.discord.dm.enabled=false`
- - політику DM вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`)
+ - політика DM вимкнена: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`)
- очікується схвалення підключення в режимі `pairing`
- Типово повідомлення, автором яких є бот, ігноруються.
+ За замовчуванням повідомлення, створені ботами, ігноруються.
- Якщо ви задали `channels.discord.allowBots=true`, використовуйте суворі правила згадок і allowlist, щоб уникати циклів.
- Віддавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота.
+ Якщо ви встановлюєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і allowlist, щоб уникнути циклічної поведінки.
+ Надавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота.
-
+
- - підтримуйте актуальність OpenClaw (`openclaw update`), щоб була присутня логіка відновлення отримання голосу Discord
- - переконайтеся, що `channels.discord.voice.daveEncryption=true` (типово)
- - починайте з `channels.discord.voice.decryptionFailureTolerance=24` (типове upstream-значення) і змінюйте лише за потреби
- - відстежуйте в логах:
+ - підтримуйте актуальну версію 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`
- - якщо збої тривають після автоматичного повторного приєднання, зберіть логи й звіртеся з [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
+ - якщо помилки тривають після автоматичного повторного приєднання, зберіть журнали й порівняйте з [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
-## Вказівники на довідник конфігурації
+## Вказівники до довідника з конфігурації
Основний довідник:
-- [Configuration reference - Discord](/gateway/configuration-reference#discord)
+- [Configuration reference - Discord](/uk/gateway/configuration-reference#discord)
-Важливі поля Discord:
+Ключові поля Discord:
-- запуск/автентифікація: `enabled`, `token`, `accounts.*`, `allowBots`
+- запуск/авторизація: `enabled`, `token`, `accounts.*`, `allowBots`
- політика: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
- команди: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*`
- черга подій: `eventQueue.listenerTimeout` (бюджет listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
-- вхідний worker: `inboundWorker.runTimeoutMs`
-- reply/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
+- inbound worker: `inboundWorker.runTimeoutMs`
+- відповідь/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- доставка: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
-- streaming: `streaming` (застарілий псевдонім: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
+- потокова передача: `streaming` (застарілий псевдонім: `streamMode`), `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
- медіа/повторні спроби: `mediaMaxMb`, `retry`
- - `mediaMaxMb` обмежує вихідні завантаження до Discord (типово: `8MB`)
+ - `mediaMaxMb` обмежує вихідні завантаження Discord (за замовчуванням: `8MB`)
- дії: `actions.*`
- присутність: `activity`, `status`, `activityType`, `activityUrl`
- UI: `ui.components.accentColor`
-- можливості: `threadBindings`, верхньорівневий `bindings[]` (`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
+- функції: `threadBindings`, верхньорівневі `bindings[]` (`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
-## Безпека й експлуатація
+## Безпека і експлуатація
-- Розглядайте токени бота як секрети (`DISCORD_BOT_TOKEN` бажано використовувати в керованих середовищах).
-- Надавайте мінімально необхідні дозволи Discord.
-- Якщо розгортання/стан команд застаріли, перезапустіть gateway і повторно перевірте через `openclaw channels status --probe`.
+- Вважайте токени ботів секретами (`DISCORD_BOT_TOKEN` є бажаним варіантом у контрольованих середовищах).
+- Надавайте Discord дозволи за принципом найменших привілеїв.
+- Якщо розгортання/стан команд застаріли, перезапустіть шлюз і повторно перевірте за допомогою `openclaw channels status --probe`.
## Пов’язане
-- [Підключення](/channels/pairing)
-- [Групи](/channels/groups)
-- [Маршрутизація каналів](/channels/channel-routing)
-- [Безпека](/gateway/security)
-- [Маршрутизація кількох агентів](/concepts/multi-agent)
-- [Усунення проблем](/channels/troubleshooting)
-- [Slash commands](/tools/slash-commands)
+- [Підключення](/uk/channels/pairing)
+- [Групи](/uk/channels/groups)
+- [Маршрутизація каналів](/uk/channels/channel-routing)
+- [Безпека](/uk/gateway/security)
+- [Маршрутизація кількох агентів](/uk/concepts/multi-agent)
+- [Усунення проблем](/uk/channels/troubleshooting)
+- [Слеш-команди](/uk/tools/slash-commands)