Bonsoir les agrumes !
J’aimerais compter combien de membres se trouvent dans mon serveur, en dissociant les bots des vrais membres. Pour cela, j’ai écrit une fonction count(msg)
qui prend en paramètre un message posté sur le serveur. Pas n’importe lequel : le message qui contient la commande !count
.
Dans un premier temps, j’aimerais compter tous les membres (dont les bots) simplement en les listant un par un.
Le problème, c’est que les résultats renvoyés ne sont pas bons et je ne comprends pas pourquoi.
Ensuite, une fois ce problème résolu, j’essaierai de dissocier les vrai membres des bots.
Voici ma fonction :
/**
* Liste tous les membres d'un
* serveur, pour les compter.
*
* @param msg Un message envoyé sur le serveur contenant la commande '!count'
*/
function count(msg) {
const guild = msg.guild;
console.log("Statistiques du serveur " + guild.name);
// Nombre de membres
let n = 0;
console.log("Première approximation : " + guild.memberCount);
// GuildMemberManager
let m = guild.members;
// 1) Avec le cache
m.cache.each(
() => {
++n;
}
);
console.log("Nombre de membres dans le serveur via le cache : " + n);
// 2) Avec le fetch
n = 0;
m.fetch().then(
() => {
++n;
}
);
console.log("Nombre de membres dans le serveur via le fetch : " + n);
}
Le résultat n’est pas bon malheureusement, voici la sortie :
Statistiques du serveur Anime World Fans
Première approximation : 54
Nombre de membres dans le serveur via le cache : 2
Nombre de membres dans le serveur via le fetch : 0
Je ne comprends pas, j’ai lu et relu la documentation sans comprendre pourquoi aucune des méthodes ne fonctionne.
Un gentil zeste aurait-il une idée svp ?