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

r is undefined, obtain all roles user has

我试图让用户在发布命令时能够随意切换角色。这些角色只是我为其制作的服务器的颜色。有问题的部分是 "var args" 部分之前的第一部分。基本上,找到用户当前所在的所有角色并在继续添加新角色之前删除它们的部分就是问题所在。

我让机器人开始添加角色。然后我知道我需要删除所有旧角色以使新颜色(可能在层次结构中较低)可能不会出现。

下面代码的错误是“(node:181764) UnhandledPromiseRejectionWarning: ReferenceError: r is not defined.”我把那个部分从 anidiotsguide 上拿走了。我正在按原样学习js。认为这个小项目很简单,可以给我一些 discord.js 的经验。抱歉,如果我看起来像个新手。我是。大声笑提前感谢帮助。

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

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

  {
    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('yellow', 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;
}

您没有正确使用.some 方法。看一看here.

你的公会成员角色集合我用了.array,和discord.js的.some方法一样(证明:https://i.imgur.com/5aXu1wj.png

试试下面的代码:

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;