我正在尝试向包含某些单词的邮件添加自定义表情。我尝试以各种方式使用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学位,所以我对如何编写和构建代码有很好的了解。

最佳答案

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:

10-08 12:20