Heim >Web-Frontend >js-Tutorial >Warum funktionieren die Gildenmitglieder-Events und -Funktionen meines Discord-Bots nicht?

Warum funktionieren die Gildenmitglieder-Events und -Funktionen meines Discord-Bots nicht?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 09:00:14628Durchsuche

Why Are My Discord Bot's Guild Member Events and Functions Not Working?

Discord Gateway Intent Enforcement


Problem:


Für einige Benutzer spezifisch Gildenmitglieder-Events und -Funktionen funktionieren plötzlich nicht mehr. Die Ereignisse GuildMemberAdd, GuildMemberRemove und GuildMemberUpdate werden nicht mehr ausgelöst und Benutzercaches geben undefinierte oder begrenzte Ergebnisse zurück. Darüber hinaus kommt es bei GuildMemberManager.fetch() zu einer Zeitüberschreitung.

Ursache:


Discord hat kürzlich privilegierte Absichten erzwungen. Bisher waren die Absichten GUILD_PRESENCES und GUILD_MEMBERS optional. Seit dem 27. Oktober 2020 sind diese Absichten jedoch standardmäßig deaktiviert.

Auswirkungen von Disabled Privileged Absichten:


GUILD_PRESENCES:



  • Mitglieder- und Benutzer-Caches leeren


  • Fehler beim Auslösen von Anwesenheitsaktualisierungsereignissen

  • Null oder undefinierte Anwesenheitsdaten

  • Bot nimmt alle Gilden wahr Mitglieder als offline

  • Client.login() Timeout mit fetchAllMembers Option

GUILD_MEMBERS:



  • Leere Mitglieder- und Benutzer-Caches< /li>
  • Timeout für GuildMemberManager.fetch() und UserManager.fetch()

  • Fehler beim Auslösen von Gildenmitgliedsereignissen (GuildMemberAdd, GuildMemberRemove, GuildMemberUpdate, GuildMemberSpeaking, GuildMembersChunk)

Lösung:



  1. Aktivieren Absichten über Discord Developer Portal:

    Melden Sie sich beim Discord-Entwicklerportal an und navigieren Sie zur Seite Ihres Bots. Scrollen Sie auf der Registerkarte „Bot“ nach unten, um die Intents GUILD_MEMBERS und GUILD_PRESENCES zu aktivieren.



  2. Intents über das Discord.js-Modul aktivieren:

    Beim Erstellen Ihres Discord-Clients mit discord.js v12: Geben Sie die privilegierten Absichten in der ws-Eigenschaft der ClientOptions an. Hier sind einige Beispiele:


    // using a string<br>const client = new Discord.Client({ ws: { intents: 'GUILD_PRESENCES' }});</p><p>// ein Array verwenden<br>const client = new Discord.Client({ ws: { intents: ['GUILD_PRESENCES', 'GUILD_MEMBERS'] }});</p><p>// unter Verwendung eines Bitfeldwerts<br>const client = new Discord.Client({ ws: { intents: 32509 }));</p><p>// using Intents class<br>const client = new Discord.Client({ ws: { intents: Discord.Intents.PRIVILEGED }});<br>const client = new Discord.Client({ ws: { intents : neues Discord.Intents(Discord.Intents.ALL) }});<br>

Ressourcen:


Bitte beachten Sie, dass ein Upgrade auf discord.js v12 erforderlich sein kann, um die erforderlichen Absichten zu aktivieren.

Das obige ist der detaillierte Inhalt vonWarum funktionieren die Gildenmitglieder-Events und -Funktionen meines Discord-Bots nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn