如何添加对嵌入消息 JDA 的反应
How to add reaction to an embed message JDA
当我执行命令 ~verify 时,我正在尝试发送和嵌入消息,然后它发送嵌入消息,但我找不到如何添加反应。
我已经嵌入消息并发送了它,但可以添加反应
import Main.Bot;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.MessageBuilder;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import java.awt.*;
public class Verify extends ListenerAdapter {
@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent e){
if(e.getAuthor().isBot()) return;
if(e.getMessage().getContentRaw().equalsIgnoreCase(Bot.prefix+"verify")){
EmbedBuilder embedBuilder = new EmbedBuilder();
embedBuilder.setColor(Color.red);
embedBuilder.setTitle("Verify yourself!");
embedBuilder.addField("How?","Press the ✔ reaction to verify",false);
embedBuilder.setFooter("Created by SlayZBro#3501",e.getGuild().getIconUrl());
e.getChannel().sendTyping().queue();
e.getChannel().sendMessage(embedBuilder.build()).queue();
embedBuilder.clear();
}
}
}
我需要在嵌入消息中添加反应
我知道怎么做了。只需要添加这一行
e.getChannel().sendMessage(embedBuilder.build()).complete().addReaction("✔").queue();
您可以在 queue()
的回调中访问已发送的消息并在那里添加反应:
channel.sendMessage(embed).queue(message -> message.addReaction(reaction).queue());
要添加多个问题,您可以使用多行 lambda:
channel.sendMessage(embed).queue(message -> {
message.addReaction(reaction1).queue();
message.addReaction(reaction2).queue();
message.addReaction(reaction3).queue();
});
也没有理由清除 EmbedBuilder
因为它不会在您的代码中再次使用。构建器通常不是需要closed/cleared的资源,除非你再次使用它们并且不想要以前的设置。
当我执行命令 ~verify 时,我正在尝试发送和嵌入消息,然后它发送嵌入消息,但我找不到如何添加反应。
我已经嵌入消息并发送了它,但可以添加反应
import Main.Bot;
import net.dv8tion.jda.core.EmbedBuilder;
import net.dv8tion.jda.core.MessageBuilder;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
import java.awt.*;
public class Verify extends ListenerAdapter {
@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent e){
if(e.getAuthor().isBot()) return;
if(e.getMessage().getContentRaw().equalsIgnoreCase(Bot.prefix+"verify")){
EmbedBuilder embedBuilder = new EmbedBuilder();
embedBuilder.setColor(Color.red);
embedBuilder.setTitle("Verify yourself!");
embedBuilder.addField("How?","Press the ✔ reaction to verify",false);
embedBuilder.setFooter("Created by SlayZBro#3501",e.getGuild().getIconUrl());
e.getChannel().sendTyping().queue();
e.getChannel().sendMessage(embedBuilder.build()).queue();
embedBuilder.clear();
}
}
}
我需要在嵌入消息中添加反应
我知道怎么做了。只需要添加这一行
e.getChannel().sendMessage(embedBuilder.build()).complete().addReaction("✔").queue();
您可以在 queue()
的回调中访问已发送的消息并在那里添加反应:
channel.sendMessage(embed).queue(message -> message.addReaction(reaction).queue());
要添加多个问题,您可以使用多行 lambda:
channel.sendMessage(embed).queue(message -> {
message.addReaction(reaction1).queue();
message.addReaction(reaction2).queue();
message.addReaction(reaction3).queue();
});
也没有理由清除 EmbedBuilder
因为它不会在您的代码中再次使用。构建器通常不是需要closed/cleared的资源,除非你再次使用它们并且不想要以前的设置。