使用角色迭代“forEach”成员

时间:2021-01-05 22:22:57

标签: foreach collections discord discord.js

我发现了几篇似乎试图解决这个问题的帖子,但我看到的所有解决方案/尝试都不适合我。

我有一个我的机器人成功获取的“角色”。根据命令,我希望机器人检查具有该角色的每个成员,并为他们提供额外的角色。

它根本行不通,所以(用于测试/调试目的)我目前有以下代码:

const teamCaptainRole = await message.guild.roles.cache.find(role => role.name === "Team Captain");
console.log(teamCaptainRole.members)
await teamCaptainRole.members.forEach(member => {
  console.log(member)
});

“teamCaptainRole”之前的“控制台日志”显示我已成功获取角色。 “teamCaptainRole.members”的控制台日志返回:

Collection [Map] {}

我已经在谷歌上搜索了这些词,但发现自己陷入了疯狂的追逐中 - 我找不到深入研究此地图/收藏的方法。我之前没有使用地图的任何经验,但我很了解数组和对象。 'forEach' 似乎永远不会触发,但也不会抛出任何错误 - 根本没有任何反应。现在,我希望能够看到一系列具有该角色的成员的控制台日志,以便我知道 forEach 正在工作。

有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

let role = message.guild.roles.cache.find(r => r.name === "Team Captain");
let giveRole = message.guild.roles.cache.find(r => r.name === "Enter Role Here");
let users = role.members.map(m => message.guild.member(m.user));
for(let user of users) {
   user.roles.add(giveRole);
}

role -> 我们将从中搜索用户的角色。
giveRole -> 我们将赋予所有拥有 role 的成员的角色。
users -> 拥有 role 的用户。

您也可以使用 users.forEach(),但我使用的是基本的 for 循环。我们将那些拥有角色的用户映射为 GuildMember 对象,以便我们可以在 for 循环中添加 giveRole