我正在尝试向包含某些单词的邮件添加自定义表情。我尝试以各种方式使用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学位,所以我对如何编写和构建代码有一个很好的了解。
答案 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(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:
要使用Emote
,请在表情所在的行会上使用guild.getEmotesByName("name")
方法。
请注意,这将返回一个列表,您必须使用.get
方法将特定的emote实例从列表中移出。然后,您可以使用addReaction(Emote emote)
方法。