如何解决使用角色迭代“forEach”成员
我发现了几篇似乎试图解决这个问题的帖子,但我看到的所有解决方案/尝试都不适合我。
我有一个我的机器人成功获取的“角色”。根据命令,我希望机器人检查具有该角色的每个成员,并为他们提供额外的角色。
它根本行不通,所以(用于测试/调试目的)我目前有以下代码:
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 正在工作。
有什么帮助吗?
解决方法
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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。