Intents do gateway
Intents são um campo de bits enviado no op:2 Identify que informa ao gateway quais categorias de evento devem ser entregues ao seu bot. Bits e semântica idênticos aos do Discord. Sua configuração de intents atual funciona sem alterações.
Bits de intent
Todos os bits de intent não obsoletos do Discord são suportados no GameVox. Quando um recurso ainda não existe no GameVox (por exemplo, canais de palco ou eventos agendados), o bit é aceito mas nenhum evento é disparado. Sua biblioteca não vai dar erro.
| Intent | Bit | Privilegiado | Eventos |
|---|---|---|---|
| GUILDS | 1 << 0 | GUILD_CREATE, GUILD_UPDATE, GUILD_DELETE, CHANNEL_CREATE/UPDATE/DELETE, CHANNEL_PINS_UPDATE, GUILD_ROLE_CREATE/UPDATE/DELETE | |
| GUILD_MEMBERS | 1 << 1 | ✓ | GUILD_MEMBER_ADD, GUILD_MEMBER_UPDATE, GUILD_MEMBER_REMOVE, chunking de integrantes |
| GUILD_MODERATION | 1 << 2 | GUILD_BAN_ADD, GUILD_BAN_REMOVE. GUILD_AUDIT_LOG_ENTRY_CREATE aceito, ainda sem eventos | |
| GUILD_EMOJIS_AND_STICKERS | 1 << 3 | Aceito, ainda sem eventos (consulte via REST se precisar do estado atual) | |
| GUILD_INTEGRATIONS | 1 << 4 | Aceito, ainda sem eventos | |
| GUILD_WEBHOOKS | 1 << 5 | Aceito, ainda sem eventos | |
| GUILD_INVITES | 1 << 6 | Aceito, ainda sem eventos | |
| GUILD_VOICE_STATES | 1 << 7 | VOICE_STATE_UPDATE, VOICE_SERVER_UPDATE | |
| GUILD_PRESENCES | 1 << 8 | ✓ | PRESENCE_UPDATE |
| GUILD_MESSAGES | 1 << 9 | MESSAGE_CREATE/UPDATE/DELETE/DELETE_BULK em guilds | |
| GUILD_MESSAGE_REACTIONS | 1 << 10 | MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE. REMOVE_ALL / REMOVE_EMOJI aceitos, ainda sem eventos (o REST funciona) | |
| GUILD_MESSAGE_TYPING | 1 << 11 | TYPING_START em guilds | |
| DIRECT_MESSAGES | 1 << 12 | MESSAGE_* em DMs | |
| DIRECT_MESSAGE_REACTIONS | 1 << 13 | MESSAGE_REACTION_* em DMs | |
| DIRECT_MESSAGE_TYPING | 1 << 14 | TYPING_START em DMs | |
| MESSAGE_CONTENT | 1 << 15 | ✓ | Acrescenta content, embeds, attachments, components aos MESSAGE_* |
| GUILD_SCHEDULED_EVENTS | 1 << 16 | Aceito, ainda sem eventos | |
| AUTO_MODERATION_CONFIGURATION | 1 << 20 | Aceito, ainda sem eventos | |
| AUTO_MODERATION_EXECUTION | 1 << 21 | Aceito, ainda sem eventos |
Intents privilegiados
Três intents são privilegiados no Discord e exigem aprovação manual quando o bot passa de 100 servidores: GUILD_MEMBERS, GUILD_PRESENCES e MESSAGE_CONTENT.
No GameVox, os três são aprovados automaticamente ao serem ativados na aba Bot da aplicação. A chave existe para que bibliotecas que checam a aprovação no portal não encerrem a conexão com 4014 Disallowed intents. Não há processo de verificação a partir de 100 servidores. Ligue a chave, defina o bit, pronto.
Exceções do MESSAGE_CONTENT
Igual ao Discord. Mesmo sem o MESSAGE_CONTENT, os campos content / embeds / attachments / components da mensagem são incluídos quando:
- a mensagem é do seu próprio bot (mensagens próprias sempre trazem o conteúdo).
- a mensagem menciona o seu bot (por ID).
- a mensagem está em uma DM com o seu bot.
- a mensagem é uma resposta de interação da qual o seu bot é destinatário.
Eventos ainda não emitidos (intents aceitos)
Ativar os intents a seguir é seguro (o transporte os aceita e sua biblioteca não vai dar erro), mas nenhum evento é publicado hoje. Se a lógica do seu bot depende de algum deles, consulte o REST por enquanto:
USER_UPDATEGUILD_EMOJIS_UPDATE,GUILD_STICKERS_UPDATEWEBHOOKS_UPDATE,INTEGRATION_CREATE/UPDATE/DELETE,INVITE_CREATE/DELETEGUILD_AUDIT_LOG_ENTRY_CREATEMESSAGE_REACTION_REMOVE_ALL,MESSAGE_REACTION_REMOVE_EMOJI(os endpoints REST funcionam)THREAD_*,STAGE_INSTANCE_*,GUILD_SCHEDULED_EVENT_*,AUTO_MODERATION_*,MESSAGE_POLL_*
Os servidores auto-hospedados emitem um subconjunto ainda menor. A lista exata está naquela página.
Códigos de fechamento que você pode ver
4013 Invalid intent(s): bit acima da máscara válida (confira a aritmética de bits da sua biblioteca).4014 Disallowed intents: bit de intent privilegiado definido sem a chave correspondente no portal.
Exemplo: definindo intents
discord.js
const { GatewayIntentBits } = require('discord.js');
const intents =
GatewayIntentBits.Guilds
| GatewayIntentBits.GuildMessages
| GatewayIntentBits.MessageContent; // privilegiado, ative antes no portal
const client = new Client({ intents }); discord.py
intents = discord.Intents.default()
intents.members = True # privilegiado
intents.message_content = True # privilegiado
client = discord.Client(intents=intents)