我创建了一个 temporary mute
命令,我的机器人会检查公会是否有一个叫的角色。Muted
. 因此,如果一个用户在以下公会中执行了该命令 Muted
角色不存在,它会为他们创建一个。然而,我遇到了一个问题,机器人创建了一个名为 "角色 "的角色。new role
而不是 Muted
图片1. 如果用户在公会中第二次执行该命令,就会创建一个复制的 new role
角色;作为 Muted
角色不存在 图像2.
let muteRole = message.guild.roles.cache.find(m => m.name === "Muted");
if (!muteRole) {
try {
muteRole = await message.guild.roles.create({
name: "Muted",
color: "#000000",
permissions:[]
});
message.guild.channels.cache.forEach(async (channel, id) => {
await channel.createOverwrite(muteRole, {
SEND_MESSAGES: false,
MANAGE_MESSAGES: false,
READ_MESSAGES: false,
ADD_REACTIONS: false
});
});
} catch(e) {
console.log(e.stack);
}
}
根据 discord.js文档,你必须把 name
, color
和 permission
里面 data
属性。下面是他们的那个方法的例子。
// Create a new role with data and a reason
guild.roles.create({
data: {
name: 'Super Cool People',
color: 'BLUE',
},
reason: 'we needed a role for Super Cool People',
})