Gateway-Intents
Intents sind ein Bitfeld, das du bei op:2 Identify sendest und das dem Gateway mitteilt, welche Ereigniskategorien es an deinen Bot ausliefern soll. Identische Bits und Semantik wie bei Discord. Deine bestehende Intent-Konfiguration funktioniert unverändert.
Intent-Bits
Alle nicht veralteten Discord-Intent-Bits werden auf GameVox unterstützt. Wo eine Funktion auf GameVox noch nicht existiert (z. B. Stage-Kanäle, geplante Termine), wird das Bit akzeptiert, es werden aber keine Ereignisse ausgelöst. Deine Bibliothek läuft nicht auf einen Fehler.
| Intent | Bit | Privilegiert | Ereignisse |
|---|---|---|---|
| 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, Member-Chunking |
| GUILD_MODERATION | 1 << 2 | GUILD_BAN_ADD, GUILD_BAN_REMOVE. GUILD_AUDIT_LOG_ENTRY_CREATE wird akzeptiert, noch keine Ereignisse | |
| GUILD_EMOJIS_AND_STICKERS | 1 << 3 | Akzeptiert, noch keine Ereignisse (nutze REST, wenn du den aktuellen Stand brauchst) | |
| GUILD_INTEGRATIONS | 1 << 4 | Akzeptiert, noch keine Ereignisse | |
| GUILD_WEBHOOKS | 1 << 5 | Akzeptiert, noch keine Ereignisse | |
| GUILD_INVITES | 1 << 6 | Akzeptiert, noch keine Ereignisse | |
| 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 in Guilds | |
| GUILD_MESSAGE_REACTIONS | 1 << 10 | MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE. REMOVE_ALL / REMOVE_EMOJI werden akzeptiert, noch keine Ereignisse (REST funktioniert) | |
| GUILD_MESSAGE_TYPING | 1 << 11 | TYPING_START in Guilds | |
| DIRECT_MESSAGES | 1 << 12 | MESSAGE_* in DMs | |
| DIRECT_MESSAGE_REACTIONS | 1 << 13 | MESSAGE_REACTION_* in DMs | |
| DIRECT_MESSAGE_TYPING | 1 << 14 | TYPING_START in DMs | |
| MESSAGE_CONTENT | 1 << 15 | ✓ | Ergänzt content, embeds, attachments, components bei MESSAGE_* |
| GUILD_SCHEDULED_EVENTS | 1 << 16 | Akzeptiert, noch keine Ereignisse | |
| AUTO_MODERATION_CONFIGURATION | 1 << 20 | Akzeptiert, noch keine Ereignisse | |
| AUTO_MODERATION_EXECUTION | 1 << 21 | Akzeptiert, noch keine Ereignisse |
Privilegierte Intents
Drei Intents sind bei Discord privilegiert und erfordern ab 100 Servern eine manuelle Freigabe: GUILD_MEMBERS, GUILD_PRESENCES und MESSAGE_CONTENT.
Auf GameVox werden alle drei automatisch genehmigt, sobald sie im Tab Bot der Anwendung aktiviert werden. Der Schalter existiert, damit Bibliotheken, die auf eine portalseitige Freigabe prüfen, die Verbindung nicht mit 4014 Disallowed intents schließen. Es gibt kein Verifizierungsverfahren ab 100 Servern. Schalter umlegen, Bit setzen, fertig.
Ausnahmen bei MESSAGE_CONTENT
Entspricht Discord exakt. Auch ohne MESSAGE_CONTENT sind content / embeds / attachments / components einer Nachricht enthalten, wenn:
- die Nachricht von deinem eigenen Bot stammt (eigene Nachrichten enthalten immer den Inhalt).
- die Nachricht deinen Bot erwähnt (per ID).
- die Nachricht in einer DM mit deinem Bot steht.
- die Nachricht eine Interaktions-Antwort ist, deren Empfänger dein Bot ist.
Noch nicht ausgelöste Ereignisse (bei akzeptierten Intents)
Das Aktivieren der folgenden Intents ist unbedenklich (der Wire akzeptiert sie und deine Bibliothek läuft nicht auf einen Fehler), es werden heute aber keine Ereignisse veröffentlicht. Wenn die Logik deines Bots davon abhängt, frage vorerst per REST ab:
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(REST-Endpunkte funktionieren)THREAD_*,STAGE_INSTANCE_*,GUILD_SCHEDULED_EVENT_*,AUTO_MODERATION_*,MESSAGE_POLL_*
Selbst gehostete Server liefern eine weiter reduzierte Teilmenge. Die genaue Liste steht auf jener Seite.
Close-Codes, die dir begegnen können
4013 Invalid intent(s): Bit oberhalb der gültigen Maske gesetzt (prüfe die Bit-Arithmetik deiner Bibliothek).4014 Disallowed intents: privilegiertes Intent-Bit gesetzt, ohne den passenden Schalter im Entwicklerportal.
Beispiel: Intents setzen
discord.js
const { GatewayIntentBits } = require('discord.js');
const intents =
GatewayIntentBits.Guilds
| GatewayIntentBits.GuildMessages
| GatewayIntentBits.MessageContent; // privilegiert, zuerst im Portal aktivieren
const client = new Client({ intents }); discord.py
intents = discord.Intents.default()
intents.members = True # privilegiert
intents.message_content = True # privilegiert
client = discord.Client(intents=intents)