代码:
if(command === "rusr"){
console.log((chalk.yellow)`You ran a command: rusr`)
const id = args[0]
const role = args.slice(1).join(" ")
let user = message.guild.member(message.mentions.users.first()) || message.guild.members.get(id)
user.roles.add(role)
}
错误:
UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied roles is not a Role, Snowflake or Array or Collection of Roles or Snowflakes.
这很奇怪,因为我有完全相同的代码,但昵称可以正常工作。无论如何要解决这个问题?
答案 0 :(得分:0)
错误在 const role = args.slice(1).join(" ")
。那不是角色,那是角色的名字。而是让它像
const role = message.guild.roles.cache.find(r => r.name == args.slice(1).join(" "));
这样就可以找到具有指定名称的角色。
没有它也能工作,但最好在定义角色的行之后添加 if(!role) return message.channel.send('Invalid role!');
。这意味着如果有人输入了一个不存在的角色的名称,它会停止并告诉用户而不是破坏代码。