如何从 MessageReactionAddEvent 获取消息

How to fetch Message from MessageReactionAddEvent

目前,我正在尝试制作一个音乐 discord 机器人,它应该会显示当前正在播放的音乐列表。 消息列表有左右箭头表情符号,用户可以使用它在正在播放的音乐列表中移动。

我无法收到此人刚刚添加了反应的消息。

@override
public void onMessageReactionAdd(MessageReactionAddEvent event){
I need to get the reacted message here.
}

我试过 event.getMessage() 但没用。

您可以获取消息所在的频道,然后使用消息的 ID 和 channel.getMessageById():

来获取消息本身
@override
public void onMessageReactionAdd(MessageReactionAddEvent event){
    Message message = event.getChannel().getMessageById(event.getMessageId()).complete();
}

您应该使用 retrieveMessageById in combination with queue 异步检索它:

@override
public void onMessageReactionAdd(MessageReactionAddEvent event) {
    event.getChannel().retrieveMessageById(event.getMessageId()).queue(message -> {
        System.out.println(message.getContentDisplay());
    });
}

这将避免阻止可能会降低机器人速度的代码。您的代码中唯一的区别是您编写了在队列回调中使用消息的代码。通常不鼓励使用 complete,因为它可能会在不可预测的时间范围内锁定您的事件线程。

或者您也可以编辑或删除只有 ID 的消息,这在分页消息场景中很有用: