Javascript r未定义,获取用户拥有的所有角色

Javascript r未定义,获取用户拥有的所有角色,javascript,node.js,bots,roles,discord.js,Javascript,Node.js,Bots,Roles,Discord.js,我试图使当用户发布命令时,他们能够随意在角色之间交换。角色只是我为之制作的服务器的颜色。出现问题的部分是“var args”部分之前的第一部分。基本上,查找用户当前所处的所有角色并在添加新角色之前将其删除的部分就是问题所在 我让机器人加入角色。然后我知道我需要删除所有旧角色,以便新颜色(可能在层次结构中较低)不会显示 下面代码的错误是“(节点:181764)未处理PromisejectionWarning:ReferenceError:r未定义。”我从anidiotsguide中直接获取了该部分

我试图使当用户发布命令时,他们能够随意在角色之间交换。角色只是我为之制作的服务器的颜色。出现问题的部分是“var args”部分之前的第一部分。基本上,查找用户当前所处的所有角色并在添加新角色之前将其删除的部分就是问题所在

我让机器人加入角色。然后我知道我需要删除所有旧角色,以便新颜色(可能在层次结构中较低)不会显示

下面代码的错误是“(节点:181764)未处理PromisejectionWarning:ReferenceError:r未定义。”我从anidiotsguide中直接获取了该部分。我正在按原样学习js。我觉得这个小项目很简单,可以让我有一点使用discord.js的经验。如果我看起来像个新手,我道歉。我是。哈哈,提前感谢你的帮助

bot.on('message',异步(message)=>{
if(message.content.toLowerCase().startsWith(“!colorme”))
if(message.member.roles.some(r=>[“蓝色”、“红色”、“黄色”]。包括(r.name)))
wait(message.member.removole(r.name));
{
var args=message.content.toLowerCase().split(“”);
console.log(args);
如果(参数[1]=“蓝色”)
{
var role=message.guild.roles.find('name','blue');
log(“找到角色!”);
message.member.addRole(role.id);
message.channel.send('Role successfully added!');
}
else if(参数[1]=“红色”)
{
addUserRole(“红色”,消息);
message.channel.send('Role successfully added!');
}
else if(参数[1]=“黄色”)
{
addUserRole(“黄色”,消息);
message.channel.send('Role successfully added!');
}
};
});
函数addUserRole(角色名,消息)
{
var role=message.guild.roles.find('name',roleName);
message.member.addRole(role.id);
返回;

}
您使用了。某些方法不正确。看一看

我在guildmember的角色集合中使用了.array,它与discord.js的.some方法相同(证明:)

请尝试以下代码:

bot.on('message', async (message) => {

    if(message.content.toLowerCase().startsWith("!colorme"))
    message.member.roles.array().some(r => {
        if (["blue", "red", "yellow"].includes(r.name)) {
            message.member.removeRole(r);
        }
    })

    {
      var args = message.content.toLowerCase().split(" ");
      console.log(args);
      if(args[1] === "blue")
    {
        var role = message.guild.roles.find('name', 'blue');
        console.log("Role found!");
        message.member.addRole(role.id);
        message.channel.send('Role successfully added!');
    }
    else if(args[1] === 'red')
    {
      addUserRole('red', message);
      message.channel.send('Role successfully added!');
  }
  else if(args[1] === 'yellow')
    {
      addUserRole('yel', message);
      message.channel.send('Role successfully added!');

      }
    };
  });

  function addUserRole(roleName, message)
  {
    var role = message.guild.roles.find('name', roleName);
    message.member.addRole(role.id);
    return;

message.member.roles
的示例是什么?你的
message.member.roles.some(r=>[“蓝”、“红”、“黄”].includes(r.name))
调用应该适用于字符串数组我认为它也应该适用,但它一直告诉我r需要定义,但我甚至不确定它需要定义为什么。。。试图找到的角色有各种颜色。我希望bot实质上为用户重置角色,然后应用新角色。我知道当它正在寻找某个要删除的角色时,我会如何定义它,但是这个服务器有26个不同颜色的角色。我只想让它看到用户当前拥有的角色,删除它,然后添加新角色。anidiotsguide没有详细说明r在这个应用中应该是什么,所以我有点不知所措;这段对话已经结束。