Проверьте, есть ли у пользователя, добавляющего реакцию, роль - PullRequest
0 голосов
/ 26 марта 2019

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

пример: если пользователь с рангом администратора отреагировал: 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 Ответ

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

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

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

у вас будет

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

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

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

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

...