Skip to content

Конфигурация и использование канала Discord ​

Чему вы научитесь ​

После завершения этого руководства вы сможете:

  • Создать Discord Bot и получить Bot Token
  • Настроить интеграцию Clawdbot с Discord Bot
  • Использовать AI-помощника в Discord DM (личных сообщениях) и серверных каналах
  • Настроить контроль доступа (спаривание DM, белый список каналов)
  • Позволить AI вызывать инструменты Discord (отправка сообщений, создание каналов, управление ролями и т.д.)

Ваши текущие трудности ​

Вы уже используете Discord для общения с друзьями или командой, и хотите взаимодействовать с AI-помощником прямо в Discord без переключения приложений. Вы можете столкнуться со следующими проблемами:

  • Не знаете, как создать Discord Bot
  • Неясно, какие права доступа необходимы для нормальной работы бота
  • Хотите контролировать, кто может взаимодействовать с ботом (чтобы избежать злоупотребления со стороны незнакомцев)
  • Хотите настроить разное поведение в разных серверных каналах

Это руководство пошагово научит вас решать эти проблемы.

Когда использовать этот метод ​

Канал Discord подходит для следующих сценариев:

  • ✅ Вы активный пользователь Discord и большая часть вашего общения происходит в Discord
  • ✅ Вы хотите добавить функции AI на сервер Discord (например, умный помощник в канале #help)
  • ✅ Вы хотите взаимодействовать с AI через Discord DM (удобнее, чем открывать WebChat)
  • ✅ Вам нужно, чтобы AI выполнял административные операции в Discord (создание каналов, отправка сообщений и т.д.)

Канал Discord основан на discord.js и поддерживает полный функционал Bot API.

🎒 Подготовка перед началом ​

Требования:

  • Завершили руководство Быстрый старт, Gateway может запускаться
  • Node.js ≥ 22
  • Аккаунт Discord (может создавать приложения)

Необходимая информация:

  • Discord Bot Token (покажем, как получить позже)
  • ID сервера (опционально, для настройки определенных каналов)
  • ID канала (опционально, для детального контроля)

Основная концепция ​

Как работает канал Discord ​

Канал Discord взаимодействует с Discord через официальный Bot API:

Пользователь Discord
     ↓
  Сервер Discord
     ↓
  Discord Bot Gateway
     ↓ (WebSocket)
  Clawdbot Gateway
     ↓
  AI Agent (Claude/GPT и т.д.)
     ↓
  Discord Bot API (отправка ответа)
     ↓
Сервер Discord
     ↓
Пользователь Discord (видит ответ)

Ключевые моменты:

  • Bot принимает сообщения через WebSocket (Gateway → Bot)
  • Clawdbot пересылает сообщения в AI Agent для обработки
  • AI может вызывать инструменты discord для выполнения операций, специфичных для Discord
  • Все ответы отправляются обратно в Discord через Bot API

Различия между DM и серверными каналами ​

ТипИзоляция сессийПоведение по умолчаниюПодходящие сценарии
Личные сообщения (DM)Все DM используют общую сессию agent:main:mainТребуется спаривание (pairing)Личный разговор, сохранение контекста
Серверный каналКаждый канал имеет независимую сессию agent:<agentId>:discord:channel:<channelId>Требуется @упоминание для ответаСерверный умный помощник, параллельные многоканальные сессии

TIP

Сессии серверных каналов полностью изолированы и не мешают друг другу. Разговоры в канале #help не появятся в #general.

Механизм защиты по умолчанию ​

Канал Discord по умолчанию включает защиту спаривания DM:

Неизвестный пользователь → отправляет DM → Clawdbot
                              ↓
                      Отказ от обработки, возврат кода спаривания
                              ↓
                Пользователь должен выполнить `clawdbot pairing approve discord <code>`
                              ↓
                            Спаривание успешно, можно общаться

Это предотвращает прямое взаимодействие незнакомых пользователей с вашим AI-помощником.


Следуйте за нами ​

Шаг 1: Создание приложения Discord и Bot ​

Зачем Discord Bot нужен «идентификатор», чтобы подключиться к серверу Discord. Этот идентификатор — Bot Token.

1.1 Создание приложения Discord ​

  1. Откройте Discord Developer Portal
  2. Нажмите New Application (Новое приложение)
  3. Введите название приложения (например, Clawdbot AI)
  4. Нажмите Create (Создать)

1.2 Добавление пользователя Bot ​

  1. В левой навигации нажмите Bot (Бот)
  2. Нажмите Add Bot → Reset Token → Reset Token (Сбросить токен)
  3. Важно: Сразу скопируйте Bot Token (отображается только один раз!)
Формат Bot Token: MTAwOTk1MDk5NjQ5NTExNjUy.Gm9...
(Изменяется при каждом сбросе, храните надежно!)

1.3 Включение необходимых Gateway Intents ​

Discord по умолчанию не позволяет Bot читать содержимое сообщений, нужно включить вручную.

В Bot → Privileged Gateway Intents (Привилегированные намерения шлюза) включите:

IntentОбязателенОписание
Message Content Intent✅ ОбязателенЧтение текстового содержимого сообщения (без него Bot не видит сообщения)
Server Members Intent⚠️ РекомендуетсяДля поиска участников и разрешения имен пользователей

Не делайте

Не включайте Presence Intent (Намерение присутствия), если вам действительно не нужен онлайн-статус пользователей.

Что вы должны увидеть: оба переключателя стали зелеными (ON).


Шаг 2: Генерация URL приглашения и добавление на сервер ​

Зачем Bot нужны права доступа для чтения и отправки сообщений на сервере.

  1. В левой навигации нажмите OAuth2 → URL Generator

  2. В Scopes (Область) выберите:

    • ✅ bot
    • ✅ applications.commands (для нативных команд)
  3. В Bot Permissions (Права бота) выберите минимум:

ПравоОписание
View ChannelsПросмотр каналов
Send MessagesОтправка сообщений
Read Message HistoryЧтение истории сообщений
Embed LinksВстраивание ссылок
Attach FilesЗагрузка файлов

Опциональные права (добавьте по необходимости):

  • Add Reactions (Добавление реакции)
  • Use External Emojis (Использование кастомных эмодзи)

Совет по безопасности

Избегайте предоставления прав Administrator (Администратор), если только вы не отлаживаете и полностью доверяете боту.

  1. Скопируйте сгенерированный URL
  2. Откройте URL в браузере
  3. Выберите свой сервер, нажмите Authorize (Авторизовать)

Что вы должны увидеть: Bot успешно добавлен на сервер, отображается зеленым онлайн-статусом.


Шаг 3: Получение необходимых ID (сервер, канал, пользователь) ​

Зачем Конфигурация Clawdbot предпочитает использовать ID (числа), потому что ID не меняются.

3.1 Включение режима разработчика Discord ​

  1. Discord Desktop/Web → User Settings (Настройки пользователя)
  2. Advanced (Дополнительно) → включите Developer Mode (Режим разработчика)

3.2 Копирование ID ​

ТипДействие
ID сервераПравый клик по названию сервера → Copy Server ID
ID каналаПравый клик по каналу (например, #general) → Copy Channel ID
ID пользователяПравый клик по аватару пользователя → Copy User ID

ID против имени

При настройке используйте ID в приоритете. Имя может измениться, но ID никогда не изменится.

Что вы должны увидеть: ID скопирован в буфер обмена (формат: 123456789012345678).


Шаг 4: Настройка подключения Clawdbot к Discord ​

Зачем Сказать Clawdbot, как подключиться к вашему Discord Bot.

Метод 1: Через переменные окружения (рекомендуется, для серверов) ​

bash
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"

clawdbot gateway --port 18789

Метод 2: Через конфигурационный файл ​

Отредактируйте ~/.clawdbot/clawdbot.json:

json5
{
  channels: {
    discord: {
      enabled: true,
      token: "YOUR_BOT_TOKEN"  // Token, скопированный на шаге 1
    }
  }
}

Приоритет переменных окружения

Если установлены переменные окружения и конфигурационный файл, конфигурационный файл имеет приоритет.

Что вы должны увидеть: После запуска Gateway, Discord Bot отображается в онлайн-статусе.


Шаг 5: Проверка подключения и тестирование ​

Зачем Убедиться, что конфигурация правильная, Bot может нормально принимать и отправлять сообщения.

  1. Запустите Gateway (если еще не запущен):
bash
clawdbot gateway --port 18789 --verbose
  1. Проверьте статус Discord Bot:

    • Bot должен отображаться зеленым онлайн в списке участников сервера
    • Если он серый офлайн, проверьте правильность Token
  2. Отправьте тестовое сообщение:

В Discord:

  • Личные сообщения (DM): Отправьте сообщение напрямую боту (получите код спаривания, см. следующий раздел)
  • Серверный канал: @упомяните бота, например @ClawdbotAI hello

Что вы должны увидеть: Bot отвечает сообщением (содержимое зависит от вашей AI-модели).

Тест не удался?

Если Bot не отвечает, проверьте раздел Устранение неполадок.


Контрольная точка ✅ ​

Перед продолжением подтвердите следующее:

  • [ ] Bot Token правильно настроен
  • [ ] Bot успешно добавлен на сервер
  • [ ] Message Content Intent включен
  • [ ] Gateway работает
  • [ ] Bot отображается онлайн в Discord
  • [ ] @упоминание Bot получает ответ

Расширенная настройка ​

Контроль доступа DM ​

Стратегия по умолчанию — pairing (режим спаривания), подходит для личного использования. Вы можете настроить по необходимости:

СтратегияОписаниеПример конфигурации
pairing (по умолчанию)Незнакомцы получают код спаривания, требуют ручного одобрения"dm": { "policy": "pairing" }
allowlistРазрешить только пользователей из списка"dm": { "policy": "allowlist", "allowFrom": ["123456", "alice"] }
openРазрешить всем (требуется allowFrom содержит "*")"dm": { "policy": "open", "allowFrom": ["*"] }
disabledОтключить все DM"dm": { "enabled": false }

Пример конфигурации: разрешение определенных пользователей ​

json5
{
  channels: {
    discord: {
      dm: {
        enabled: true,
        policy: "allowlist",
        allowFrom: [
          "123456789012345678",  // ID пользователя
          "@alice",                   // Имя пользователя (будет разрешено как ID)
          "alice#1234"              // Полное имя пользователя
        ]
      }
    }
  }
}

Одобрение запроса спаривания ​

Когда незнакомый пользователь впервые отправляет DM, он получает код спаривания. Способ одобрения:

bash
clawdbot pairing approve discord <код спаривания>

Настройка серверных каналов ​

Базовая настройка: разрешить только определенные каналы ​

json5
{
  channels: {
    discord: {
      groupPolicy: "allowlist",  // Режим белого списка (по умолчанию)
      guilds: {
        "123456789012345678": {
          requireMention: true,  // Требуется @упоминание для ответа
          channels: {
            help: { allow: true },    // Разрешить #help
            general: { allow: true } // Разрешить #general
          }
        }
      }
    }
  }
}

TIP

requireMention: true — рекомендуемая настройка, избегает «самодеятельности» бота в публичных каналах.

Расширенная настройка: уникальное поведение канала ​

json5
{
  channels: {
    discord: {
      guilds: {
        "123456789012345678": {
          slug: "my-server",              // Отображаемое имя (опционально)
          reactionNotifications: "own",      // Только реакции к сообщениям бота триггерят события
          channels: {
            help: {
              allow: true,
              requireMention: true,
              users: ["987654321098765432"], // Только определенные пользователи могут триггерить
              skills: ["search", "docs"],    // Ограничить доступные навыки
              systemPrompt: "Keep answers under 50 words."  // Дополнительный системный промпт
            }
          }
        }
      }
    }
  }
}

Операции с инструментами Discord ​

AI Agent может вызывать инструменты discord для выполнения операций, специфичных для Discord. Управляйте правами через channels.discord.actions:

Категория операцииСтатус по умолчаниюОписание
reactions✅ ВключенДобавление/чтение реакций
messages✅ ВключенЧтение/отправка/редактирование/удаление сообщений
threads✅ ВключенСоздание/ответ в темах
channels✅ ВключенСоздание/редактирование/удаление каналов
pins✅ ВключенЗакрепление/открепление сообщений
search✅ ВключенПоиск сообщений
memberInfo✅ ВключенЗапрос информации об участнике
roleInfo✅ ВключенЗапрос списка ролей
roles❌ ОтключенДобавление/удаление ролей
moderation❌ ОтключенБан/выкидывание/тайм-аут

Отключение определенных операций ​

json5
{
  channels: {
    discord: {
      actions: {
        channels: false,      // Отключить управление каналами
        moderation: false,   // Отключить операции модерации
        roles: false         // Отключить управление ролями
      }
    }
  }
}

Предупреждение безопасности

При включении операций moderation и roles убедитесь, что AI имеет строгие промпты и контроль доступа, чтобы избежать случайного бана пользователей.

Другие параметры конфигурации ​

ПараметрОписаниеПо умолчанию
historyLimitКоличество исторических сообщений в контексте серверного канала20
dmHistoryLimitКоличество исторических сообщений в сессии DMНе ограничено
textChunkLimitМаксимальное количество символов в одном сообщении2000
maxLinesPerMessageМаксимальное количество строк в одном сообщении17
mediaMaxMbМаксимальный размер загружаемого медиафайла (МБ)8
chunkModeРежим разбиения сообщений (length/newline)length

Предупреждение об ошибках ​

❌ Ошибка "Used disallowed intents" ​

Причина: Не включен Message Content Intent.

Решение:

  1. Вернитесь в Discord Developer Portal
  2. Bot → Privileged Gateway Intents
  3. Включите Message Content Intent
  4. Перезапустите Gateway

❌ Bot подключен, но не отвечает ​

Возможные причины:

  1. Отсутствует Message Content Intent
  2. Bot нет прав доступа к каналу
  3. Конфигурация требует @упоминания, но вы не упомянули
  4. Канал не в белом списке

Шаги решения:

bash
# Запуск инструмента диагностики
clawdbot doctor

# Проверка статуса канала и прав доступа
clawdbot channels status --probe

❌ Код спаривания DM истек ​

Причина: Срок действия кода спаривания — 1 час.

Решение: Попросите пользователя снова отправить DM, получить новый код спаривания, затем одобрить.

❌ Групповые DM игнорируются ​

Причина: По умолчанию dm.groupEnabled: false.

Решение:

json5
{
  channels: {
    discord: {
      dm: {
        groupEnabled: true,
        groupChannels: ["clawd-dm"]  // Опционально: разрешить только определенные групповые DM
      }
    }
  }
}

Устранение неполадок ​

Диагностика распространенных проблем ​

bash
# 1. Проверка работы Gateway
clawdbot gateway status

# 2. Проверка статуса подключения канала
clawdbot channels status

# 3. Запуск полной диагностики (рекомендуется!)
clawdbot doctor

Отладка через логи ​

Запустите Gateway с --verbose для просмотра подробных логов:

bash
clawdbot gateway --port 18789 --verbose

Обратите внимание на эти логи:

  • Discord channel connected: ... → Успешное подключение
  • Message received from ... → Получено сообщение
  • ERROR: ... → Информация об ошибке

Резюме урока ​

  • Канал Discord подключается через discord.js, поддерживает DM и серверные каналы
  • Создание Bot требует 4 шага: приложение, пользователь Bot, Gateway Intents, URL приглашения
  • Message Content Intent обязателен, без него Bot не может читать сообщения
  • По умолчанию включена защита спаривания DM, незнакомцы должны спариться, чтобы общаться
  • Серверные каналы можно настроить через guilds.<id>.channels (белый список и поведение)
  • AI может вызывать инструменты Discord для выполнения административных операций (можно контролировать через actions)

Предварительный просмотр следующего урока ​

На следующем уроке мы изучим Канал Google Chat.

Вы узнаете:

  • Как настроить аутентификацию Google Chat OAuth
  • Маршрутизацию сообщений в Google Chat Space
  • Ограничения использования Google Chat API

Приложение: ссылка на исходный код ​

Нажмите, чтобы развернуть местоположение исходного кода

Время обновления: 2026-01-27

ФункцияПуть к файлуНомер строки
Schema конфигурации Discord Botsrc/config/zod-schema.providers-core.ts320-427
Мастер настройки Discord Onboardingsrc/channels/plugins/onboarding/discord.ts1-485
Операции с инструментами Discordsrc/agents/tools/discord-actions.ts1-72
Операции с сообщениями Discordsrc/agents/tools/discord-actions-messaging.ts-
Операции с сервером Discordsrc/agents/tools/discord-actions-guild.ts-
Официальная документация Discorddocs/channels/discord.md1-400

Ключевые поля Schema:

  • DiscordAccountSchema: конфигурация аккаунта Discord (token, guilds, dm, actions и т.д.)
  • DiscordDmSchema: конфигурация DM (enabled, policy, allowFrom, groupEnabled)
  • DiscordGuildSchema: конфигурация сервера (slug, requireMention, reactionNotifications, channels)
  • DiscordGuildChannelSchema: конфигурация канала (allow, requireMention, skills, systemPrompt)

Ключевые функции:

  • handleDiscordAction(): точка входа для обработки операций с инструментами Discord
  • discordOnboardingAdapter.configure(): мастер конфигурации в пошаговом режиме