当执行命令.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);});
}
答案 0 :(得分:0)
您仅在使用args[1]
时使用了第二个参数。您尝试添加的角色必须包含多个角色,因此您不能仅使用args[1]
。您必须先切片,然后加入其余参数。下面的代码应该可以工作,但是如果您遇到任何错误,请告诉我。
const role = message.guild.roles.cache.find(role => role.name == args.slice(1).join(' '));