Discord.js memberCount和members ++返回不同的值

时间:2018-04-19 02:38:00

标签: node.js discord discord.js

目前我正在开发一个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和迭代成员之间的区别在哪里? 我检查了文档,在我看来两者都应该返回完全相同的值

1 个答案:

答案 0 :(得分:0)

不太确定,但guild.members可能只有缓存成员。您可以尝试获取所有成员并使用以下内容对其进行计数:

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

});