当前,我正在尝试制作一个音乐不和谐机器人,它应该显示当前正在播放的音乐列表。 消息列表中有一个左右箭头表情符号,人们可以用它来在播放的音乐列表中移动。
我无法获得此人刚刚对其做出反应的消息。
@override
public void onMessageReactionAdd(MessageReactionAddEvent event){
I need to get the reacted message here.
}
我尝试做event.getMessage()
,但是不起作用。
答案 0 :(得分:0)
您可以获取消息所在的频道,然后使用带有channel.getMessageById()
的消息ID来获取消息本身:
@override
public void onMessageReactionAdd(MessageReactionAddEvent event){
Message message = event.getChannel().getMessageById(event.getMessageId()).complete();
}
答案 1 :(得分:0)
您应该结合使用retrieveMessageById
和queue
来异步检索它:
@override
public void onMessageReactionAdd(MessageReactionAddEvent event) {
event.getChannel().retrieveMessageById(event.getMessageId()).queue(message -> {
System.out.println(message.getContentDisplay());
});
}
这将避免阻止可能会使您的机器人慢下来的代码。您代码中的唯一区别是您编写了在队列的回调中使用消息的代码。通常不建议使用complete
,因为它可能会在不可预测的时间范围内锁定事件线程。
或者,您也可以仅使用ID(在分页消息场景中很有用)编辑或删除消息: