从客户端Discord.js获取消息

时间:2020-04-11 03:18:13

标签: javascript node.js discord discord.js

我已经搜索了这个问题,而我发现的数百个答复仅是在消息事件内讲的 例如

client.on('message', message => {
   message.id // <<< I don't think this is the right code for it but that's not the point I'm making so....
});

但是,我需要通过ID来访问消息,而不使用message事件。具体来说,我需要在messageReactionAdd事件中,但是我宁愿学习如何从客户端获取它,因为过去我也需要做同样的事情(但是我不得不重新设计我的原始计划)。 这是我尝试使用的代码,但无法正常工作:

client.channels.cache.get("Channel_Id").messages.fetch("Message_Id");

在另一个项目中,我被引导到该代码字符串,在该项目中,我在频道中找到了第一条消息:

client.channels.cache.get("Channel_Id").messages.fetch({ limit: 1 }).then(messages => {var lastMessage = messages.first();});

这甚至可能吗?我发现有点奇怪的是,没有一种简单的方法可以直接定位邮件而不跳过一大堆(例如client.messages.fetch(“ Message_Id”))。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

获取的第一个版本应该可以工作。但是请注意,对于您的漫游器缓存的消息,messageReactionAdd事件仅 发出。缓存的消息是您启动漫游器后收到的消息,默认情况下,每个频道最多200条消息。

如果您只想获取一条特定的消息以接收响应事件,则此消息应该起作用,只要它位于不必担心前面提到的限制的频道中即可。

然而,当您使用v12时,有一项功能可以接收称为Partials的未缓存结构的事件(here是其指南页面)。如果启用了局部消息,则可以接收消息事件,而无需事先提取消息。只需记住,您只能以这种方式接收ID,但是可以根据需要进行提取。