Частые ошибки бота Discord и как их читать
Отключённые интенты (4014), лимит частоты (429), EAI_AGAIN, неверный токен: что значит каждая ошибка и что проверить первым.
Большинство сбоев бота Discord сводятся к четырём ошибкам. У каждой есть точная причина, и порядок проверки важен: токен и интенты проверяются за две минуты, лимит частоты требует пересмотреть цикл отправки, а EAI_AGAIN относится к сети, а не к вашему коду.
- Ошибка 4014: запрошен привилегированный интент, который не включён в портале.
- Ошибка 429: слишком много отправок слишком быстро. Подождите время, которое указал Discord.
- EAI_AGAIN: сбой разрешения DNS на стороне сети, а не в вашем коде.
- Неверный токен: LoginFailure или «invalid token», исправляется в переменной.
Отключённые интенты: ошибка 4014
Ошибка 4014 (Disallowed intents) означает, что бот запрашивает привилегированный интент, например чтение содержимого сообщений, не включив его в портале разработчиков. Discord тогда отклоняет подключение.
- Откройте портал разработчиков, раздел Bot, и включите привилегированные интенты, которые использует код.
- Запрашивайте в коде только нужные интенты: каждый лишний интент: ещё одно разрешение, которое надо включать.
- После изменения перезапустите бота. Перезапуск без изменений повторяет ту же ошибку.
Лимит частоты: ошибка 429
Код 429 (Too Many Requests) означает, что бот превысил темп, разрешённый Discord, часто из-за отправки или правки сообщений в цикле. В ответе указано, сколько ждать.
- discord.js и discord.py сами ждут для большинства запросов, но бесконечный цикл отправки не остановится.
- Растягивайте повторяющиеся действия: сообщение раз в несколько секунд лучше серии.
- Соблюдайте указанное время ожидания и не перезапускайте бота в цикле в это время.
Сеть: EAI_AGAIN и ECONNRESET
EAI_AGAIN означает, что доменное имя Discord не удалось разрешить. ECONNRESET означает, что соединение оборвалось на полпути. Эти ошибки возникают в сети между сервером и Discord, а не в строке вашего кода.
- Если ошибка появляется время от времени, большинство библиотек повторяют подключение с возрастающей паузой.
- Сбои DNS и соединения известны и исправляются. Если код верный, а ошибка не уходит, обратитесь в поддержку и укажите точное время.
- Единичная ошибка часто временная: подождите несколько минут, прежде чем что-то менять.
Неверный токен: LoginFailure
Неверный, просроченный или сброшенный токен не даёт подключиться уже при запуске. Сообщение обычно такое: Improper token has been passed в Python или An invalid token was provided в Node.js.
- Проверьте, что переменная содержит токен, без лишних пробелов и кавычек.
- Если токен сбросили в портале, старое значение больше не работает: скопируйте новое.
- Никогда не вставляйте токен в сообщение, чтобы его проверили.
Почему ACLClouds для ваших ботов
Ошибки токена и интентов исправляются в коде и в портале Discord. Бесплатный тариф даёт боту собственное пространство, где можно исправить код и выложить его заново.
- Бесплатный тариф: 1 бот, 315 МБ ОЗУ, 0,25 vCPU, 715 МБ хранилища.
- Доступ SFTP для каждого бота на порту 2222, чтобы исправить код и загрузить его снова.
- ffmpeg, yt-dlp и deno включены в образы Node.js и Python.
Часто задаваемые вопросы
Может ли бот быть заблокирован из-за ошибки 429?
Ошибка 429: временное ограничение, а не наказание. Но многократное игнорирование ожидания может привести к более долгой блокировке со стороны Discord. Исправьте цикл.
Вчера бот был онлайн, сегодня нет. Почему?
Сначала посмотрите логи: ошибка токена, отключённый интент или обрыв сети оставляют след. Также проверьте срок бесплатного тарифа: 4 дня, продлеваются со страницы бота за 2 дня до окончания или после приостановки.
Почему EAI_AGAIN появляется только иногда?
Сбой DNS, который возникает время от времени, часто идёт из сети. Повторите попытку после паузы; если ошибка держится при верном коде, обратитесь в поддержку и укажите точное время.