在一个命令中创建并赋予角色 Discord.JS

时间:2021-01-04 00:17:29

标签: javascript node.js discord.js

我正在创建一个 Discord 机器人,它根据命令中输入的参数创建一个角色,然后将该角色分配给同一消息中提到的用户。角色创建得很好,但我遇到了问题,然后将角色分配给甚至消息的作者(我),更不用说消息中的多次提及了。我推断找不到该角色,因此无法将其分配给用户,但我不知道为什么找不到。

我正在使用

message.guild.roles.create({
    data: {
        name: roleName,
        color: 'BLUE'
    }
})
.catch(console.error);

(其中 roleName 定义为命令的第一个参数)创建角色,然后

let role = message.guild.roles.cache.find(role => role.name === roleName);

按名称搜索角色(我尝试将其打印到控制台,但它返回为 undefined)。

是否可以在一个命令中创建和指定角色?

1 个答案:

答案 0 :(得分:0)

首先,在您的情况下确实不需要使用 find() 函数! 您可以简单地定义新创建的角色对象:

message.guild.roles.create({
data: {
    name: roleName,
    color: 'BLUE'
}
}).catch(console.error).then(role => {
// Our following code will be placed here
})

从那时起,为了将角色分配给消息中提到的所有成员,我们可以简单地使用 message.mentionsforEach() 函数来获取每个成员对象并分配角色到它。

message.mentions.members.forEach(member => {
        member.roles.add(role)
    })

最后,您的代码应如下所示:

message.guild.roles.create({
        data: {
            name: roleName,
            color: 'BLUE'
        }
    }).catch(console.error).then(role => {
        message.mentions.members.forEach(member => {
            member.roles.add(role)
        })
    })