From 686aa90728b62c07d6a303e0edfa7c8d02458f9b Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sun, 5 Apr 2026 20:19:40 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/channels/discord.md | 564 ++++++++++++++++++------------------ 1 file changed, 285 insertions(+), 279 deletions(-) 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)