koishi-plugin-emojiluna
Version:
Smart emoji management plugin with AI categorization
77 lines (76 loc) • 2.39 kB
TypeScript
export interface EmojiItem {
id: string;
name: string;
category: string;
path: string;
size: number;
createdAt: Date;
tags: string[];
}
export interface Category {
id: string;
name: string;
description?: string;
emojiCount: number;
createdAt: Date;
}
export interface EmojiSearchOptions {
keyword?: string;
category?: string;
tags?: string[];
limit?: number;
offset?: number;
}
export interface EmojiAddOptions {
name: string;
category?: string;
tags?: string[];
description?: string;
imageData?: string;
}
export interface AICategorizeResult {
category: string;
confidence: number;
reason: string;
newCategory?: string;
}
export interface AIAnalyzeResult {
name: string;
category: string;
tags: string[];
description: string;
newCategory?: string;
}
declare module '@koishijs/console' {
interface Events {
'emojiluna/getEmojiList': (options?: EmojiSearchOptions) => Promise<EmojiItem[]>;
'emojiluna/searchEmoji': (keyword: string) => Promise<EmojiItem[]>;
'emojiluna/getCategories': () => Promise<Category[]>;
'emojiluna/getAllTags': () => Promise<string[]>;
'emojiluna/updateEmojiTags': (id: string, tags: string[]) => Promise<boolean>;
'emojiluna/updateEmojiCategory': (id: string, category: string) => Promise<boolean>;
'emojiluna/deleteEmoji': (id: string) => Promise<boolean>;
'emojiluna/addCategory': (name: string, description: string) => Promise<Category>;
'emojiluna/deleteCategory': (id: string) => Promise<boolean>;
'emojiluna/addEmoji': (emojiData: EmojiAddOptions) => Promise<EmojiItem>;
'emojiluna/getBaseUrl': () => Promise<string>;
'emojiluna/analyzeEmoji': (emojiId: string) => Promise<{
success: boolean;
updates?: string[];
result?: AIAnalyzeResult;
oldData?: {
name: string;
category: string;
tags: string[];
};
newData?: {
name: string;
category: string;
tags: string[];
description: string;
};
message?: string;
}>;
'emojiluna/addEmojis': (emojis: EmojiAddOptions[], aiAnalysis: boolean) => Promise<EmojiItem[]>;
}
}