【发布时间】:2023-03-03 23:18:01
【问题描述】:
我有一些我想要的代码;获取具有特定角色的所有用户(他们的“团队”)。然后,对于特定团队中的每个用户,我想调查他们拥有的其他一些角色。
我有一个数组中的团队(角色),所以我可以循环遍历每个团队。
//pop a role to work with for this loop
const therole = teams.pop();
//find role for this loop
const Role = message.guild.roles.cache.find(role => role.name == therole );
//filtered by those with therole for the loop, fill members array with users ids with that role
const Members = message.guild.members.cache.filter(member => member.roles.cache.find(role => role == Role)).map(member => member.user.id);
此时我现在有一个数组成员,其中包含角色为“therole”的用户的成员 ID。这部分有效。
然后我想要对存储在 Members 数组中的每个成员 ID 做的是查找该成员并检查他们是否具有各种其他角色(例如,我有一个时区角色)。
所以我开始一个循环
for (var i=Members.length; i--;){
但我被困在如何通过成员数组中的 ID 查找成员并检查他们是否有其他角色。我得到的最接近的是;
var haseurope = message.member.roles.cache.some(r => r.name === 'Europe');
//Debug log
console.log(i + ' The member is:' + Members[i]);
console.log(i + ' Has Europe is:' + haseurope);
Members arrary 有 6 个 ID,有时我可以让 haseurope 等于 true 6 次,有时是 false 6 次,具体取决于我如何定义 haseurope 变量。上面的示例日志(IDs anonomoised);
app[worker.1]: 5 The member is:684896007655557000
app[worker.1]: 5 Has Europe is:true
app[worker.1]: 4 The member is:489439004133708000
app[worker.1]: 4 Has Europe is:true
app[worker.1]: 3 The member is:110047003303981000
app[worker.1]: 3 Has Europe is:true
app[worker.1]: 2 The member is:589135008044626000
app[worker.1]: 2 Has Europe is:true
app[worker.1]: 1 The member is:218202002409912000
app[worker.1]: 1 Has Europe is:true
app[worker.1]: 0 The member is:341509003306030000
app[worker.1]: 0 Has Europe is:true
我认为正在发生的事情是,当我运行 message.member.roles.cache.some(r => r.name === 'Europe'); 时,成员部分不会因循环的每次迭代而改变。不过,我似乎无法做这样的事情;
message.Members[i].roles.cache.some(r => r.name === 'Europe');
如何查看; "对于 Members 数组中的每个 ID,此用户 ID 是否具有 'Europe' 角色?
感谢大家的帮助!
【问题讨论】:
标签: javascript node.js discord.js