Erro de intents no bot do Discord: o que são e como ativar

O erro de intents aparece quando o código do bot pede um intent privilegiado que não está ativado no Portal do Desenvolvedor do Discord. Ative Message Content, Server Members ou Presence na aba Bot e reinicie o bot.

Atualizado em 5 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Reconhecer o erro de intents e o código 4014 do Gateway
  • Ativar os intents privilegiados no portal e no código
  • Saber quando o Discord exige revisão dos intents privilegiados
Nesta página

Você sobe o bot (veja como criar seu primeiro bot), o login falha e o terminal mostra algo sobre "disallowed intents". O token está certo, e o código roda na sua máquina até o momento de conectar. O problema não é o token: é uma configuração que existe em dois lugares, no portal do Discord e no seu código, e que precisa dizer a mesma coisa nos dois.

BotGatewayPortalIDENTIFY+ máscara de intentsconfereREADYbatem com o Portalouclose 4014intent desligado no Portal
O Gateway lê os intents no IDENTIFY: se o código pede um privilegiado desligado no Portal, a conexão fecha com 4014.

Qual é o sintoma do erro de intents?#

O Gateway do Discord fecha a conexão com o código 4014 ("Disallowed intent(s)"). A documentação descreve assim: você tentou especificar um intent que não ativou ou para o qual não tem aprovação. A biblioteca transforma isso numa exceção.

Desde a versão 14.10 do discord.js, o client.login() falha com este erro (versões anteriores mostravam Error [DisallowedIntents]: Privileged intent provided is not enabled or whitelisted.):

text
Error: Used disallowed intents

No discord.py 2.x a exceção é PrivilegedIntentsRequired:

text
discord.errors.PrivilegedIntentsRequired: Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal. It is recommended to go to https://discord.com/developers/applications/ and explicitly enable the privileged intents within your application's page. If this is not possible, then consider disabling the privileged intents instead.

Existe também o código 4013 ("Invalid intent(s)"), que indica um valor de intent inválido, em geral por cálculo errado da máscara de bits. Nos dois casos o Discord marca o código como não reconectável: tentar de novo sem mudar nada só repete a falha.

O que são intents e quais são privilegiados?#

Intents dizem ao Gateway quais grupos de eventos o seu bot quer receber. Se você não pede um intent, os eventos dele não chegam. Isso economiza banda e memória, e protege dados de usuários.

Três intents são privilegiados, ou seja, ficam desligados até você ativá-los:

Intent Nome no discord.js Atributo no discord.py O que libera
Server Members GuildMembers members Eventos de entrada, saída e atualização de membros, e a listagem de membros
Presence GuildPresences presences Eventos PRESENCE_UPDATE (status online, atividade)
Message Content MessageContent message_content Texto, embeds, anexos e componentes das mensagens

Sem o Message Content, os campos de conteúdo chegam vazios. Há exceções: mensagens que o próprio bot envia, mensagens em DM com o bot, mensagens que mencionam o bot e a mensagem alvo de um comando de menu de contexto.

Como ativar os intents no portal do Discord?#

  1. Abra o Portal do Desenvolvedor do Discord e selecione a sua aplicação.
  2. Entre na aba Bot no menu lateral.
  3. Role até Privileged Gateway Intents.
  4. Ligue os intents que o seu código usa (Presence, Server Members, Message Content).
  5. Salve as alterações.

Para apps com menos de 10.000 usuários, é só isso. Ligue só o que você usa de fato: cada intent a mais traz mais eventos para processar.

Como pedir os intents no código?#

Ativar no portal não basta. O código também precisa declarar o intent ao conectar, e a documentação do discord.py é explícita sobre isso.

discord.js v14:

js
const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent, // privilegiado
    // GatewayIntentBits.GuildMembers, // privilegiado, só se usar
  ],
});

client.on('messageCreate', (message) => {
  if (message.content === '!ping') message.reply('pong');
});

client.login(process.env.DISCORD_TOKEN);

discord.py 2.x:

python
import os
import discord

intents = discord.Intents.default()
intents.message_content = True  # privilegiado
intents.members = False  # privilegiado, mude para True só se usar

client = discord.Client(intents=intents)

@client.event
async def on_message(message):
    if message.content == "!ping":
        await message.channel.send("pong")

client.run(os.environ["DISCORD_TOKEN"])

Intents.default() não liga nenhum dos privilegiados. Por isso o message_content aparece explícito.

Por que o erro continua depois de ativar?#

Percorra da causa mais comum para a menos comum:

  1. Ligou no portal, esqueceu no código (ou o contrário). Os dois lados precisam bater. Confira a lista de intents na criação do cliente.
  2. Não reiniciou o bot. O Gateway lê os intents no momento do IDENTIFY. Depois de mudar o portal ou o código, reinicie para abrir uma nova conexão.
  3. Aplicação errada. O token pertence a outra aplicação do portal, com os botões desligados. Confirme que o token em uso é da aplicação que você configurou.
  4. Bot acima do limite de revisão. Acima de 10.000 usuários, o bot perde o acesso ao intent privilegiado se a revisão não for aprovada (veja a próxima seção).
  5. Valor de intent inválido (código 4013), comum em quem monta a máscara de bits na mão. Use as constantes da biblioteca em vez de números.

Se o bot conecta mas fica mudo, o problema pode ser outro: veja Bot online mas não responde aos comandos.

O que muda quando o bot cresce?#

Apps com menos de 10.000 usuários podem ligar os intents privilegiados direto no portal. Quando o app passa de 10.000 usuários únicos que enxergam o bot, o Discord avisa o dono e exige uma revisão (com justificativa de uso de cada intent) para manter o acesso. Quem já foi aprovado precisa renovar todo ano. Segundo a documentação, o app continua funcionando e entrando em servidores durante a análise.

A verificação do app é outro processo, exigida para apps em 100 ou mais servidores. As regras de revisão por número de usuários valem desde 10 de junho de 2026 e substituíram a antiga regra dos 100 servidores para intents privilegiados, então confira a página oficial antes de planejar.

Se o seu bot só precisa ler comandos, migrar para slash commands elimina a dependência do Message Content antes que a revisão vire problema, porque interações não passam pelo conteúdo das mensagens.

Como evitar o problema?#

  • Peça só os intents que o bot usa. Comece com Guilds e acrescente conforme a necessidade.
  • Prefira slash commands a comandos com prefixo, e evite Presence se não for essencial.
  • Guarde a lista de intents num lugar só do código, para não divergir entre arquivos.
  • Teste a conexão depois de qualquer mudança no portal, antes de levar para produção.

Como fazer isso na Square Cloud#

O erro de intents acontece entre o seu código e o portal do Discord, então a correção é a mesma em qualquer hospedagem: ative os intents na aba Bot, declare-os no código e reinicie.

Na Square Cloud, o bot roda em um container isolado e você controla o deploy. O token fica em variável de ambiente da aplicação (no painel, na API ou na CLI), e a mudança vale no próximo restart, sem rebuild. Depois de ajustar os intents no portal, reinicie a aplicação e acompanhe os logs em tempo real para confirmar que o login passou.

A plataforma aceita discord.js, discord.py, JDA, Discord.Net e outras bibliotecas de Gateway. Os detalhes estão em Hospedagem de bots do Discord.

Hospedagem de bots

Seu bot online 24/7, com reinício automático

Saiba mais

Perguntas frequentes

Quais são os intents privilegiados do Discord?

São três: Server Members (GUILD_MEMBERS), Presence (GUILD_PRESENCES) e Message Content (MESSAGE_CONTENT). Os três vêm desligados por padrão e precisam ser ativados no portal e pedidos no código.

Preciso do Message Content intent para usar slash commands?

Não. Slash commands chegam como interações e não dependem do conteúdo das mensagens. O intent só é necessário para ler o texto de mensagens comuns, como em comandos com prefixo.

Ativei no portal e o erro continua. O que falta?

Falta pedir o intent no código, com GatewayIntentBits.MessageContent no discord.js ou intents.message_content = True no discord.py. Depois, reinicie o bot para abrir uma nova conexão com o Gateway.

O que muda quando o bot cresce?

Com menos de 10.000 usuários, basta ligar o botão no portal. Acima disso, o Discord exige uma revisão para manter o acesso aos intents privilegiados. Bots em 100 ou mais servidores também precisam de verificação.

Próximo artigoBot do Telegram não responde: webhook, polling e erros comunsBot do Telegram parado costuma ser token errado, webhook ativo com polling, duas instâncias ou URL inválida. Veja como diagnosticar com getMe e getWebhookInfo.