如何添加多个反应以嵌入 Discord JDA
How to add multiple reactions to embed Discord JDA
我正在使用 JDA 和以下代码发送不和谐嵌入:
event.getChannel().sendMessage(image.build()).queue();
我可以通过将代码更改为以下内容来向消息添加单一反应:
event.getChannel().sendMessage(image.build()).complete().addReaction("✔").queue();
如何向这条消息添加多个反应?
您可以多次使用 complete()
返回的 Message
对象。
所以,你可以一个接一个地发送反应:
Message msg=event.getChannel().sendMessage(image.build()).complete();
msg.addReaction("✔").queue();
msg.addReaction("+1").queue();
然而,这使用完成,并且将等到消息被发送。在此期间没有执行任何侦听器。
这意味着您的 bot 等待并且其他命令(由其他用户执行)仅在消息发送后才执行。
为了解决这个问题,您可以使用 .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");
我正在使用 JDA 和以下代码发送不和谐嵌入:
event.getChannel().sendMessage(image.build()).queue();
我可以通过将代码更改为以下内容来向消息添加单一反应:
event.getChannel().sendMessage(image.build()).complete().addReaction("✔").queue();
如何向这条消息添加多个反应?
您可以多次使用 complete()
返回的 Message
对象。
所以,你可以一个接一个地发送反应:
Message msg=event.getChannel().sendMessage(image.build()).complete();
msg.addReaction("✔").queue();
msg.addReaction("+1").queue();
然而,这使用完成,并且将等到消息被发送。在此期间没有执行任何侦听器。
这意味着您的 bot 等待并且其他命令(由其他用户执行)仅在消息发送后才执行。
为了解决这个问题,您可以使用 .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");