”LoginFailure: Improper token has been passed” / TokenInvalid
O que significa: o Discord rejeitou o token com o qual o seu bot faz login. A mensagem exata depende da biblioteca:- discord.py:
discord.errors.LoginFailure: Improper token has been passed. - discord.js v14:
Error [TokenInvalid]: An invalid token was provided. - discord.js antigo:
Error [TOKEN_INVALID]: An invalid token was provided. - outras bibliotecas: um HTTP
401 Unauthorizedno login.
- 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, ou a variável não está definida na Square Cloud.
- Vá para o Developer Portal → sua aplicação → Bot → Reset Token.
- Atualize o token nas variáveis de ambiente da aplicação (no dashboard, Configurações → Variáveis de Ambiente, ou com
squarecloud app env set). 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, para que ela carregue o novo valor.
”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.
- O bot foi parado por passar da RAM ou da CPU, ou por inundar a API do Discord. Nesse caso, os logs mostram uma linha
[SQUARE-SHIELD]e você recebe um e-mail: veja a tabela de status.
- 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. - Adicione
AUTORESTART=trueao seusquarecloud.apppara que a Square Cloud reinicie o bot depois de uma falha. Essa opção vem desligada por padrão e só reinicia nos casos listados emAUTORESTART. Ela mantém o bot vivo diante de erros passageiros, mas nunca corrige um token inválido, um erro de sintaxe ou uma 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. Um bot que continua inundando o Discord é parado comABUSE_REQUESTS.
Guias relacionados
- Tutorial de hospedagem de bot do Discord: configure e faça deploy de um bot do zero.
- Variáveis de ambiente: guarde o token fora do seu código.
- O app não inicia: erros de upload, módulos ausentes e outras falhas no boot.

