Intents del gateway
Los intents son un campo de bits que envías en op:2 Identify y que indica al gateway qué categorías de evento debe enviar a tu bot. Bits y semántica idénticos a los de Discord. Tu configuración actual de intents funciona sin cambios.
Bits de intent
Se admiten en GameVox todos los bits de intent de Discord que no están obsoletos. Cuando una función todavía no existe en GameVox (p. ej. canales de escenario o eventos programados), el bit se acepta pero no se emite ningún evento. Tu biblioteca no dará error.
| 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 miembros |
| GUILD_MODERATION | 1 << 2 | GUILD_BAN_ADD, GUILD_BAN_REMOVE. GUILD_AUDIT_LOG_ENTRY_CREATE se acepta, todavía sin eventos | |
| GUILD_EMOJIS_AND_STICKERS | 1 << 3 | Se acepta, todavía sin eventos (consulta por REST si necesitas el estado actual) | |
| GUILD_INTEGRATIONS | 1 << 4 | Se acepta, todavía sin eventos | |
| GUILD_WEBHOOKS | 1 << 5 | Se acepta, todavía sin eventos | |
| GUILD_INVITES | 1 << 6 | Se acepta, todavía sin 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 en guilds | |
| GUILD_MESSAGE_REACTIONS | 1 << 10 | MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE. REMOVE_ALL / REMOVE_EMOJI se aceptan, todavía sin eventos (REST funciona) | |
| GUILD_MESSAGE_TYPING | 1 << 11 | TYPING_START en guilds | |
| DIRECT_MESSAGES | 1 << 12 | MESSAGE_* en MD | |
| DIRECT_MESSAGE_REACTIONS | 1 << 13 | MESSAGE_REACTION_* en MD | |
| DIRECT_MESSAGE_TYPING | 1 << 14 | TYPING_START en MD | |
| MESSAGE_CONTENT | 1 << 15 | ✓ | Añade content, embeds, attachments, components a MESSAGE_* |
| GUILD_SCHEDULED_EVENTS | 1 << 16 | Se acepta, todavía sin eventos | |
| AUTO_MODERATION_CONFIGURATION | 1 << 20 | Se acepta, todavía sin eventos | |
| AUTO_MODERATION_EXECUTION | 1 << 21 | Se acepta, todavía sin eventos |
Intents privilegiados
Tres intents son privilegiados en Discord y requieren aprobación manual a partir de 100 servidores: GUILD_MEMBERS, GUILD_PRESENCES y MESSAGE_CONTENT.
En GameVox los tres se aprueban automáticamente al activarlos en la pestaña Bot de la aplicación. El interruptor existe para que las bibliotecas que comprueban la aprobación en el portal no cierren la conexión con 4014 Disallowed intents. No hay proceso de verificación a partir de 100 servidores. Activa el interruptor, pon el bit y listo.
Excepciones de MESSAGE_CONTENT
Coincide exactamente con Discord. Incluso sin MESSAGE_CONTENT, se incluyen content / embeds / attachments / components del mensaje cuando:
- el mensaje procede de tu propio bot (los mensajes propios siempre incluyen el contenido).
- el mensaje menciona a tu bot (por ID).
- el mensaje está en un MD con tu bot.
- el mensaje es una respuesta a una interacción de la que tu bot es destinatario.
Eventos que aún no se emiten (con intents aceptados)
Activar los siguientes intents es seguro (el cable los acepta y tu biblioteca no dará error), pero hoy no se publica ningún evento. Si la lógica de tu bot depende de alguno, consulta por REST de momento:
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(los endpoints REST funcionan)THREAD_*,STAGE_INSTANCE_*,GUILD_SCHEDULED_EVENT_*,AUTO_MODERATION_*,MESSAGE_POLL_*
Los servidores autoalojados emiten un subconjunto todavía menor. La lista exacta está en esa página.
Códigos de cierre que puedes ver
4013 Invalid intent(s): bit por encima de la máscara válida (revisa la aritmética de bits de tu biblioteca).4014 Disallowed intents: bit de intent privilegiado activado sin el interruptor correspondiente en el portal.
Ejemplo: definir intents
discord.js
const { GatewayIntentBits } = require('discord.js');
const intents =
GatewayIntentBits.Guilds
| GatewayIntentBits.GuildMessages
| GatewayIntentBits.MessageContent; // privilegiado, actívalo antes en el 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)