【问题标题】:Get all users with role获取所有具有角色的用户
【发布时间】:2021-10-06 04:15:11
【问题描述】:

我正在尝试使用 discord.js 让所有具有角色的用户。

let roleFromID = message.guild.roles.cache.get(roleID)

我需要一个包含每个具有该角色的用户的数组。 这是我尝试过的: var members = message.guild.members.cache.filter(member => member.roles.cache.find(role => role == roleFromID)).map(member => member.user.tag); 但是,它返回空列表。如何解决?

【问题讨论】:

  • member.roles.cache.has(roleID) 应该足够了。
  • 我不想检查每个用户是否具有角色,而是要获取所有具有角色的用户
  • 对.. 所以message.guild.members.cache.filter(member => member.roles.cache.has(roleID))...
  • a 并且它仍然返回空列表( [] )。

标签: javascript node.js discord.js


【解决方案1】:

您只需要使用Role.members。 这将返回具有该角色的成员集合。

const role = await message.guild.roles.fetch('role-id');
await message.guild.members.fetch();
const { members } = role //Collection of members

【讨论】:

  • 只有当bot具有指定的角色时才返回集合,如果bot没有角色它只是给出空集合
  • 然后做message.guild.roles.fetch(<RoleResolvable>)
  • 公会缓存后,其角色也会被缓存,无需获取角色
  • 您必须启用公会成员意图
  • @MrMythical 抱歉,我在 .fetch('role-id'); 中输入了错误的变量,现在它可以正常工作了。
【解决方案2】:

这应该可行:

msg.guild.members.cache.filter(member=>member.roles.cache.find(role=>role.id==roleID))//.forEach(m=>{console.log(m.user.username)})

【讨论】:

  • 只有当bot具有指定的角色时才返回集合,如果bot没有角色它只是给出空集合
  • 哦,对不起,现在写的是undefined
猜你喜欢
  • 2023-03-21
  • 2014-04-24
  • 2015-01-09
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
相关资源
最近更新 更多