如何在 discordJS 中获取特定用户的最后 N 条消息?

How to get last N messages by a particular user in discordJS?

我正在尝试删除特定用户发送的消息。

例如。 !purge 5 @someone

要获取由特定用户 ID 发送的 N 条消息,我正在使用它。

const getAllMessageByUserId = async (message, messageCount) => {
  const userId = getUserId(message);
  return await message.channel.messages.fetch({ limit: 100 }).then(async (messages) => {
    const filteredMessages = await messages.filter((m) => m.author.id === userId);
    if (filteredMessages.size <= messageCount) {
      console.log('User does not have that many messages to be deleted?');
      return;
    }
    const data = [...filteredMessages];
    const messagesToBeDeletedByCount = data.slice(Math.max(data.length - messageCount), 1);
    console.log(messagesToBeDeletedByCount);
    console.log(typeof messagesToBeDeletedByCount);
    return messagesToBeDeletedByCount;
  });
};

控制台:

[]
object

data 将所有消息存储在一个数组中,我已经确认之前使用控制台。

但是当我尝试 splice 时它不起作用并给出一个空数组。

集合有一个 .last() 方法,调用过滤消息集合的最后 N 个方法。

filteredMessages.last(N);

More on Collections