【问题标题】:在触发 DiscordJS 之前获取上一条消息
【发布时间】:2021-05-22 05:56:16
【问题描述】:

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

我现在正在使用:

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

  })
}

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

  • 你好

  • $测试

你好

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

  • 欢迎!

  • $测试

  • 你好

  • $测试

它发送:

你好

你好

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

如何在每次触发 bot 之前获取消息的 content,而不是频道中倒数第二条消息?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

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

    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?

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2021-05-22
      • 2021-05-05
      • 2021-12-29
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2020-02-18
      相关资源
      最近更新 更多