3 回答
TA贡献1963条经验 获得超6个赞
你得到的原因undefined
是因为它fetch()
是一个异步函数,这意味着它在后台完成,一旦完成,then
就会调用回调。
你不能把它放在then()
块之外,因为那样你的代码将在fetch()
完成之前执行并用结果更新变量,除此之外,变量totalOnline
是在该块内创建的,所以它不会在任何一种方式之外工作,因为它是该范围内的局部变量。
您可以在该范围内使用额外的所需信息。例如:
msg.guild.members.fetch().then(fetchedMembers => {
const totalOnline = fetchedMembers.filter(member => member.presence.status === 'online');
msg.channel.send(`There are currently ${totalOnline.size} members online in ${msg.guild.name}!`);
});
TA贡献1796条经验 获得超4个赞
您可以做的而不是使用fetch()只是为成员集合分配一个变量。
// v12
let allmembers = message.guild.members.cache;
// v11
let allmembers = message.guild.members;
一旦你有了它,你就可以过滤它并将它放入嵌入或消息等中。
const totalOnline = allmembers.filter(member => member.presence.status === 'online');
message.channel.send(`There are currently ${totalOnline.size} members online in ${message.guild.name}!`);
TA贡献2037条经验 获得超6个赞
let members = (await guild.members.fetch())
.filter(m => m._roles.includes(ROLE_ID));
let member_ids = members.map(m => m.user.id);
let member_count = members.size();
添加回答
举报