Проверьте, имеет ли пользователь, добавляющий реакцию, роль

#node.js #discord #discord.js

#node.js #Discord #discord.js

Вопрос:

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

пример: если пользователь с рангом администратора отреагировал с помощью:eggsa: emoji, бот продолжит выполнение команды, но если бы у меня был только ранг участника, бот проигнорировал бы меня.

 client.on('messageReactionAdd', reaction => {
    const eggsa = client.emojis.find(emoji => emoji.name === "eggsa");
    if (reaction.emoji.name === 'eggsa') {
        const message = reaction.message;
        const kanal = reaction.message.guild.channels.find('name', 'sitater');
        var embed = new Discord.RichEmbed()
        .setAuthor(reaction.message.content)
        .setTimestamp()
        .setFooter(reaction.message.author.username, reaction.message.author.avatarURL)
        kanal.send({embed});
    }
});
  

код работает на этом этапе, только каждый может его использовать

Я был бы очень признателен, если бы кто-нибудь мог мне помочь >:)

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

1. Вы должны показать свою попытку сделать это, и тогда мы сможем помочь, мы не собираемся делать все это за вас

Ответ №1:

Если вы посмотрите на документы messageReactionAdd, вы можете увидеть, что вместе с реакцией вы также можете получить пользователя, который добавил реакцию. Поэтому вместо

 client.on('messageReactionAdd', reaction => {
  

У вас было бы

 client.on('messageReactionAdd', (reaction, user) => {
  

Итак, у вас есть пользователь, который имеет тип User. Поскольку user это не тип GuildMember, сначала вам нужно выбрать правильного члена гильдии, прежде чем вы сможете проверить его / ее роль.

Самый простой способ сделать это — получить сообщение, с помощью которого была добавлена реакция const msg = reaction.message; . Затем вы можете получить гильдию из сообщения с помощью const guild = msg.guild; . Теперь вы можете получить доступ к членам гильдии с помощью const guildMembers = guild.members; . Наконец, вам нужно будет найти правильного участника с помощью const guildMember = guildMembers.get(user.id); .

Теперь, когда у вас есть член вашей гильдии, вы можете получить доступ к его / ее ролям и, таким образом, проверить, есть или нет у него / нее определенной роли

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

1. Если у вас есть идентификатор, используйте .get()