Бот не устанавливает разрешения на overwritePermissions - PullRequest
0 голосов
/ 28 февраля 2019

У меня на боте разногласий есть команда отключения звука, которая при присвоении имени пользователя дает им роль Muted.Это создает эту роль, но проблема, с которой я сталкиваюсь, заключается в том, что она не меняет разрешения в роли.У моего бота есть все необходимые разрешения, чтобы сделать что-то подобное.Вот код, который я использую:

  let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
  if(!tomute) return message.reply("Usage: !mute <@user>");
  if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!");
  let muterole = message.guild.roles.find(`name`, "Muted");
  if(!muterole){
    try{
      muterole = await message.guild.createRole({
        name: "Muted",
        color: "#000000",
        permissions:[]
      })
      message.guild.channels.forEach(async (channel, id) => {
        await channel.overwritePermissions(muterole, {
          SEND_MESSAGES: false,
          ADD_REACTIONS: false,
          SEND_TTS_MESSAGES: false,
          ATTACH_FILES: false,
          SPEAK: false
        });
      });
    }catch(e){
      console.log(e.stack);
    }
  }
  await(tomute.addRole(muterole.id));
  message.reply(`<@${tomute.id}> has been muted`);

  tomute.addRole(muterole.id).then(() => {
  message.delete()
  tomute.send(`You have been muted in ${message.guild.name}.`)
  })

1 Ответ

0 голосов
/ 16 марта 2019

Я изменил ваш forEach на цикл for.

Попробуйте использовать следующий код:

let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
  if(!tomute) return message.reply("Usage: !mute <@user>");
  if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!");
  let muterole = message.guild.roles.find(`name`, "Muted");
  if(!muterole){
    try{
      muterole = await message.guild.createRole({
        name: "Muted",
        color: "#000000",
        permissions:[]
      })
      for (let i = 0; i < msg.guild.channels.array().length; i++) {
        await msg.guild.channels.array()[i].overwritePermissions(muterole, {
          SEND_MESSAGES: false,
          ADD_REACTIONS: false,
          SEND_TTS_MESSAGES: false,
          ATTACH_FILES: false,
          SPEAK: false
        });
      }
    }catch(e){
      console.log(e.stack);
    }
  }
  await(tomute.addRole(muterole.id));
  message.reply(`<@${tomute.id}> has been muted`);

  tomute.addRole(muterole.id).then(() => {
  message.delete()
  tomute.send(`You have been muted in ${message.guild.name}.`)
  })
...