Как создать чат-бота в 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."