【问题标题】:Getting the amount of users with certain role who reacted to a message with a certain emoji获取对带有特定表情符号的消息做出反应的具有特定角色的用户数量
【发布时间】:2020-07-22 14:05:30
【问题描述】:

所以我正在为我和我的朋友们写一个不和谐的机器人。我遇到了这个问题:我需要通过反应来找到投票的人数,但我只需要计算被授权投票的人(有角色授权)。 我尝试使用:

const result = await voting.awaitReactions(filter, { time: 15000 });
console.log(result.get('????').count);

但无论我使用何种过滤器,这都会返回投票的总人数 我试过反应收集器,但我无法让它工作。 请帮忙!

【问题讨论】:

  • 你试过什么过滤器?
  • @Aplet123 我试过const filter = (reaction, user) => (reaction.emoji.name === '????'||reaction.emoji.name === '????')&&(message.member.guild.members.cache.find(r=> r.id == user.id).roles.cache.has(grarole.id)==true||message.member.guild.members.cache.find(r=> r.id == user.id).roles.cache.has(botrole.id)==true); grarole 是提供授权的,而botrole 是bot 拥有的。我用第二个来确保总是有表情符号。
  • 试试这个:const filter = (reaction, user) => { if(reaction.emoji.name !== '????' && reaction.emoji.name !== '????') return false; let member = message.guild.members.cache.find(r => r.user.id === user.id); return member.roles.cache.has(grarole.id) || member.roles.cache.has(botrole.id); }
  • 没用。仍然计算所有投票的人,而不仅仅是具有角色的成员

标签: discord.js


【解决方案1】:

这已经很晚了,但是试试:

const filter = (reaction, user) => {
      return (
        ['?', '?'].includes(reaction.emoji.name) &&
        (message.guild.member(user).roles.cache.has(grarole.id) ||
        message.guild.member(user).roles.cache.has(botrole.id))
      );
    };

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2021-10-05
    • 2019-12-27
    • 2019-07-31
    • 2020-07-16
    • 2021-12-17
    • 2014-08-31
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多