如何添加多个反应以嵌入 Discord JDA
Posted
技术标签:
【中文标题】如何添加多个反应以嵌入 Discord JDA【英文标题】:How to add multiple reactions to embed Discord JDA 【发布时间】:2020-11-28 10:56:28 【问题描述】:我正在使用 JDA 和以下代码发送不和谐嵌入:
event.getChannel().sendMessage(image.build()).queue();
我可以通过将代码更改为以下代码来添加对消息的单个反应:
event.getChannel().sendMessage(image.build()).complete().addReaction("✔").queue();
如何向此消息添加多个反应?
【问题讨论】:
【参考方案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;
。以上是关于如何添加多个反应以嵌入 Discord JDA的主要内容,如果未能解决你的问题,请参考以下文章
Discord JS //尝试通过响应消息来添加角色和删除角色