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();
}
请注意,重复项将被忽略,因为反应无法重复。
添加回答
举报