我正在尝试向包含某些单词的邮件添加自定义表情。我尝试以各种方式使用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(UTF32
和UTF16
),而表仅提供了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: