是否有更好的方法来无限期缓存消息?



我有一个消息,人们可以添加/删除反应。一旦用户添加了一个反应,它就会在一个单独的通道中更新一个嵌入。我的机器人会在消息发送后的前30分钟左右检测到这些反应,然后完全忽略所有对该消息的进一步反应。为了解决这个问题,我创建了一个函数,它每15分钟运行一次,使用channel.messages.fetch()缓存消息。我非常想知道是否有更好的方法来实现无限缓存消息,最好不使用setInterval()函数。谢谢!

你不应该尝试无限地缓存消息- bot仍然会得到所有消息反应事件的通知-它只是默认情况下只对缓存的消息进行缓存,你可以通过启用部分事件来侦听它们。

您需要启用Message,ChannelReaction的部分事件-这三个都需要得到反应事件。

import { Client, GatewayIntentBits, Partials } from 'discord.js';
const client = new Client({
intents: [...],
partials: [Partials.Message, Partials.Channel, Partials.Reaction]
})

这将导致MessageReactionEvent在数据不足时运行,并且可能导致错误-检查事件是部分事件(不是所有数据都得到保证)还是完整事件(结构的所有数据都将存在),您可以检查反应上的.partial属性。

但是,这样做将允许您侦听未缓存消息上的Message Reaction Events。

最新更新