koishi-plugin-emojiluna
Version:
Smart emoji management plugin with AI categorization
75 lines (74 loc) • 2.82 kB
TypeScript
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;
}
}