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);
});
});
目前我正在开发一个 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);
});
});