取得对旧邮件的旧反应

时间:2020-04-19 23:01:04

标签: discord.js

我用12.0.2版编写了一个discord.js机器人,某些功能已经运行了一段时间,但现在却无法正常运行,它似乎与空缓存有关,但是我无法弄清楚如何解决它。

这是场景:

我的机器人每周在服务器上发布一条消息,而行会成员有一周时间对此消息做出反应。在一周结束时,我想分析对机器人的反应来决定要做什么(我不能让机器人以24/7的速度运行来等待反应)。

这是我的问题:

一旦获取了此特定消息,到目前为止,我所做的是msg.reactions.resolve('✅').users.fetch().then(somestuff),但是由于几个星期后它停止运行并抛出了(node:2336) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'users' of null

我已经经过一些调试步骤,发现msg.reactions.cache是空的,因此这里我认为是问题所在,但是我找不到如何填充它。 msg.reactions包含以下内容:

ReactionManager {
  cacheType: [Function: Collection],
  cache: Collection [Map] {},
  message: Message {
    details_about_the_message_that_confirm_it_is_the_desired_one_that_have_been_reacted_to
  }
}

请问有人对如何解决这个问题有想法吗?任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案,或者也许我最好将其称为解决方法,因此我在这里共享它以结束本文。

首先,我不得不说msg.reactions.resolve('✅').users.fetch().then(somestuff)可以正常工作,而不是问题的一部分,因为问题出在消息获取过程中。抓取一堆消息或抓取特定消息(通过ID表示)会导致不同的结果。

通过ID提取特定的消息可以访问ReactionManager的缓存,而提取几条消息似乎不会填充缓存。