Java Приложение JDA Discord - Невозможно добавить реакцию на полученные сообщения - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь добавить персонифицированную эмоцию к сообщениям, которые содержат определенные слова. Я пытался использовать методы addReaction (Emote) и addReaction (String) всеми возможными способами. Я просто не могу заставить бота добавлять реакцию на сообщение (оно также не работает с Unicode Emojis).

Я использовал следующие методы ниже

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

Это просто кажется не работать никак. Может кто-нибудь направить меня в правильном направлении, пожалуйста?

Бот выполняет множество других функций, которые работают нормально. У меня есть степень CS в Java, поэтому у меня есть хорошее представление о том, как писать и структурировать код.

1 Ответ

1 голос
/ 27 марта 2020

JDA использует RestActions, они в основном позволяют ставить все действия в Discord, и без них ваши команды не будут отправляться в Discord. Ваш код не работает, потому что вы забыли включить RestAction.

Что касается ваших попыток добавить реакцию, прочитайте соответствующие документы JDA , чтобы получить представление о том, что вам следует введите параметры.

Короче говоря, вы можете использовать экземпляр Emote или emote Unicode . Есть несколько способов получить Unicode у смайлика, например, Таблица Unicode Emoji .

Вы также можете использовать бота, находящегося на официальном JDA Discord Server : отправив следующее сообщение: %emote EMOJI (замените EMOJI фактическим смайликом), на которое ответит юникод Emote.

Обратите внимание, что бот предоставляет два разных UTF (UTF32 и UTF16) в то время как в таблице указано только UTF32, более рекомендуется использовать UTF16. Пример:: smile: emote - \u1F604 UTF32 [\uD83D\uDE04] UTF16.

Затем просто вставьте Unicode в виде строки в качестве параметра addReaction. Убедитесь, что есть только один \, а не два, поскольку в некоторых случаях среда IDE может автоматически добавлять escape-символ. Примеры правильного и неправильного использования:

ПРАВИЛЬНО - 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:

...