【问题标题】:r is undefined, obtain all roles user hasr 未定义,获取用户拥有的所有角色
【发布时间】:2019-02-04 20:57:20
【问题描述】:

我试图让当用户发布命令时,他们能够随意在角色之间交换。这些角色只是我为其制作的服务器的颜色。有问题的部分是“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;
}

【问题讨论】:

  • message.member.roles 的示例是什么样的?您的 message.member.roles.some(r => ["blue", "red", "yellow"].includes(r.name)) 调用应该适用于字符串数组
  • 我认为它也应该可以工作,但它一直告诉我 r 需要定义,但我什至不确定它需要定义为什么......试图成为的角色发现是各种颜色。我希望机器人从本质上为用户重置角色,然后应用新角色。我知道当它正在寻找它要删除的某个角色时我会如何定义它,但是这个服务器有 26 个不同的颜色角色。我只想让它查看用户当前拥有的角色,将其删除,然后添加新角色。 anidiotsguide 没有详细说明 r 对于这个用途应该是什么,所以我有点迷茫。

标签: javascript node.js bots roles discord.js


【解决方案1】:

您使用的 .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;

【讨论】:

猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 2021-10-06
  • 2016-06-18
  • 2014-05-08
  • 2021-05-05
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多