在触发 DiscordJS 之前获取上一条消息

时间:2021-02-19 08:39:57

标签: discord discord.js

我试图在每次调用机器人之前立即发送消息。

现在我正在使用:

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

  })
}

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

  • 你好

  • $test

<块引用>

你好

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

  • 欢迎!

  • $test

  • 你好

  • $test

它发送:

<块引用>

你好

<块引用>

你好

什么时候应该回复 Welcome 然后是 hello

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

1 个答案:

答案 0 :(得分:0)

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

var messages = [];

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

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

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

有一个与此类似的回答问题 DiscordJS Bot - How to get the message immediately before another message in a channel?