Javascript 正在检索具有特定角色的用户

Javascript 正在检索具有特定角色的用户,javascript,discord.js,Javascript,Discord.js,最近,我遇到了一个我一直试图解决的问题,但我没有找到一个好的解决方案或制定一个好的解决方案。 我的目标是检查一个角色,看看它有多少在线用户。到目前为止,它每1小时检查一次,我已将其设置为在bot就绪后启动(通过ready事件)。 我一直面临的问题是,实际上正在检索具有特定角色的在线人员列表,我不确定如何继续。我目前有这段代码(非常简单,没有太多内容),我不太确定如何让bot检查指定角色中的成员并检查他们的状态,以确保他们是否在线 如果有人能为我提供帮助或指引我正确的方向,那就太好了。非常感谢。(

最近,我遇到了一个我一直试图解决的问题,但我没有找到一个好的解决方案或制定一个好的解决方案。
我的目标是检查一个角色,看看它有多少在线用户。到目前为止,它每1小时检查一次,我已将其设置为在bot就绪后启动(通过
ready
事件)。
我一直面临的问题是,实际上正在检索具有特定角色的在线人员列表,我不确定如何继续。我目前有这段代码(非常简单,没有太多内容),我不太确定如何让bot检查指定角色中的成员并检查他们的状态,以确保他们是否在线

如果有人能为我提供帮助或指引我正确的方向,那就太好了。非常感谢。(此外,目前它是非常基本的代码,完全不起任何作用,这只是我的开始。我不确定如何找到其余的,我已经尝试过查看文档,但我无法找到我需要的。)

返回一个s。GuildMember类有一个属性,返回一个。Presence类有一个属性,它返回一个字符串,该字符串可以是“online”/“offline”/“idle”/“dnd”

因此,使用这些属性并使用集合的方法,可以从角色中筛选成员集合,其中guildmember的状态为“online”

这将导致:
.members.filter(member=>member.presence.status==“online”)
,它返回具有特定角色且当时处于联机状态的行会成员集合

然后,您可以使用类似的方法从集合中获取所需的属性,例如,如果您希望从GuildMembers中获取用户名,您可以执行
.map(member=>member.user.username)
操作,该操作将从成员集合中返回一个用户名数组。

返回一个s。GuildMember类有一个属性,返回一个。Presence类有一个属性,它返回一个字符串,该字符串可以是“online”/“offline”/“idle”/“dnd”

因此,使用这些属性并使用集合的方法,可以从角色中筛选成员集合,其中guildmember的状态为“online”

这将导致:
.members.filter(member=>member.presence.status==“online”)
,它返回具有特定角色且当时处于联机状态的行会成员集合


然后,您可以使用类似的方法从集合中获取所需的属性,例如,如果您希望从GuildMembers中获取用户名,您可以执行
.map(member=>member.user.username)
,这将从成员集合中返回一个用户名数组。

感谢您的回复!如果我可以问一下,在这种情况下会发生什么?我需要获取角色的ID,然后对角色使用“查找”吗?您可以执行以下操作之一:
.roles.find(role=>role.name==“角色名称”)
.roles.get(ID)
。两者都会返回一个对象。谢谢您的回复!我来试试这个:)谢谢。一切都解决了。此外,对于映射,您希望将其作为
.map(member=>member.user.username)
感谢您的回复!如果我可以问一下,在这种情况下会发生什么?我需要获取角色的ID,然后对角色使用“查找”吗?您可以执行以下操作之一:
.roles.find(role=>role.name==“角色名称”)
.roles.get(ID)
。两者都会返回一个对象。谢谢您的回复!我来试试这个:)谢谢。一切都解决了。此外,对于映射,您希望将其作为
.map(member=>member.user.username)
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)