3 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
你得到的原因undefined
是因?yàn)樗?code>fetch()是一個(gè)異步函數(shù),這意味著它在后臺(tái)完成,一旦完成,then
就會(huì)調(diào)用回調(diào)。
你不能把它放在then()
塊之外,因?yàn)槟菢幽愕拇a將在fetch()
完成之前執(zhí)行并用結(jié)果更新變量,除此之外,變量totalOnline
是在該塊內(nèi)創(chuàng)建的,所以它不會(huì)在任何一種方式之外工作,因?yàn)樗窃摲秶鷥?nèi)的局部變量。
您可以在該范圍內(nèi)使用額外的所需信息。例如:
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貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以做的而不是使用fetch()只是為成員集合分配一個(gè)變量。
// v12
let allmembers = message.guild.members.cache;
// v11
let allmembers = message.guild.members;
一旦你有了它,你就可以過(guò)濾它并將它放入嵌入或消息等中。
const totalOnline = allmembers.filter(member => member.presence.status === 'online');
message.channel.send(`There are currently ${totalOnline.size} members online in ${message.guild.name}!`);

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
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();
添加回答
舉報(bào)