检索具有特定角色的用户

Retrieving users in a certain role

最近遇到一个问题,一直想解决,一直没找到好的解决办法,也没有做出来。
我的目标是检查角色并查看它有多少在线用户。到目前为止,它每 1 小时检查一次,我已经做到了,一旦机器人准备就绪它就会启动(通过 ready 事件)。
我一直遇到的问题实际上是检索以特定角色在线的人员列表,我不确定如何进行。我目前有这段代码(它非常简单,内容不多),我不太确定该怎么做才能让机器人检查指定角色的成员并检查他们的状态,以确保他们在线或不。

如果有人能提供任何帮助或引导我朝着正确的方向前进,那就太好了。谢谢你。 (此外,这是目前非常基本的代码,绝对什么都不做,这就是我的开始。我不知道如何找到其余的,我已经尝试过阅读文档但我找不到我需要的。)

function showOnline() {
  let onlinePeople;

  let onlineEmbed = new Discord.RichEmbed()
    .setAuthor(message.author.username, message.author.displayAvatarURL)
    .setColor("#00ff00")
    .setDescription(`${onlinePeople}`)
    .setFooter();
}

setInterval(showPeople, 2000); // 3600000 (1 hour)

<Role>.members returns a Collection of GuildMembers. The GuildMember class has a presence property, which returns a Presence. The Presence class has a status 属性,其中 return 是一个字符串,可以是 "online"/"offline"/"idle"/"dnd" .

因此,使用这些属性并通过对集合使用 filter 方法,您可以 filter 一个 collection来自角色成员,其中公会成员存在 状态为 "online"

结果为:<Role>.members.filter(member => member.presence.status === "online"),其中 return 是具有特定角色且当时在线的 GuildMembers 的集合。

然后,您可以使用 <Collection>.map() 之类的东西从集合中获取您想要的 属性,例如,如果您想要 GuildMembers 中的用户名,您可以使用 <Collection of GuildMembers>.map(member => member.user.username)将 return 一组来自成员集合的用户名。