我正在创建一个 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
)。
是否可以在一个命令中创建和指定角色?
答案 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.mentions
和 forEach()
函数来获取每个成员对象并分配角色到它。
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)
})
})