如何获取discord-jda(lists)中最后一条消息之前的消息



我正在尝试获取discord-jda中最后一条消息之前的消息。

我已经尝试过了,但它给了我一个IndexOutOfBounds异常。

event.getChannel().getHistory().getRetrievedHistory().get(1)

你能向我解释一下为什么要这样做吗?并给我指明正确的方向,这样我就可以完成我的项目了?非常感谢。

根据getRetrievedHistory():的文档

已使用retrievePast(int)retrieveFuture(int)MessageChannel.getHistoryAround(String, int)方法从此MessageHistory对象从Discord检索到的所有消息的消息列表,从最新到最旧排序。

如果它只是使用MessageChannel.getHistory((或类似方法创建的,那么它将为空您首先必须检索消息

因此您必须使用retrievePast(2)来获得第二条最新消息:

channel.getHistory().retrievePast(2)
.map(messages -> messages.get(1)) // this assumes that the channel has at least 2 messages
.queue(message -> { // success callback
System.out.println("The second most recent message is: " + message.getContentDisplay();
});

请记住,队列是异步的。这意味着这样的代码无法工作:

MessageHistory history = channel.getHistory();
history.retrievePast(2).queue(); // <-- schedules the request, its not done when it returns
List<Message> message = history.getRetrievedHistory(); // <-- this is still empty

相关内容

最新更新