我想做一个命令,告诉我机器人所在的服务器中的用户总数。我搜索了一下怎么做,发现是这样的:
const users = await client.users.cache.size
但当我使用它时,机器人告诉我它只为一个用户服务。
client.users
是在任何点缓存的所有用户对象,由它们的ID映射。
我不认为有一个单一的方法或属性来获取bot所在的每个服务器的成员总数。您可能可以迭代客户机当前处理的guilds
并取而代之地获取成员。
应采取以下措施:
async function getTotalNumberOfMembers(client) {
const guilds = client.guilds.cache;
let numberOfMembers = 0;
// resolves once members from every guild is fetched
await Promise.all(
guilds.map(async (guild) => {
const members = await guild.members.fetch();
numberOfMembers += members.size;
}),
);
return numberOfMembers;
}
// ...
const total = await getTotalNumberOfMembers(client);
console.log(total);
编辑:是的,您还可以使用.MemberCount
属性:
function getTotalNumberOfMembers(client) {
const guilds = client.guilds.cache;
let numberOfMembers = 0;
guilds.each((guild) => {
numberOfMembers += guild.memberCount;
});
return numberOfMembers;
}
const total = getTotalNumberOfMembers(client);