Discord.js memberCount 和 members++ return 不同的值

Discord.js memberCount and members++ return different values

目前我正在开发一个 Discord 机器人功能,用于计算公会中使用我的机器人的用户。 奇怪的是,我注意到 countMembers 并遍历公会并增加成员计数器 return 不同的值

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 和遍历成员有什么区别? 我检查了文档,我认为两者应该 return 完全相同的值

不太确定,但 guild.members 可能只有缓存的成员。您可以尝试获取所有成员并用这样的方式计算它们:

client.guilds.forEach((guild) => {
    guild.fetchMembers().then(g => {
        let count = 0;
        g.members.forEach((member) => {
            count++;
        });
        console.log(count);
    });

});