【问题标题】:Get last message from text channel with discord.js使用 discord.js 从文本通道获取最后一条消息
【发布时间】:2021-05-04 04:14:47
【问题描述】:

我觉得我对这个主题的所有研究只会让我找到过时的解决方案。

使用我的 Discord.js 机器人,我有一个命令。为了让它工作,我需要在命令之前获取通道中的最后一条消息。我正在为所有这些获取、部分和缓存等而苦苦挣扎。

有时,当我在我的机器人启动后立即发布消息并在其上使用命令时它会起作用,但如果我重新启动我的机器人,它似乎会收到错误消息。另外,超过 14 天的消息怎么办?

我无法真正提供代码,因为它只有一行,例如:

const message = msg.channel.messages. ...

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    您可能想查看this 并使用messages#fetch 来获取非缓存消息!

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      message.channel.messages 返回一个发送到该频道的manager of the messages。要获得最后一个,您可以将其fetch() 方法与query option {limit: 1} 结合使用。这意味着,您可以使用message.channel.messages.fetch({ limit: 1 }) 获取频道中的最后一条消息。但是,如果您在发送命令后运行此提取,则最后一条消息将是带有该命令的消息。

      要解决这个问题,您可以通过增加限制来获取频道中的最后两条消息:message.channel.messages.fetch({ limit: 2 })。获取的集合将包含命令(用于获取最后一条消息)和之前的消息。

      Discord 集合有一个 .last() 方法来获取最后一个值,因此您现在可以使用以下方法获取最后一条消息:

      const messages = await message.channel.messages.fetch({ limit: 2 });
      const lastMessage = messages.last();
      
      console.log(lastMessage.content);
      

      PS.: 提取超过 14 天的消息没有问题。

      【讨论】:

        猜你喜欢
        • 2021-01-19
        • 2020-10-02
        • 2019-05-10
        • 2021-07-27
        • 2017-05-24
        • 2016-10-12
        • 2016-01-15
        • 2021-10-20
        • 1970-01-01
        相关资源
        最近更新 更多