【问题标题】:How to make Mute role override others如何使静音角色覆盖其他角色
【发布时间】: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


    【解决方案1】:

    免责声明:您似乎在使用 discord.js@v11,我将用该版本的代码回复。

    您应该在创建角色时使用position 选项:

    role = await message.guild.createRole({
      name: "Muted",
      color: "#000000",
      permissions: [],
      position: 1
    })
    

    您可以找到创建角色here时可以使用的所有选项的列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多