Добавление / удаление ролей не работает (иногда) - PullRequest
0 голосов
/ 18 января 2019

На некоторых серверах Discord мой код для добавления / удаления ролей, а на некоторых - нет. Я проверил, и все они имеют правильные разрешения, так что я немного озадачен.

Всякий раз, когда я запускаю команду >addrole или >removerole, я всегда получаю одно и то же сообщение об ошибке Discord. Это ": x: Не удалось найти отключенную роль. Убедитесь, что вы не сделали опечатку (роли также чувствительны к регистру!)" . Я установил это для случаев, когда пользователь делает опечатку, когда печатает, какую роль он хочет добавить.

Формат команд следующий:

addrole [@User] [RoleName] removerole [@User] [RoleName]

const Discord = require("discord.js");

exports.run = async(bot, message, args) => {
  if (!message.member.hasPermission("MANAGE_ROLES")) return message.channel.send(":x: Insufficient permission.").then(msg => msg.delete(4000));
  let rolemember = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
  if (!rolemember) return message.channel.send(":x: Could not find user.").then(msg => msg.delete(4000));
  let role = args.join(" ").slice(22);

  if (!role) return mesage.reply(":x: Specify a role.");
  let gRole = message.guild.roles.find(`name`, role);
  if (!gRole) return message.channel.send(":x: Couldn't find mute role. Make sure you didn't make a typo (roles are case-sensitive too!)");

  if (!rolemember.roles.has(gRole.id)) return message.channel.send(`:x: User does not have role "${gRole.name}".`).then(msg => msg.delete(4000));
  await (rolemember.removeRole(gRole.id));

  try {
    rolemember.send(`:white_check_mark: Your role "${gRole.name}" in`, message.guild.name, "has been removed :confused:.");
  } catch (e) {
    message.channel.send(`:white_check_mark: ${rolemember} Your role "${gRole.name}" has been removed :confused:.`);
  }
  let removeroleEmbed = new Discord.RichEmbed()
    .setDescription("Role Changes")
    .setColor("RANDOM")
    .addField("Role Removed", gRole)
    .addField("Removed From", rolemember)
    .addField("Removed By", message.author);

  let logChannel = message.guild.channels.find(`name`, "logs-reports");
  if (!logChannel) return message.channel.send(":x: Couldn't find logs channel.").then(msg => msg.delete(4000));
  logChannel.send(removeroleEmbed);
}

exports.help = {
  name: "removerole"
}

Я ожидаю, что роль должна быть добавлена, однако это не так, и то же сообщение об ошибке я получаю каждый раз.

1 Ответ

0 голосов
/ 18 января 2019

Как .find('name', 'name') УСТАРЕЛО. То, что вы используете, может не работать .. Вместо этого используйте let gRole = message.guild.roles.find(r => r.name === role). Я новичок в этом сообществе. Поэтому, пожалуйста, запомните, если я что-то не так делаю.

Попробуйте заменить let gRole = message.guild.roles.find ("имя", роль); with let gRole = message.guild.roles.find (r => r.name === role) Это должно работать, потому что так оно и должно быть, извините, я не очень хорош в объяснении

Примечание: Collection.find() не полностью устарел, просто формат Collection.find("name", "yourName") устарел!

...