Java JDA Discord应用-无法对收到的消息添加响应

时间:2020-03-27 15:18:02

标签: java discord discord-jda

我正在尝试向包含某些单词的邮件添加自定义表情。我尝试以各种方式使用addReaction(Emote)和addReaction(String)方法。我只是无法让该机器人在邮件中添加响应(它也无法与unicode表情符号一起使用)。

我在下面使用了以下方法

event.getMessage().addReaction("name:XXXXXXXXXXXXXXXX");
event.getMessage().addReaction("name");
event.getMessage().addReaction("XXXXXXXXXXXXXXXX");
event.getMessage().addReaction(Emote emote);

它似乎没有任何作用。有人可以指出我正确的方向吗?

该机器人还执行了许多其他正常工作的功能。我确实有Java的CS学位,所以我对如何编写和构建代码有一个很好的了解。

1 个答案:

答案 0 :(得分:2)

JDA使用RestActions,它们基本上允许将所有操作排队到Discord中,没有它们,您的命令将不会发送到Discord。您的代码无效,因为您忘记了包括RestAction。

关于尝试添加反应的信息,请阅读relevant JDA Docs,以了解应该在参数中键入的内容。

简而言之,您可以使用Emote实例,也可以使用emote Unicode。有几种方法可以检索表情符号的Unicode,例如Emoji Unicode Table

您还可以通过发送下一条消息来使用位于官方JDA Discord Server的漫游器: %emote EMOJI(将EMOJI替换为实际的表情符号),将使用表情符号的unicode进行回复。

请注意,该漫游器提供了两种不同的UTF(UTF32UTF16),而表格仅提供了UTF32,建议使用UTF16。例: :smile:emote-\u1F604 UTF32 [\uD83D\uDE04] UTF16

然后,只需将Unicode作为字符串粘贴为addReaction的参数。确保只有一个\而不是两个,因为在某些情况下IDE可以自动添加转义字符。正确和不正确用法的示例:

正确-addReaction("\uD83D\uDE04").queue(); // reacts with :smile:

错误-addReaction("\\uD83D\\uDE04").queue(); // reacts with :smile:

正确-addReaction("U+1F604").queue(); //reacts with :smile:

正确-addReaction("\u1F604").queue(); // reacts with :smile:

要使用Emote,请在表情所在的行会上使用guild.getEmotesByName("name")方法。 请注意,这将返回一个列表,您必须使用.get方法将特定的emote实例从列表中移出。然后,您可以使用addReaction(Emote emote)方法。