在 discord.js v12 中为提到的用户添加角色

时间:2021-02-26 19:14:56

标签: discord.js

代码:

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.

这很奇怪,因为我有完全相同的代码,但昵称可以正常工作。无论如何要解决这个问题?

1 个答案:

答案 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!');。这意味着如果有人输入了一个不存在的角色的名称,它会停止并告诉用户而不是破坏代码。