Есть ли способ проверить, существует ли роль по ее идентификатору discord.js ?

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Я создаю команду, с помощью которой вы можете установить предупрежденную роль для своего сервера. Я столкнулся с проблемой, заключающейся в том, что для предупрежденной роли будет установлено любое значение, которое вы указываете в качестве аргумента команды. Я хочу, чтобы он принимал только действительные идентификаторы ролей, и для этого мне нужно проверить, существует ли роль с указанным идентификатором. Есть ли способ сделать это? Вот мой фрагмент кода, который, вероятно, необходим:

 execute(message, args) {
 if (!message.member.hasPermission('MANAGE_GUILD'))
  return message.channel.send(
   'You are missing the permissions to manage the server'
  );
 let guildID = message.guild.id;
 let warnedRole = args;
 if (!warnedRole) {
  return message.reply('invalid role ID');
 }
}
  

Как вы можете видеть, я пытался сделать это с if условием, но я понял, что это не сработает, поскольку это установило бы для предупрежденной роли значение, которое вы бы ввели в качестве аргумента команды (даже несколько слов или число, например 12). Итак, есть ли способ проверить, существует ли роль с заданным идентификатором (warnedRole) в гильдии?

Ответ №1:

Предполагая, что вы используете discord.js v12 , вы можете попробовать это:

 const role = message.guild.roles.cache.get(args[0]);

// if role does not exist
if (!role) {
  // ...
};