如何添加对嵌入消息 JDA 的反应
Posted
技术标签:
【中文标题】如何添加对嵌入消息 JDA 的反应【英文标题】:How to add reaction to an embed message JDA 【发布时间】:2019-11-07 17:06:35 【问题描述】:当我执行命令 ~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();
我需要将反应添加到嵌入消息中
【问题讨论】:
【参考方案1】:我知道该怎么做。只需要添加这一行
e.getChannel().sendMessage(embedBuilder.build()).complete().addReaction("✔").queue();
【讨论】:
最好使用 queue(...) 并在回调中执行。【参考方案2】:您可以在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
,因为它不会在您的代码中再次使用。构建器通常不是需要关闭/清除的资源,除非您再次使用它们并且不想要以前的设置。
【讨论】:
以上是关于如何添加对嵌入消息 JDA 的反应的主要内容,如果未能解决你的问题,请参考以下文章