Maison >interface Web >js tutoriel >Pourquoi les événements et fonctions des membres de la guilde de mon Discord Bot ne fonctionnent-ils pas ?

Pourquoi les événements et fonctions des membres de la guilde de mon Discord Bot ne fonctionnent-ils pas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 09:00:14628parcourir

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

Application des intentions de Discord Gateway


Problème :


Pour certains utilisateurs, Les événements et fonctions des membres de la guilde ont brusquement cessé de fonctionner. Les événements GuildMemberAdd, GuildMemberRemove et GuildMemberUpdate ne se déclenchent plus et les caches utilisateur renvoient des résultats indéfinis ou limités. De plus, GuildMemberManager.fetch() expire.

Cause :


Discord a récemment appliqué des intentions privilégiées. Auparavant, les intentions GUILD_PRESENCES et GUILD_MEMBERS étaient facultatives. Cependant, depuis le 27 octobre 2020, ces intentions ont été désactivées par défaut.

Effets des privilèges désactivés Intentions :


GUILD_PRESENCES :



  • Caches vides des membres et des utilisateurs


  • Échec du déclenchement des événements de présenceUpdate

  • Données de présence nulles ou non définies

  • Le robot perçoit toutes les guildes membres comme hors ligne

  • Client.login() délai d'expiration avec fetchAllMembers option

GUILD_MEMBERS :



  • Membre et utilisateur vides caches

  • Délai d'expiration pour GuildMemberManager.fetch() et UserManager.fetch()

  • Échec du déclenchement des événements des membres de la guilde (GuildMemberAdd, GuildMemberRemove, GuildMemberUpdate, Membre de la guilde parlant, GuildMembersChunk)

Solution :



  1. Activer Intentions via Discord Developer Portail :

    Connectez-vous au portail des développeurs Discord et accédez à la page de votre bot. Sous l'onglet "Bot", faites défiler vers le bas pour activer les intentions GUILD_MEMBERS et GUILD_PRESENCES.



  2. Activer les intentions via le module discord.js :

    Lors de la création de votre client Discord à l'aide discord.js v12, spécifiez les intentions privilégiées dans la propriété ws de ClientOptions. Voici quelques exemples :


    // utilisant une chaîne<br>const client = new Discord.Client({ ws: { intents: 'GUILD_PRESENCES' }});</p><p>// en utilisant un tableau<br>const client = new Discord.Client({ ws: { intents : ['GUILD_PRESENCES', 'GUILD_MEMBERS'] }});</p><p>// en utilisant une valeur de champ de bits<br>const client = new Discord.Client({ ws: { intents: 32509 }));</p><p>// utilisation de la classe Intents<br>const client = new Discord.Client({ ws: { intents: Discord.Intents.PRIVILEGED }});<br>const client = new Discord.Client({ ws: { intents : nouveau Discord.Intents(Discord.Intents.ALL) }});<br>

Ressources :


Veuillez noter que la mise à niveau vers discord.js v12 peut être nécessaire pour activer les intentions nécessaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn