koishi-plugin-memes
Version:
生成 Meme 表情包,支持 MemeGenerator API (v1)、内置模板和自定义 API 接口
93 lines (92 loc) • 2.88 kB
TypeScript
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>;
}