1 回答

TA貢獻1802條經驗 獲得超10個贊
正如文檔提到的,Emote
僅適用于服務器的自定義表情符號。要檢索表情符號,您必須使用表情符號庫,它可以從字符串中查找并過濾掉表情符號。
您可以使用emoji-java (在我的fork中更新)來執行此操作:
String content = message.getContentRaw();
List<String> emojis = EmojiParser.extractEmojis(content);
for (String emoji : emojis) {
? ? message.addReaction(emoji).queue();
}
要將其與自定義表情結合起來,您可以使用表情的提及格式和 unicode 來查找每個索引并對列表進行排序。
// 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();
}
請注意,重復項將被忽略,因為反應無法重復。
添加回答
舉報