如何添加多个反应以嵌入 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");