我用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
}
}
请问有人对如何解决这个问题有想法吗?任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
我终于找到了解决方案,或者也许我最好将其称为解决方法,因此我在这里共享它以结束本文。
首先,我不得不说msg.reactions.resolve('✅').users.fetch().then(somestuff)
可以正常工作,而不是问题的一部分,因为问题出在消息获取过程中。抓取一堆消息或抓取特定消息(通过ID表示即)会导致不同的结果。
通过ID提取特定的消息可以访问ReactionManager
的缓存,而提取几条消息似乎不会填充缓存。