【问题标题】:How to add multiple reactions to embed Discord JDA如何添加多个反应以嵌入 Discord JDA
【发布时间】:2020-11-28 10:56:28
【问题描述】:

我正在使用 JDA 和以下代码发送不和谐嵌入:

event.getChannel().sendMessage(image.build()).queue();

我可以通过将代码更改为以下代码来添加对消息的单个反应:

event.getChannel().sendMessage(image.build()).complete().addReaction("✔").queue();

如何向此消息添加多个反应?

【问题讨论】:

    标签: java discord discord-jda


    【解决方案1】:

    您可以多次使用complete()返回的Message对象。

    所以,你可以一个接一个地发送反应:

    Message msg=event.getChannel().sendMessage(image.build()).complete();
    msg.addReaction("✔").queue();
    msg.addReaction("+1").queue();
    

    然而,这使用完成,并且会等到消息发送完毕。在此期间不执行任何侦听器。

    这意味着您的机器人等待和其他命令(由其他用户)仅在消息发送后执行。

    为了解决这个问题,您可以使用 .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");

    【讨论】:

    • 谢谢,我正在尝试实施您的任一解决方案,但遇到了问题。对于第一个解决方案,我得到一个无法解析符号“消息”,而对于第二个解决方案,第 5 级不支持 lambda 表达式。有什么想法吗?
    • 我修复了 lambda 问题并让它正常工作,谢谢!
    • 您需要导入Message。在你的类声明之前添加import net.dv8tion.jda.api.entities.Message;
    猜你喜欢
    • 2020-04-12
    • 2021-03-11
    • 2019-11-07
    • 2020-01-21
    • 2021-06-02
    • 1970-01-01
    • 2021-06-25
    • 2022-11-23
    • 2020-11-22
    相关资源
    最近更新 更多