目前我正在开发一个Discord bot功能,用于计算正在使用我的机器人的公会中的用户。 奇怪的是我注意到countMembers和迭代通过公会并增加成员计数器返回不同的值
client.guilds.forEach((guild) => {
var cnt = 0;
console.log(guild.name + " " +guild['memberCount'])
guild.members.forEach((member) => {
cnt = cnt +1;
if(member.presence.status == 'online' || member.presence.status == 'idle' || member.presence.status == 'dnd'){
var data = guild.name + ":@" + member.id + "\n";
fs.appendFile('guild-audit.txt', data, function (err) {
if (err) throw err;
});
}else{
var data = guild.name + ":" + member.id + "\n";
fs.appendFile('guild-audit.txt', data, function (err) {
if (err) throw err;
});
}
})
console.log(guild.name + " " + cnt.toString());
})
例如:
memberCount = GuildX 1596
cnt = GuildX 175
memberCount = GuildY 2385
cnt = GuildY 2365
memberCount和迭代成员之间的区别在哪里? 我检查了文档,在我看来两者都应该返回完全相同的值
答案 0 :(得分:0)
不太确定,但guild.members
可能只有缓存成员。您可以尝试获取所有成员并使用以下内容对其进行计数:
client.guilds.forEach((guild) => {
guild.fetchMembers().then(g => {
let count = 0;
g.members.forEach((member) => {
count++;
});
console.log(count);
});
});