向所有具有其他角色的成员添加角色?

时间:2020-09-14 13:47:13

标签: javascript node.js discord discord.js

我想在不和谐的bot上运行命令,并为所有具有预定义角色的成员添加辅助角色。

它会像这样。所有具有X角色的成员都将被分配给Y角色。

我试图编写代码,但是失败了,因此我将我的代码编写为伪代码,这对任何帮助都很好。

const userID = "1234"; //this is my userid so only I will be able to use this command
let roleID1 = "xxxx";
let roleID2 = "yyyy";
client.on("message", function (message) {
  if (message.author.id === userID) {
    if (message.content === "!setrole") {

      // Code for taking the list of all members with role xxxx.
      // Code for assigning all those people to the role yyyy.

      message.channel.send("Roles assigned");
    }
  }
});

1 个答案:

答案 0 :(得分:2)

尝试一下:

// iterate a function through all members of the guild
message.guild.members.cache.forEach((member) => {
  if (member.roles.cache.has(roleID1) // if member has x role
     member.roles.add(roleID2); // give y role
});

您也可以使用Array.prototype.filter();尽管执行没有区别,但执行速度可能更快(但我真的不知道):

message.guild.members
  .filter((member) => member.roles.cache.has(roleID1))
  .forEach((member) => member.roles.add(roleID2))