首页 > 解决方案 > 在触发 DiscordJS 之前获取上一条消息

问题描述

每次我打电话给机器人时,我都试图在正确地发送消息。

现在我正在使用:

client.on('message', message => {
    if (message.content === '$test')) {
      message.channel.messages.fetch({ limit: 2 }).then(messages => {
    lastMessage = messages.last().content
    message.channel.send(lastMessage)

  })
}

如果我发送,机器人会正确发送在触发短语之前发送的消息:

你好

但是,如果我快速发送四条消息:

它发送:

你好

你好

什么时候应该用Welcomethen回复hello

如何content在每次触发机器人之前获得发送的消息,而不是通道中的倒数第二条消息?

标签: discorddiscord.js

解决方案


您不应尝试获取上一条消息,而应按顺序存储消息。

var messages = [];

client.on('message', message => {
    if (message.content === '$test') {
        message.channel.send(messages[messages.length - 1]);
    }
    messages.push(message.content);
})

您正在从频道中获取最新消息,当发送多条消息时,这可能会产生不可预知的结果。

而是按顺序记录每条消息。这将确保所有消息都将与处理一起添加,以防止不和谐消息的加载速度比不和谐机器人应用程序处理它们的速度更快。

这个 DiscordJS Bot 有一个类似的已回答问题 - 如何在频道中的另一条消息之前立即获取消息?


推荐阅读