UNPKG

koishi-plugin-memes

Version:

生成 Meme 表情包,支持 MemeGenerator API (v1)、内置模板和自定义 API 接口

93 lines (92 loc) 2.88 kB
import { Context, h, Logger } from 'koishi'; /** * 表情包模板信息接口 * @interface MemeInfo */ export interface MemeInfo { id: string; keywords: string[]; tags: string[]; params_type?: { min_images?: number; max_images?: number; min_texts?: number; max_texts?: number; default_texts?: string[]; [key: string]: any; }; [key: string]: any; } /** * 图片获取信息类型 * @typedef {Object} ImageFetchInfo */ export type ImageFetchInfo = { src: string; } | { userId: string; }; /** * 解析后的参数接口 * @interface ResolvedArgs */ export interface ResolvedArgs { imageInfos: ImageFetchInfo[]; texts: string[]; options: Record<string, any>; } /** * 表情包生成器类 * 负责管理模板、解析参数和生成表情包 * @class MemeGenerator */ export declare class MemeGenerator { private ctx; private logger; private apiUrl; private memeCache; private cachePath; /** * 创建表情包生成器实例 * @param {Context} ctx - Koishi 上下文 * @param {Logger} logger - 日志记录器 * @param {string} apiUrl - API服务器地址 */ constructor(ctx: Context, logger: Logger, apiUrl?: string); /** * 刷新模板缓存 * 从API获取最新的模板列表和信息,并更新本地缓存 * @returns {Promise<MemeInfo[]>} 更新后的模板列表 */ refreshCache(): Promise<MemeInfo[]>; /** * 匹配模板关键词 * 根据提供的关键词查找匹配的模板,并按优先级排序 * @param {string} key - 要匹配的关键词 * @returns {MemeInfo[]} 匹配到的模板列表,按匹配优先级排序 */ matchTemplates(key: string): MemeInfo[]; /** * 查找表情包模板 * 先从缓存中查找,如果找不到则尝试从API获取 * @param {string} key - 要查找的模板ID或关键词 * @param {boolean} fuzzy - 是否启用模糊匹配,默认为true * @returns {Promise<MemeInfo | null>} 找到的模板信息,如果未找到则返回null */ findTemplate(key: string, fuzzy?: boolean): Promise<MemeInfo | null>; /** * 获取所有关键词到模板ID的映射 * 用于快速查找和自动补全功能 * @returns {Map<string, string>} 关键词到模板ID的映射表 */ getAllKeywordMappings(): Map<string, string>; /** * 生成表情包 * 解析指令参数,获取所需的图片和文本,然后调用API生成表情包 * @param {any} session - 消息会话对象 * @param {string} key - 模板ID或关键词 * @param {h[]} args - 参数元素列表 * @returns {Promise<h | string>} 生成的表情包图片元素或错误消息 */ generateMeme(session: any, key: string, args: h[]): Promise<any>; }