Как создать чат-бота в Discord
Бот в Discord умеет всё то же, что и в остальных каналах, плюс работу с сервером: отвечать в каналах, тредах и личных сообщениях, ставить реакции, принимать и отправлять файлы, редактировать и удалять свои сообщения. Отдельно доступны модерация (мьют, кик, бан, удаление сообщений), выдача ролей, создание каналов под тикеты и слэш-команды.
Подключение занимает около десяти минут и состоит из двух частей: сначала бот создаётся на стороне Discord, затем подключается к проекту в Salebot.
Шаг 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 ещё раз, старый сразу перестанет работать, и подключите бота в Salebot заново с новым токеном.
Шаг 4. Выберите права
Откройте OAuth2 → URL Generator.
В блоке Scopes отметьте:
-
bot— собственно бот; -
applications.commands— если планируете слэш-команды. Без этого scope зарегистрировать команды на сервере не получится.
Ниже появится блок 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 Generator, откройте её в браузере и выберите сервер. Добавить бота может только владелец сервера или участник с правом Manage Server.
После добавления проверьте порядок ролей:
Настройки сервера → Роли
Роль бота должна стоять выше тех ролей, которые он будет выдавать, и выше ролей участников, которых он должен модерировать.
Это ограничение самого Discord: бот не может выдать роль, которая находится на одном уровне с его собственной или выше, и не может замьютить или забанить того, чья роль выше его роли.
Шаг 6. Оставьте Interactions Endpoint URL пустым
Вернитесь в General Information вашего приложения и убедитесь, что поле Interactions Endpoint URL пустое.
Если в этом поле что-то указано, Discord перестаёт отправлять боту нажатия кнопок и вызовы слэш-команд — они уходят на указанный адрес.
Внешне это выглядит так, будто кнопки в сообщениях бота не работают, а слэш-команды отвечают «Приложение не отвечает».
Шаг 7. Подключите бота к проекту
В проекте Salebot откройте раздел Каналы, нажмите кнопку Discord и вставьте токен из шага 3.
Через несколько секунд бот появится на сервере со статусом «в сети». Если этого не произошло, проверьте, что токен скопирован целиком и без пробелов по краям.
Проверьте, что всё работает
Напишите в любом канале сервера сообщение, на которое настроен ответ бота, — должен прийти ответ.
Если бот молчит, но онлайн, скорее всего не включён Message Content Intent.
Зайдите на сервер новым участником (или попросите коллегу) — должно отработать приветствие. Если нет — проверьте Server Members Intent.
Нажмите кнопку в сообщении бота — если ничего не происходит, проверьте Interactions Endpoint URL.
Что важно знать
Диалог в канале — один на всех
Все участники канала пишут в один и тот же диалог, как в групповом чате.
Переменные вроде «кто написал» относятся к автору последнего сообщения и перезаписываются следующим — читайте их сразу в том же блоке.
Личная переписка с ботом и события участника (вход, выход, смена ролей) идут в отдельный диалог с этим человеком.
Личные сообщения ограничены Discord
Бот может написать участнику в личку, только если тот состоит с ним на общем сервере и не запретил личные сообщения от участников сервера в своих настройках приватности.
Если человек их запретил, отправка не пройдёт — это ограничение Discord, обойти его нельзя.
Полный вебхук
Если присвоить любое значение переменной save_webhook, все данные входящего события будут сохраняться в переменную discord_webhook.
Нужно редко — почти всё, что оттуда может понадобиться, уже разложено по отдельным переменным.
Частые проблемы
| Что происходит | Почему |
|---|---|
| Бот в сети, но не реагирует на текст | Не включён Message Content Intent |
| Не приходят входы, выходы и смены ролей | Не включён Server Members Intent |
| Кнопки не нажимаются, слэш-команды пишут «Приложение не отвечает» | Заполнен Interactions Endpoint URL |
| Слэш-команды не удаётся зарегистрировать | Бот добавлен без scope applications.commands — пересоберите ссылку и добавьте бота заново |
| Не выдаётся роль | Роль бота стоит не выше выдаваемой, либо нет права Manage Roles. Роли, управляемые интеграциями (в том числе роли других ботов), и роль @everyone выдать нельзя вообще |
| Не получается замьютить или забанить участника | У участника роль выше, чем у бота, либо нет прав Moderate Members / Ban Members |
| Бот не видит один конкретный канал | Права на самом канале перекрывают серверные. Проверьте доступ роли бота в настройках этого канала |
| Не удаляются сообщения | Нет права Manage Messages. Массовое удаление Discord разрешает только для сообщений не старше 14 дней |
Что дальше
Чат-бот в Discord поддерживает всё то же, что и в остальных каналах: пишет в каналы, треды и личные сообщения, ставит реакции, прикрепляет и принимает вложения, изменяет и удаляет свои сообщения.
Список функций для работы с сервером из воронки — в статье «Функции API для Discord».
Как собрать саму цепочку сообщений — в разделе «Как создать чат-бот для бизнеса».
Чтобы с клиентами в Discord общался ИИ, включите AI-ассистента — раздел «AI-ассистент».