Discord — подключение и проверка

Бот работает как приложение Discord: отвечает на slash-команды, нажатия кнопок и сообщения в личных диалогах приложения.

Что нужно заранее

  • Аккаунт Discord и приложение в Developer Portal (discord.com/developers/applications).
  • Сервер Discord, куда вы вправе пригласить бота.
  • Роль администратор в проекте ImpactBot: канал подключает только она.
  • Свободный слот канала в тарифе — иначе подключение остановится с сообщением про лимит.

Права и доступы

Бота приглашают на сервер ссылкой из OAuth2 → URL Generator. В ней нужны:

  • Scopes: `bot` и `applications.commands`. Второй обязателен — без него slash-команды не появятся на сервере.
  • Bot Permissions: Send Messages, Read Message History, View Channels.

Кроме токена ImpactBot спрашивает Application ID и Public Key (Ed25519) из раздела General Information. Public Key — не украшение: по нему проверяется подпись каждого входящего запроса Discord, и запрос без валидной подписи отбрасывается. Без любого из двух полей подключение не создаётся.

Подключение и вебхук

  1. Developer Portal → New Application, вкладка Bot → скопируйте Bot Token.
  2. В General Information скопируйте Application ID и Public Key.
  3. Проект → КаналыDiscord → заполните название, Bot Token, Application ID, Public Key → «Подключить».

Slash-команды `/start` и `/menu` регистрируются сразу после подключения — заводить их в Developer Portal не нужно.

Адрес приёма событий указывается вручную, и по-другому не бывает: Discord шлёт интеракции только на Interactions Endpoint URL, а поле это есть лишь в Developer Portal. После подключения окно показывает готовый адрес вида `/api/webhook/discord/<ID канала>` с кнопкой копирования — вставьте его в General Information → Interactions Endpoint URL и сохраните. Discord тут же проверит адрес подписанным PING. Пока адрес не сохранён, бот молчит: команды зарегистрированы, но отвечать на них некому.

Проверка

Нажмите «Проверить» на карточке канала. Диагностика Discord показывает четыре факта: подтверждён ли Bot Token, сохранены ли Application ID и Public Key, разрешена ли боту отправка (проба уходит в заведомо несуществующий канал, поэтому никому ничего не доставляется) и приходили ли вообще входящие.

После этого выполните `/start` на своём сервере — сообщение должно появиться в разделе «Диалоги».

Частые ошибки

  • «Discord Application ID and Public Key are required». Заполнены не все поля: одного Bot Token мало.
  • «Invalid Discord bot token». Токен скопирован с пробелом, обрезан или перевыпущен в Developer Portal — возьмите текущий.
  • Команд нет в списке сервера. Бот приглашён без scope `applications.commands`. Соберите ссылку заново и пригласите ещё раз.
  • Команда есть, ответа нет. Не сохранён Interactions Endpoint URL либо в нём чужой ID канала.
  • Диагностика пишет «Discord запрещает боту отправку». Бота выкинули с сервера или сняли право Send Messages.
  • Discord не принимает Interactions Endpoint URL. Он проверяет адрес подписью по Public Key: если ключ в ImpactBot от другого приложения, проверка не пройдёт.