Skip to main content
Erros de bot do Discord na Square Cloud geralmente têm origem no token, nas gateway intents, ou em uma incompatibilidade de versão com o Lavalink. Encontre a mensagem exata abaixo.

”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 Unauthorized no login.
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, ou a variável não está definida na Square Cloud.
Como corrigir:
  1. Vá para o Developer Portal → sua aplicação → Bot → Reset Token.
  2. 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.
  3. Verifique se não há espaços ou aspas soltas ao redor do valor.
  4. Atualize a biblioteca (discord.js@latest ou pip install -U discord.py).
  5. Reinicie a aplicação, para que ela carregue o novo valor.
Nunca fixe o token do seu bot diretamente em arquivos de código-fonte. Sempre leia-o de uma variável de ambiente definida no dashboard.

”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:
  1. Discord Developer Portal → sua aplicação → Bot → Privileged Gateway Intents → habilite Message Content Intent.
  2. Declare-a no código também:
  1. 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.
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:
  1. 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).
  2. 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 porta 443 com secure: true.
  3. Reinicie tanto a aplicação do Lavalink quanto a aplicação do bot depois de corrigir a incompatibilidade de versão.
Para a configuração completa de hospedagem do Lavalink (arquivo de configuração, porta, deploy), veja o tutorial do servidor Lavalink.

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.
Como corrigir:
  1. Verifique primeiro os logs da aplicação no dashboard, eles mostram o motivo real da falha.
  2. Adicione handlers de erro para que um erro transitório não derrube o processo: process.on("unhandledRejection", ...) e client.on("error", ...) no discord.js, tratamento equivalente no discord.py.
  3. Adicione AUTORESTART=true ao seu squarecloud.app para 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 em AUTORESTART. 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.
  4. 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 com ABUSE_REQUESTS.

Guias relacionados

Se os logs não apontarem para uma causa clara, nossa equipe de suporte pode ajudar você a investigar mais a fundo.

Contate-nos

Se você continuar enfrentando dificuldades técnicas, nossa equipe de suporte especializada está disponível para auxiliá-lo. Entre em contato conosco e teremos prazer em ajudá-lo a resolver qualquer questão: a qualidade do suporte é uma grande parte do motivo pelo qual desenvolvedores avaliam a Square Cloud com 4,9/5 em 402 avaliações no Google e Trustpilot.