UNPKG

koishi-plugin-emojiluna

Version:

Smart emoji management plugin with AI categorization

75 lines (74 loc) 2.82 kB
import { Context, Service } from 'koishi'; import { Config } from './config'; import { AIAnalyzeResult, AICategorizeResult, Category, EmojiAddOptions, EmojiItem, EmojiSearchOptions } from './types'; export declare class EmojiLunaService extends Service { config: Config; private _emojiStorage; private _categories; private _model; constructor(ctx: Context, config: Config); private initializeStorage; initializeAI(): Promise<void>; private parseAIResult; categorizeEmoji(imageBase64: string): Promise<AICategorizeResult | null>; analyzeEmoji(imageBase64: string): Promise<AIAnalyzeResult | null>; addEmoji(options: EmojiAddOptions, imageData: Buffer, aiAnalysis?: boolean): Promise<EmojiItem>; addEmojis(emojis: { options: EmojiAddOptions; buffer: Buffer; }[], aiAnalysis: boolean): Promise<EmojiItem[]>; getEmojiByName(name: string): Promise<EmojiItem | null>; getEmojisByName(name: string): Promise<EmojiItem[]>; categorizeExistingEmojis(): Promise<{ success: number; failed: number; }>; getEmojiList(options?: EmojiSearchOptions): Promise<EmojiItem[]>; searchEmoji(keyword: string): Promise<EmojiItem[]>; getEmojiById(id: string): Promise<EmojiItem | null>; deleteEmoji(id: string): Promise<boolean>; deleteAllEmojis(): Promise<boolean>; addCategory(name: string, description?: string): Promise<Category>; getCategories(): Promise<Category[]>; getCategoryByName(name: string): Promise<Category | null>; deleteCategory(id: string): Promise<boolean>; getAllTags(): Promise<string[]>; updateEmojiTags(id: string, tags: string[]): Promise<boolean>; updateEmojiCategory(id: string, category: string): Promise<boolean>; private loadEmojis; private loadCategories; getEmojiCount(): number; getCategoryCount(): number; private updateCategoryEmojiCount; static inject: string[]; } declare module 'koishi' { interface Context { emojiluna: EmojiLunaService; } interface Tables { emojiluna_emojis: { id: string; name: string; category: string; path: string; size: number; created_at: Date; tags: string; }; emojiluna_categories: { id: string; name: string; description: string; emoji_count: number; created_at: Date; }; } interface Events { 'emojiluna/emoji-added': (emoji: EmojiItem) => void; 'emojiluna/emoji-deleted': (id: string) => void; 'emojiluna/emoji-updated': (emoji: EmojiItem) => void; 'emojiluna/category-added': (category: Category) => void; 'emojiluna/category-deleted': (id: string) => void; } }