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

Java JDA Discord app - Can't add reaction to received messages

我正在尝试向包含特定字词的消息添加自定义表情。我已尝试以我能找到的所有方式使用 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 instance or an emote Unicode. There are a few ways to retrieve an emote's Unicode, for instance, Emoji Unicode Table

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

注意bot提供了两种不同的UTF(UTF32UTF16)而table只提供了UTF32,更推荐使用UTF16。例子: :smile: 表情 - \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")方法。 请注意,此 returns 列表,您必须使用 .get 方法从列表中获取特定的表情实例。然后就可以使用addReaction(Emote emote)方法了。