ACLClouds
ACLClouds

Частые ошибки бота 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, который возникает время от времени, часто идёт из сети. Повторите попытку после паузы; если ошибка держится при верном коде, обратитесь в поддержку и укажите точное время.