我有个不和谐的机器人,它有一个无声的命令。静音命令在理论上可以工作,但是当我在适当的服务器上测试它时,我注意到了一个问题。角色“静音”被放置在角色列表的底部,这意味着它上面的所有其他角色都会覆盖静音,从而使它实际上是无用的。是否有一种方法可以将角色“静音”创建到机器人可以指定的最高级别,这样静音就可以生效了?
以下是代码:
if (command === 'mute') {
if (!message.member.hasPermission("MANAGE_ROLES") || !message.guild.owner) return message.channel.send("You don't have enough authority to do this.");
if (!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"]))
return message.channel.send("Give me the permissions first.")
let role = message.guild.roles.find(x => x.name === "Muted");
let member = message.mentions.members.first() || message.guild.members.get(args[0]);
if (!member) return message.reply(`I can't find the user ` + member)
let duration = ms(args[1]);
let reason = args.slice(2).join(' ');
if (!reason) reason = "No reason provided";
if (!role) {
try {
role = await message.guild.createRole({
name: "Muted",
color: "#000000",
permissions: []
})
message.guild.channels.forEach(async(channel, id) => {
message.channel.overwritePermission(role, {
SEND_MESSAGES: false,
ADD_REACTIONS: false,
SEND_TTS_MESSAGES: false,
ATTACH_FILES: false,
SPEAK: false
});
});
} catch (e) {
console.log(e);
}
}
member.addRole(role).catch(console.error);
message.channel.send(`<@${member.id}> , you have been muted for ${duration}.`)
setTimeout(function() {
member.removeRole(role.id);
message.channel.send(`${member} has been automatically unmuted.`);
}, duration);
}发布于 2020-05-28 14:01:34
免责声明:您似乎在使用discord.js@v11,我将用该版本的代码进行答复。
在创建角色时,应该使用position选项:
role = await message.guild.createRole({
name: "Muted",
color: "#000000",
permissions: [],
position: 1
})您可以找到在创建角色这里时可以使用的所有选项的列表。
https://stackoverflow.com/questions/62063416
复制相似问题