有没有办法在执行命令时获取所有可用参数? (Discord.js v12)

时间:2020-07-23 17:16:55

标签: javascript node.js discord.js

当执行命令.addrole @username <role-name>时,我试图向成员添加角色。以下代码段有效,但是仅将@username之后的第一个单词用作角色名称。这意味着找不到超过1个单词的角色名称。是否有办法获取@username之后的所有可用单词并以此执行角色搜索?

if (!message.mentions.users.size) return message.reply('You need to tag a member in order to assign them a role!');

      const member = message.mentions.members.first();
      const role = message.guild.roles.cache.find(role => role.name == args[1]);
      if(!role) return message.reply('The specified role was not found.');
      if(member.roles.cache.has(role.id)) {
        message.reply(`${member} already has the "${role.name}" role!`);
      }
      else {
        member.roles.add(role.id).then(() => {
          message.channel.send(`${member} was given the "${role.name}" role`);
        }).catch((e) => {console.log(e);});
      }

1 个答案:

答案 0 :(得分:0)

您仅在使用args[1]时使用了第二个参数。您尝试添加的角色必须包含多个角色,因此您不能仅使用args[1]。您必须先切片,然后加入其余参数。下面的代码应该可以工作,但是如果您遇到任何错误,请告诉我。

const role = message.guild.roles.cache.find(role => role.name == args.slice(1).join(' '));