获取发送到频道的最后一条消息

Jam*_*ger 7 node.js discord.js

我已经有一个包含特定频道的变量,但是如何获取发送到该频道的最后一条消息?我想让我的机器人只在发送到频道的最后一条消息不是它的时候才执行一个操作。

T. *_*rks 8

如果您已经将特定频道存储在一个变量中,这很容易。您可以MessageManager#fetch()在该特定频道上调用该方法并获取最新消息。

例子:

let channel // <-- your pre-filled channel variable

channel.messages.fetch({ limit: 1 }).then(messages => {
  let lastMessage = messages.first();
  
  if (!lastMessage.author.bot) {
    // The author of the last message wasn't a bot
  }
})
.catch(console.error);
Run Code Online (Sandbox Code Playgroud)

 

但是,如果您没有将完整的频道对象保存在变量中,而只有频道 ID,则需要首先通过执行以下操作来获取正确的频道:

let channel = bot.channels.get("ID of the channel here");
Run Code Online (Sandbox Code Playgroud)


Tyl*_*ler 7

最近我相信他们已经从channel.fetchMessages()变为channel.messages.fetch()

channel.messages.fetch({ limit: 1 }).then(messages => {
  let lastMessage = messages.first();

  // do what you need with lastMessage below

})
.catch(console.error);
Run Code Online (Sandbox Code Playgroud)