【发布时间】:2020-09-15 16:37:09
【问题描述】:
我有一个不和谐的机器人,它有一个静音命令。静音命令理论上有效,但是当我在合适的服务器上测试它时,我发现了一个问题。角色“静音”被放置在角色列表的底部,这意味着它上面的所有其他角色都会覆盖静音,使其实际上无用。是否有一种方法可以将创建的角色“静音”设置为机器人可以分配的最高级别,以便静音可以生效?
代码如下:
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);
}
【问题讨论】:
标签: discord.js