В документации упоминается Emote
только для пользовательских эмодзи серверов. Чтобы получить смайлики, вы должны использовать библиотеку смайликов, которая может найти и отфильтровать эмодзи из строки.
Вы можете использовать emoji-java для этого:
String content = message.getContentRaw();
List<String> emojis = EmojiParser.extractEmojis(content);
for (String emoji : emojis) {
message.addReaction(emoji).queue();
}
Чтобы объединить это с пользовательскими эмоциями, вы можете использовать формат упоминания эмоций и юникодов, чтобы найти каждый индекс и упорядочить список.
// Collect emojis
String content = message.getContentRaw();
List<String> emojis = EmojiParser.extractEmojis(content);
List<String> customEmoji = message.getEmotes().stream()
.map((emote) -> emote.getName() + ":" + emote.getId())
.collect(Collectors.toList());
// Create merged list
List<String> merged = new ArrayList<>();
merged.addAll(emojis);
merged.addAll(customEmoji);
// Sort based on index in message to preserve order
merged.sort(Comparator.comparingInt(content::indexOf));
for (String emoji : merged) {
message.addReaction(emoji).queue();
}
Обратите внимание, что дубликаты игнорируются этим, потому что реакции не могут бытьдублируется.