Как создать чат-бота в Discord

Discord-бот может делать всё то же, что и в других каналах, а также напрямую взаимодействовать с вашим сервером: отвечать в каналах, тредах и личных сообщениях, добавлять реакции, получать и отправлять файлы, редактировать и удалять собственные сообщения. Дополнительные возможности включают модерацию (тайм-ауты, кики, баны и удаление сообщений), управление ролями, создание каналов для тикетов и слэш-команды.

Настройка занимает около десяти минут и состоит из двух частей: сначала создайте бота на стороне Discord, затем подключите его к вашему проекту в Mavibot.

Шаг 1. Создайте приложение

Откройте Discord Developer Portal и нажмите New Application. Введите имя — его увидят участники сервера.

В разделе Installation установите Install Link в значение None. Ссылку для установки бота вы создадите сами на шаге 4 с необходимыми разрешениями.

Шаг 2. Настройте бота

Перейдите в раздел Bot.

Отключите Public Bot. Иначе любой сможет добавить вашего бота на свой сервер.

Включите необходимые привилегированные интенты — без них Discord не будет отправлять боту определённые данные:

Интент Зачем нужен
Message Content Intent Текст сообщений. Без него бот видит, что сообщение отправлено, но не может прочитать его содержимое, поэтому текстовые триггеры не сработают.
Server Members Intent События участников: входы, выходы, изменения ролей и никнеймов. Без него не будут работать приветствия новых участников и автоматическая выдача ролей.
Presence Intent Статус онлайн. Не требуется для работы бота, включать не обязательно.

Шаг 3. Получите токен бота

В том же разделе Bot нажмите Reset Token и скопируйте появившийся токен. Он отображается только один раз — сохраните его, он понадобится на шаге 6.

Важно! Токен предоставляет полный доступ к вашему боту. Не публикуйте и не передавайте его. Если токен скомпрометирован, снова нажмите Reset Token. Старый токен сразу перестанет работать, и вам нужно будет переподключить бота в Mavibot с новым токеном.

Шаг 4. Выберите разрешения

Откройте OAuth2 → URL Generator.

В разделе Scopes выберите:

  • bot — сам бот;
  • applications.commands — если планируете использовать слэш-команды. Без этого разрешения команды не смогут быть зарегистрированы на сервере.

Ниже появится раздел Bot Permissions. Выбирайте только те разрешения, которые действительно нужны вашему боту — лучше не давать лишних.

Минимальные разрешения для отправки сообщений

Разрешение Что не будет работать без него
View Channels Бот не сможет видеть каналы
Send Messages Бот не сможет отвечать
Read Message History Не будут работать ответы на сообщения и цитирование
Embed Links, Attach Files Не будут отправляться ссылки с превью и файлы
Add Reactions Бот не сможет добавлять реакции

Дополнительные разрешения для модерации и автоматизации

Разрешение Для чего используется
Manage Messages Удаление сообщений других пользователей и управление закреплёнными сообщениями
Moderate Members Тайм-ауты (муты)
Kick Members Удаление участников с сервера
Ban Members Бан и разбан участников
Manage Roles Назначение и снятие ролей
Manage Nicknames Изменение никнеймов участников
Manage Channels Создание и удаление каналов, включая каналы тикетов
Create Instant Invite Создание пригласительных ссылок

Разрешения также можно изменить позже в настройках роли бота на сервере без переподключения бота.

Шаг 5. Добавьте бота на сервер

Скопируйте URL, сгенерированный внизу страницы URL Generator, откройте его в браузере и выберите сервер.

Добавить бота может только владелец сервера или участник с разрешением Manage Server.

После добавления бота проверьте порядок ролей:

Server Settings → Roles

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

Это ограничение Discord: бот не может назначить роль, которая находится на том же уровне или выше его собственной роли, и не может выдать тайм-аут или забанить участника, чья роль выше роли бота.

Шаг 6. Оставьте поле Interactions Endpoint URL пустым

Вернитесь в раздел General Information вашего приложения и убедитесь, что поле Interactions Endpoint URL пусто.

Если в этом поле что-то указано, Discord перестаёт отправлять боту клики по кнопкам и взаимодействия со слэш-командами — они отправляются на указанный URL вместо этого.

С точки зрения пользователя это выглядит так: кнопки в сообщениях бота не работают, а слэш-команды возвращают "Application did not respond."

Шаг 7. Подключите бота к проекту

В вашем проекте Mavibot откройте раздел Channels, нажмите Discord и вставьте токен с шага 3.

Через несколько секунд бот должен появиться онлайн на вашем сервере Discord. Если этого не произошло, убедитесь, что токен скопирован полностью и не содержит лишних пробелов.

Проверьте, что всё работает

Отправьте сообщение в любом канале сервера, которое должно вызвать один из ответов вашего бота — бот должен ответить.

Если бот онлайн, но не отвечает, скорее всего, не включён Message Content Intent.

Зайдите на сервер с другой учётной записи или попросите коллегу присоединиться — должно сработать приветствие нового участника. Если этого не произошло, проверьте Server Members Intent.

Нажмите кнопку в сообщении бота. Если ничего не происходит, проверьте Interactions Endpoint URL.

Важные моменты

Беседа в канале является общей для всех

Все участники канала пишут в один и тот же разговор, как в групповом чате.

Переменные, такие как "кто отправил сообщение", относятся к автору последнего сообщения и перезаписываются следующим сообщением — читайте и обрабатывайте их сразу в том же блоке.

Личные сообщения с ботом и события участников, такие как входы, выходы и изменения ролей, обрабатываются в отдельном разговоре для этого участника.

Личные сообщения ограничены Discord

Бот может отправить личное сообщение участнику только в том случае, если участник находится на одном сервере с ботом и не отключил личные сообщения от участников сервера в своих настройках конфиденциальности.

Если участник отключил личные сообщения, сообщение не может быть доставлено — это ограничение Discord, и его нельзя обойти.

Полные данные вебхука

Если вы присвоите какое-либо значение переменной save_webhook, все входящие данные события будут сохранены в переменную discord_webhook.

Это редко требуется — почти всё, что может понадобиться из вебхука, уже доступно через отдельные переменные.

Частые проблемы

Что происходит Почему
Бот онлайн, но не отвечает на текст Не включён Message Content Intent
Не приходят события входа, выхода и изменения ролей Не включён Server Members Intent
Кнопки не работают, а слэш-команды возвращают "Application did not respond" Заполнено поле Interactions Endpoint URL
Не удаётся зарегистрировать слэш-команды Бот был добавлен без разрешения applications.commands — сгенерируйте новую ссылку для установки и добавьте бота снова
Бот не может назначить роль Роль бота не выше целевой роли, или у бота нет разрешения Manage Roles. Роли, управляемые интеграциями, включая роли других ботов, и роль @everyone не могут быть назначены
Бот не может выдать тайм-аут или забанить участника Роль участника выше роли бота, или у бота нет разрешения Moderate Members / Ban Members
Бот не видит определённый канал Разрешения на уровне канала переопределяют разрешения на уровне сервера. Проверьте разрешения роли бота в настройках этого канала
Не удаётся удалить сообщения У бота нет разрешения Manage Messages. Discord позволяет массовое удаление только для сообщений младше 14 дней

Что дальше

Чат-бот Discord поддерживает те же основные функции, что и боты в других каналах: он может отправлять сообщения в каналы, треды и личные сообщения, добавлять реакции, отправлять и получать вложения, а также редактировать и удалять собственные сообщения.

О функциях управления сервером, доступных из вашего потока бота, см. "Функции Discord API."

Чтобы узнать, как построить сам поток сообщений, см. "Как создать чат-бота для бизнеса."

Чтобы позволить ИИ общаться с клиентами в Discord, включите AI Assistant — см. раздел "AI Assistant."