Как получить роль пользователя, запрашивающего команду в Discord.js

#discord #discord.js

Вопрос:

Я пытаюсь выяснить, имеет ли пользователь для команды ( whotohelp ) определенные роли («Лабораторный демонстратор»), однако, похоже, я не понимаю, как я могу получить эту роль.

Для моего на » interactionCreate` В настоящее время у меня есть следующее:

 client.on('interactionCreate', async interaction => {

  if (!interaction.isCommand()) return;
  (interaction.commandName);
  //gets username
  var username = (interaction.user.username);
  //test code
  if (interaction.commandName === 'ping') {
  
    await interaction.reply('Pong!');
  }

 

В Python я использовал @commands.has_any_role("Lab Demonstrator","lab demonstrator", "staff") , как в:

 @client.command(pass_context=True)
@commands.has_any_role("Lab Demonstrator","lab demonstrator", "staff","teaching-assistant","lecturers","admin", "Admin")
async def whoToHelp(mesage):
 

Какой была бы альтернатива Javascript?

Ответ №1:

Вы можете использовать Collection.some для логического значения и Collection.find для объекта роли.

Логический

 const hasRole = interaction.member.roles.cache.some(r => r.name === "the_role_name")
//true if they have it, false if they don't
 

Объект Роли

 const role = interaction.member.roles.cache.find(r => r.name === "the_role_name")
//the role object if they have it
 

Комментарии:

1. Спасибо — я потратил на это слишком много времени, а вы отвечаете за 4 минуты! овации

2. Если это помогло, пожалуйста, отметьте это как правильное, нажав на галочку

3. Конечно, сделано — извините за задержку, переполнение стека заставило меня подождать 15 минут, прежде чем я смогу отметить его как ответ

4. Я все еще не вижу галочки?

5. Я сделал это, и это появляется с моей стороны — вы просматриваете кэшированную версию или что-то в этом роде?