> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Bot do Discord offline: token, intents e Lavalink

> Corrija erros de bot do Discord: LoginFailure e TokenInvalid, intents não permitidas, Message Content Intent, Lavalink com código 1006 e bots ficando offline.

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](https://discord.com/developers/applications) → sua aplicação → **Bot** → **Reset Token**.
2. Atualize o token nas [variáveis de ambiente](/pt-br/platform/environment-variables) 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.

<Warning>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.</Warning>

## "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:

```javascript theme={"system"}
// discord.js
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ],
});
```

```python theme={"system"}
# discord.py
intents = discord.Intents.default()
intents.message_content = True
client = commands.Bot(command_prefix="!", intents=intents)
```

3. Reinicie a aplicação.

<Note>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.</Note>

## 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:**

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](/pt-br/tutorials/how-to-create-your-lavalink-server).

## 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](/pt-br/platform/limitations-and-restrictions#status-de-limite-excedido).

**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`](/pt-br/getting-started/config-file#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`](/pt-br/platform/limitations-and-restrictions#container_temporarily_suspended).

## Guias relacionados

* [Tutorial de hospedagem de bot do Discord](/pt-br/tutorials/bots/discord): configure e faça deploy de um bot do zero.
* [Variáveis de ambiente](/pt-br/platform/environment-variables): guarde o token fora do seu código.
* [O app não inicia](/pt-br/platform/troubleshooting/app-wont-start): erros de upload, módulos ausentes e outras falhas no boot.

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

## Contate-nos

Se você continuar enfrentando **dificuldades técnicas**, nossa **equipe de suporte especializada** está disponível para auxiliá-lo. [**Entre em contato conosco**](https://squarecloud.app/pt-br/support) 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**](https://www.trustpilot.com/review/squarecloud.app) no Google e Trustpilot.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.