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
- Qual é o sintoma do erro de intents?
- O que são intents e quais são privilegiados?
- Como ativar os intents no portal do Discord?
- Como pedir os intents no código?
- Por que o erro continua depois de ativar?
- O que muda quando o bot cresce?
- Como evitar o problema?
- Como fazer isso na Square Cloud
- Perguntas frequentes
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.
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.):
Error: Used disallowed intentsNo discord.py 2.x a exceção é PrivilegedIntentsRequired:
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?#
- Abra o Portal do Desenvolvedor do Discord e selecione a sua aplicação.
- Entre na aba Bot no menu lateral.
- Role até Privileged Gateway Intents.
- Ligue os intents que o seu código usa (Presence, Server Members, Message Content).
- 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:
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:
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:
- 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.
- 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. - 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.
- 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).
- 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
Guildse 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
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.
Mais em Bots
Ver todos os 33 artigos- Quanto custa hospedar um bot do Discord?O custo de hospedar um bot do Discord depende de RAM, tempo online, banco de dados e serviços externos. Veja como estimar o seu e onde o gasto aparece.
- Rodar bot no celular (Termux) ou no PC vs hospedar: o que mudaUm bot no PC ou no celular (Termux) fica offline quando o aparelho desliga, dorme ou perde a rede. Compare as três opções e veja quando cada uma serve.
- Como deixar um bot do Discord online 24/7Para deixar um bot do Discord online 24/7, rode o processo numa máquina sempre ligada com reinício automático. Veja PC, VPS com pm2 ou systemd e hospedagem.
- Por que meu bot do Discord fica offline (e como resolver)Bot do Discord offline quase sempre é processo caído, token inválido, intent não habilitada ou falta de memória. Veja como diagnosticar cada causa e corrigir.