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 BotReset TokenReset 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(): мастер конфигурации в пошаговом режиме