当前位置: 首页 > 知识库问答 >
问题:

不一致js反应收集器未侦听收集器。在('collect')上

琴俊良
2023-03-14

我正在尝试使用Discord制作一个带有AFK功能的Discord机器人。js。当用户发送消息时,它将检查他们是否是AFK,如果他们做出反应,则发送DM产品以关闭AFK。我正在尝试更新到v12。它在更新之前是有效的,现在它似乎拒绝倾听任何反应。它将对消息做出反应,但无论何时我做出反应,它都不会将其记录在控制台中。

message.author.send(noLongerAFKMessage).then(async function(msg) {
  try {
    await msg.react('✅');
    await msg.react('❌');
    const reactionFilter = (reaction, user) => {
      return reaction.emoji.name === '✅' || reaction.emoji.name === '❌';
    };
    // Use reaction filter to remove to remove the user from the database rather than an event
    const collector = msg.createReactionCollector(reactionFilter, {
      time: 15000
    });
    collector.on('collect', (reaction, ReactionCollector) => {
      console.log(`Collected ${reaction.emoji.name} from ${reaction.users.last().tag}`);
    });
    collector.on('end', _ => {
      msg.delete().catch(() => console.log('Tried deleting afk message that was already deleted'));
    });
  } catch (err) {
    console.error(err);
  }
});

它不会抛出错误,它将在设置反应收集器(我使用的控制台)后运行代码。登录采集器,似乎一切正常,甚至在采集器结束时删除消息!我还没有找到这样的东西,我真的很困惑到底发生了什么。

共有1个答案

曾瀚昂
2023-03-14

问题似乎与collect事件处理程序有关:

collector.on('collect', (reaction, ReactionCollector) => {
  console.log(`Collected ${reaction.emoji.name} from ${reaction.users.last().tag}`);
});

有两个问题:

>

  • collect事件现在在Discord中传递MessageReaction和User对象。JSV12,而不是像Discord中那样的元素和收集器对象。jsv11。这意味着您需要将参数从(反应,反应收集器)更改为(反应,用户)

    反应。用户不再返回不一致。js集合,而是一个ReactionUserManager,您必须访问的缓存属性才能获得不一致。集合()。这意味着您需要更改反应。用户。最后()。标记反应。用户。隐藏物最后()。标签。或者,由于现在传递了用户对象,因此可以使用User。改为标记

    以下是修改后的代码

    collector.on('collect', (reaction, user) => {
      console.log(`Collected ${reaction.emoji.name} from ${user.tag}`);
    });
    

  •  类似资料:
    • 我在JMeter中有一个性能测试。我有一些SSH监听器,它们应该检索CPU和RAM的使用情况。我希望得到一个关于Jmeter在测试运行时收集侦听器值所使用的延迟的明确解释。用户是否可以设置延迟值?如果可以,Jmeter支持的最小值是多少。目前的数据收集监听器是有点随机的,我认为这是不好的。目前,我在结果中没有类似数量的条目,尽管在两个监听器中我有相同数量的命令。我试图将jmeter.propert

    • 我正在为新手程序员编写一个库,所以我试图保持API尽可能干净。 我的库需要做的事情之一是对大量的ints或long集合执行一些复杂的计算。我的用户需要从许多场景和业务对象中计算这些值,因此我认为最好的方法是使用流来允许用户将业务对象映射到或,然后在收集器中计算这些计算。 所以与其能够做到 我必须提供这样的供应商、累加器和组合器: 这对我的新手用户来说太复杂了,而且很容易出错。 在使用或的同时,是否

    • 我是使用Java8流API的新手,但我希望使用它来解决以下问题。假设我有一个名为的POJO,它包含、和属性,这些属性可以表示以下内容的每一行记录: 看起来如下: 上述四条记录需要合并为两条按名称分组的记录,其中: 属性求和 属性求和 组合记录包括属性,该属性是和的累加和相乘的结果。 因此,上述结果将是: 一个名为的不同POJO将表示组合记录的每一行记录: 有哪些好的方法/解决方案可以将输入的列表转

    • 为什么并行流使用合并器类,而顺序流将使用累加器?为什么并行流不使用累加器? 以下是上述代码的输出: 那么,为什么顺序流使用累加器,并行流使用组合器?并行流不能使用累加器吗?

    • 不保留顺序。我可以使用列表,但我想指出,生成的集合不允许元素重复,这正是接口的用途。

    • 问题内容: 是什么决定了垃圾收集器何时真正收集?它是在一定时间之后还是在一定数量的内存用完之后发生的吗?还是还有其他因素? 问题答案: 它在确定是时候运行时运行。在世代垃圾收集器中,一种常见的策略是在第0代内存分配失败时运行收集器。也就是说,每次你分配一小块内存(大块通常直接放置在“旧”代中)时,系统都会检查gen-0堆中是否有足够的可用空间,如果没有,则运行GC释放空间以使分配成功。然后将旧数据