Discord.js 获取对旧消息的旧反应

Discord.js 获取对旧消息的旧反应,discord.js,Discord.js,我已经用12.0.2版编写了一个discord.js bot,一些功能已经运行了一段时间,但现在已经不起作用了,它似乎与空缓存有关,但我无法找到解决方法 以下是场景: 我让我的机器人每周在服务器上发布一条消息,公会成员有一周的时间对这条消息做出反应。在本周末,我想分析机器人的反应,以决定做什么(我不能让机器人全天候运行,等待反应) 我的问题是: 一旦我获取了这个特定的消息,到目前为止我所做的就是msg.reactions.resolve('✅').users.fetch().then(somes

我已经用12.0.2版编写了一个discord.js bot,一些功能已经运行了一段时间,但现在已经不起作用了,它似乎与空缓存有关,但我无法找到解决方法

以下是场景:

我让我的机器人每周在服务器上发布一条消息,公会成员有一周的时间对这条消息做出反应。在本周末,我想分析机器人的反应,以决定做什么(我不能让机器人全天候运行,等待反应)

我的问题是:

一旦我获取了这个特定的消息,到目前为止我所做的就是
msg.reactions.resolve('✅').users.fetch().then(somestuff)
,但几周后它停止运行,现在抛出
(节点:2336)未处理的PromiseEjectionWarning:TypeError:无法读取null的属性“users”

我已经完成了一些调试步骤,发现
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
  }
}

有人知道如何解决这个问题吗?如果有任何帮助,我将不胜感激,谢谢!

我终于找到了一个解决方案,或者我最好把它称为一个解决方法,因此我在这里分享它来结束这篇文章

首先,我必须说
msg.reactions.resolve('✅').users.fetch()。然后(somestuff)
会起作用,而不是问题的一部分,因为问题存在于消息获取过程中。获取一组消息或获取特定消息(即通过ID)会导致不同的结果


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

您是否尝试过调试Discord API返回的内容?我假设您正在获取消息(如
channel.messages.fetch(ID)
),这样你就可以看到
数据的内容。反应
在其中。@Cherrybloosh您好,很抱歉在您和我的回答之间停留了很长时间!我编辑了我的问题,添加了有关
数据的详细信息。反应
我意识到我错误地将表情符号分解为反应;这应该仍然有效,因为Discord.js使用了表情符号名称(实际的Unicode表情符号)或自定义表情符号的ID。我已删除了我的错误答案,对此表示抱歉。这没什么害处,别担心。你刚刚救了我的命,我也在做同样的事情,但使用的是
fetch()
而不是
resolve([emoji])
。谢谢你!我很高兴听到它帮助了别人!:)