ACLClouds
ACLClouds

Erros comuns de bot do Discord e como lê-los

Intents desativados (4014), limite de taxa (429), EAI_AGAIN, token inválido: o que cada erro significa e o que verificar primeiro.

A maioria das falhas de um bot do Discord se resume a quatro erros. Cada um tem uma causa precisa, e a ordem das verificações importa: o token e os intents se conferem em dois minutos, o limite de taxa pede revisão do laço de envio, e o EAI_AGAIN afeta a rede, não o seu código.

  • Erro 4014: um intent privilegiado é pedido, mas não está ativado no portal.
  • Erro 429: envios demais e rápido demais. Espere o tempo indicado pelo Discord.
  • EAI_AGAIN: falha de resolução DNS do lado da rede, não no seu código.
  • Token inválido: LoginFailure ou «invalid token», a corrigir na variável.

Intents desativados: erro 4014

O erro 4014 (Disallowed intents) significa que o bot pede um intent privilegiado, como a leitura do conteúdo das mensagens, sem tê-lo ativado no portal de desenvolvedores. O Discord então recusa a conexão.

  • Abra o portal de desenvolvedores, seção Bot, e ative os intents privilegiados usados pelo código.
  • Peça no código apenas os intents de que precisa: cada intent desnecessário é uma permissão a mais para ativar.
  • Depois de uma alteração, reinicie o bot. Um reinício sem mudanças repete o mesmo erro.

Limite de taxa: erro 429

O código 429 (Too Many Requests) significa que o bot ultrapassou o ritmo permitido pelo Discord, muitas vezes porque envia ou edita mensagens em um laço. A resposta indica quanto tempo esperar.

  • discord.js e discord.py esperam sozinhos na maioria das requisições, mas um laço de envios sem fim nunca para.
  • Espace as ações repetidas: uma mensagem a cada poucos segundos é melhor que uma rajada.
  • Respeite o tempo de espera indicado e não reinicie o bot em laço durante esse tempo.

Rede: EAI_AGAIN e ECONNRESET

EAI_AGAIN significa que o nome de domínio do Discord não pôde ser resolvido. ECONNRESET significa que a conexão foi cortada no meio do caminho. Esses erros vêm da rede entre o servidor e o Discord, não de uma linha do seu código.

  • Se o erro aparece de forma intermitente, a maioria das bibliotecas tenta a conexão de novo com um intervalo crescente.
  • Quedas de DNS ou de conexão são conhecidas e estão sendo corrigidas. Se o código estiver correto e o erro persistir, fale com o suporte informando a hora exata.
  • Um erro isolado costuma ser passageiro: espere alguns minutos antes de mudar qualquer coisa.

Token inválido: LoginFailure

Um token inválido, expirado ou redefinido faz a conexão falhar já na inicialização. A mensagem costuma ser Improper token has been passed no Python, ou An invalid token was provided no Node.js.

  • Confira se a variável contém o token, sem espaços ou aspas a mais.
  • Se o token foi redefinido no portal, o valor anterior não funciona mais: copie o novo.
  • Nunca cole o token em uma mensagem para que alguém o verifique.

Por que a ACLClouds para os seus bots

Erros de token e de intents se corrigem no código e no portal do Discord. O plano gratuito dá ao bot um espaço próprio, onde você pode corrigir o código e reimplantá-lo.

  • Plano gratuito: 1 bot, 315 MB de RAM, 0,25 vCPU, 715 MB de armazenamento.
  • Acesso SFTP por bot na porta 2222, para corrigir o código e reenviá-lo.
  • ffmpeg, yt-dlp e deno incluídos nas imagens Node.js e Python.

Perguntas frequentes

Um bot pode ser bloqueado por um erro 429?

Um erro 429 é um limite temporário, não uma punição. Mas ignorar as esperas repetidamente pode levar a um bloqueio mais longo do lado do Discord. Corrija o laço.

Meu bot estava online ontem e hoje não está. Por quê?

Leia primeiro os logs: um erro de token, um intent desativado ou uma queda de rede deixam rastro. Confira também a data de fim do plano gratuito: 4 dias, renováveis pela página do bot nos 2 dias antes do vencimento, ou depois de suspenso.

Por que o EAI_AGAIN aparece só às vezes?

Uma resolução DNS que falha de forma intermitente costuma vir da rede. Tente de novo depois de uma pausa; se o erro persistir com código correto, fale com o suporte informando a hora exata.