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, и запрос без валидной подписи отбрасывается. Без любого из двух полей подключение не создаётся.
Подключение и вебхук
- Developer Portal → New Application, вкладка Bot → скопируйте Bot Token.
- В General Information скопируйте Application ID и Public Key.
- Проект → Каналы → 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 от другого приложения, проверка не пройдёт.