如何添加对嵌入消息 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 的反应的主要内容,如果未能解决你的问题,请参考以下文章

如何添加多个反应以嵌入 Discord JDA

JDA Discord 向消息添加反应

如何根据反应发送消息,然后根据用户消息发送另一个消息?使用 JDA

如何对命令中的表情做出反应 (Discord JDA)?

不和谐 Java JDA |哪个反应是addet

我的反应角色机器人编写了嵌入消息,但反应没有添加角色