Aucun de mes événements de membre de guilde Discord.js n'est émis, mes caches utilisateur sont pratiquement vides et mes fonctions expirent
Avez-vous déjà rencontré l'un de ces problèmes :
- Votre guildMemberAdd, guildMemberRemove et les événements guildMemberUpdate cessent soudainement de fonctionner
- Le cache de votre GuildMemberManager est vide ou proche de celui-ci
- Vos méthodes GuildMemberManager.fetch() et UserManager.fetch() expirent
- Votre client.login() expire si vous spécifiez l'option fetchAllMembers
- Votre Les membres de la guilde semblent être hors ligne
Si vous rencontrez l'un de ces problèmes, malheureusement, vous ne pouvez pas faire grand-chose de votre côté. Récemment, Discord a appliqué des intentions privilégiées, ce qui peut provoquer les problèmes répertoriés ci-dessus.
Que sont les intentions privilégiées ?
Intentions privilégiées sont des données sensibles qui nécessitent une activation manuelle. Depuis le 27 octobre 2020, ces intentions sont désactivées par défaut.
Les intentions privilégiées incluent :
-
GUILD_PRESENCES : cette intention permet à votre bot d'accéder à la présence data.
-
GUILD_MEMBERS : Cette intention permet à votre bot d'accéder aux données des membres.
Comment activer les intentions privilégiées
-
Accéder au développeur Discord Portail : [https://discord.com/developers/applications](https://discord.com/developers/applications)
- Sélectionnez votre application
- Cliquez sur l'onglet "Bot"
- Faites défiler jusqu'à Section "Intentes de passerelle privilégiée"
- Activez les intentions "Membres du serveur" et/ou "Présence du serveur"
- Cliquez sur "Enregistrer les modifications"
Si votre bot n'est pas vérifié, vous devrez soumettre un ticket d'assistance à Discord afin de demander l'accès aux intentions privilégiées.
Implémentation de Discord.js
Une fois que vous avez activé les intentions privilégiées dans le portail des développeurs Discord, vous devrez activez-les dans votre bot Discord.js.
Pour ce faire, ajoutez le code suivant au nom de votre bot constructeur :
const client = new Discord.Client({
intents: [
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_PRESENCES
]
});
Copier après la connexion
Cela activera les intentions GUILD_MEMBERS et GUILD_PRESENCES pour votre bot.
Vous pouvez également activer les intentions privilégiées à l'aide de l'option ws :
const client = new Discord.Client({
ws: {
intents: [
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_PRESENCES
]
}
});
Copier après la connexion
Si vous rencontrez toujours des problèmes après avoir activé les intentions privilégiées, veuillez vous référer aux ressources suivantes :
- [Portail des développeurs Discord - Intents de passerelle](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [Guide officiel Discord.js - Intents de passerelle ](https://discordjs.guide/gateway/intents.html)
- [Mise à jour de la passerelle FAQ](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [API Discord Github - Numéro 1363 - Intents privilégiés](https://github.com/discord /discord-api-docs/issues/1363)
- [Discord Blog - L'avenir des robots sur Discorde](https://blog.discord.com/the-future-of-bots-on-discord-3d25af28f58e)
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!