我正在使用JDA和以下代码发送不和谐的嵌入内容:
event.getChannel().sendMessage(image.build()).queue();
我可以通过将代码更改为以下内容来对消息添加单个反应:
event.getChannel().sendMessage(image.build()).complete().addReaction("✔").queue();
如何向此消息添加多个反应?
答案 0 :(得分:1)
您可以多次使用Message
返回的complete()
对象。
因此,您可以一次又一次地发送反应:
Message msg=event.getChannel().sendMessage(image.build()).complete();
msg.addReaction("✔").queue();
msg.addReaction("+1").queue();
这使用完成,但是将等待直到消息发送完毕。在这段时间内没有侦听器被执行。
这意味着您的漫游器仅在消息发送后等待并且其他用户执行其他命令。
要解决此问题,您可以将.queue()
与lambda结合使用:
event.getChannel().sendMessage(image.build()).queue(msg->{
msg.addReaction("✔").queue();
msg.addReaction("+1").queue();
});
如果要多次执行此操作,可以为此编写一个方法:
public void sendMessageWithReactions(MessageChannel channel,MessageEmbed embed, String... reactions){
channel.sendMessage(embed).queue(msg->{
for(String reaction:reactions){
msg.addReaction(reaction).queue();
}
});
}
您可以这样调用此方法:sendMessageWithReactions(event.getChannel(),image.build(),"✔","+1");