”LoginFailure: Improper token has been passed” / TOKEN_INVALID
O que significa: a biblioteca rejeita o token com o qual você está fazendo login (o discord.js lançaLoginFailure/“An invalid token was provided”; outras stacks retornam um 401 TOKEN_INVALID).
Por que acontece:
- O token foi regenerado ou revogado no Discord Developer Portal. Gerar um novo token invalida instantaneamente o antigo em todos os lugares onde ele é usado.
- A string do token tem espaços ou aspas extras copiados por acidente.
- O código está lendo a variável de ambiente errada.
- Vá para o Developer Portal → sua aplicação → Bot → Reset Token.
- Atualize o token nas Environment Variables desta aplicação no dashboard da Square Cloud. Nunca faça commit do token em um arquivo que é enviado no
.zip. - Verifique se não há espaços ou aspas soltas ao redor do valor.
- Atualize a biblioteca (
discord.js@latestoupip install -U discord.py). - Reinicie a aplicação.
”Used disallowed intents” / Message Content Intent
O que significa: o bot faz login e aparece online, mas ignora todas as mensagens, ou o gateway rejeita a conexão com “used disallowed intents”. Por que acontece: desde 2022, Message Content é uma intent privilegiada. Sem ela explicitamente habilitada nos dois lugares, o conteúdo da mensagem chega vazio (ou a conexão do gateway é recusada se o seu código declara uma intent que não está habilitada para a aplicação). Como corrigir, nos dois lugares:- Discord Developer Portal → sua aplicação → Bot → Privileged Gateway Intents → habilite Message Content Intent.
- Declare-a no código também:
- Reinicie a aplicação.
Depois que um bot passa de 100 servidores, intents privilegiadas (incluindo Message Content) também exigem aprovação do Discord, solicitada na mesma página do Developer Portal.
Conexão do Lavalink fechada com código 1006
O que significa: o cliente Lavalink do bot fecha o WebSocket de forma anormal com o código 1006, geralmente precedido por “Unexpected server response: 400”. Por que acontece: isso é uma incompatibilidade de versão. O Lavalink v4 é baseado em REST e é incompatível com um wrapper de cliente feito para a v3, então o handshake falha e o socket fecha com 1006. Como corrigir:- Alinhe a versão do wrapper de cliente Lavalink do seu bot com a versão principal do servidor Lavalink (cliente v3 com servidor v3, cliente v4 com servidor v4).
- Na Square Cloud, o próprio servidor Lavalink se vincula à porta
80, mas seu bot deve se conectar a ele através da borda na porta443comsecure: true. - Reinicie tanto a aplicação do Lavalink quanto a aplicação do bot depois de corrigir a incompatibilidade de versão.
Bot fica offline depois de funcionar localmente
O que significa: o bot faz login normalmente quando você o roda na sua máquina, mas fica offline (ou reinicia repetidamente) depois de fazer o deploy. Por que acontece, mais comumente:- Uma conexão instável no nível do gateway sem tratamento de reconexão.
- Versões de dependências conflitantes ou incompatíveis entre o que você testou localmente e o que está no seu arquivo de dependências.
- Gatilhos de abuso da API do Discord (a conta recebe um email de notificação neste caso) por atingir limites de taxa de forma muito agressiva.
- Verifique primeiro os logs da aplicação no dashboard, eles mostram o motivo real da falha.
- Adicione handlers de erro para que um erro transitório não derrube o processo:
process.on("unhandledRejection", ...)eclient.on("error", ...)no discord.js, tratamento equivalente no discord.py. - A Square Cloud reinicia automaticamente uma aplicação que travou (
AUTORESTARTno manifesto) quando o tempo de atividade anterior foi de mais de 60 segundos, o status de saída foi 1, e ela não reiniciou automaticamente nos últimos 60 minutos. Isso mantém o bot vivo através de erros transitórios, mas nunca corrige um erro de código subjacente, erro de sintaxe, ou dependência ausente, esses ainda precisam de uma correção no código. - Fique atento aos limites de taxa da API do Discord (429): o limite global é de cerca de 50 requisições/segundo por token de bot, com buckets mais restritos por rota (criação/edição de canal permite aproximadamente 2 mudanças a cada 10 minutos por canal). Faça cache agressivamente, use uma fila assíncrona que respeita os headers
X-RateLimit-Remaining/X-RateLimit-Reset-After, e use webhooks para envios em massa.

