UNPKG

koishi-plugin-best-cave

Version:

功能强大、高度可定制的回声洞插件。支持丰富的媒体类型、内容查重、AI分析、人工审核、用户昵称、数据迁移以及本地/S3 双重文件存储后端。

76 lines (75 loc) 3.9 kB
import { Context, h, Logger, Session } from 'koishi'; import { CaveObject, Config, StoredElement } from './index'; import { FileManager } from './FileManager'; import { HashManager } from './HashManager'; import { AIManager } from './AIManager'; import { PendManager } from './PendManager'; /** * @description 构建一条用于发送的完整回声洞消息,处理不同存储后端的资源链接。 * @param cave 回声洞对象。 * @param config 插件配置。 * @param fileManager 文件管理器实例。 * @param logger 日志记录器实例。 * @param platform 目标平台名称 (e.g., 'onebot')。 * @param prefix 可选的消息前缀 (e.g., '已删除', '待审核')。 * @returns 包含多条消息的数组,每条消息是一个 (string | h)[] 数组。 */ export declare function buildCaveMessage(cave: CaveObject, config: Config, fileManager: FileManager, logger: Logger, platform?: string, prefix?: string): Promise<(string | h)[][]>; /** * @description 获取下一个可用的回声洞 ID,采用“回收ID > 扫描空缺 > 最大ID+1”策略。 * @param ctx Koishi 上下文。 * @param reusableIds 可复用 ID 的内存缓存。 * @returns 可用的新 ID。 */ export declare function getNextCaveId(ctx: Context, reusableIds: Set<number>): Promise<number>; /** * @description 解析消息元素,分离出文本和待下载的媒体文件。 * @param sourceElements 原始的 Koishi 消息元素数组。 * @param newId 这条回声洞的新 ID。 * @param session 触发操作的会话。 * @param config 插件配置。 * @param logger 日志实例。 * @param creationTime 统一的创建时间戳,用于生成文件名。 * @returns 包含数据库元素和待保存媒体列表的对象。 */ export declare function processMessageElements(sourceElements: h[], newId: number, session: Session, creationTime: Date): Promise<{ finalElementsForDb: StoredElement[]; mediaToSave: { sourceUrl: string; fileName: string; }[]; }>; /** * @description 根据提供的配对关系,将项目 ID 进行聚类。 * @param pairs 一个由 [number, number] 组成的数组,代表需要合并的项目 ID 配对。 * @returns 返回一个二维数组,每个子数组代表一个大小大于1的聚类。 */ export declare function clusterItemsFromPairs(pairs: [number, number][]): number[][]; /** * @description 通用的 LSH (局部敏感哈希) 候选对生成器。 * @param items 要处理的项目数组。 * @param getBucketInfo 一个函数,接收单个项目,并返回其唯一 ID 和一个桶键数组。 * @returns 一个 Set,包含所有候选对的字符串键 (e.g., "123-456")。 */ export declare function generateFromLSH<T>(items: T[], getBucketInfo: (item: T) => { id: number; keys: string[]; }): Set<string>; /** * @description 处理新回声洞创建后的后续逻辑,包括媒体下载、查重、AI分析、哈希存储和状态更新。 * @param ctx Koishi 上下文。 * @param config 插件配置。 * @param fileManager 文件管理器实例。 * @param logger 日志记录器实例。 * @param reusableIds 可复用 ID 的内存缓存。 * @param newCave 已初步创建(status: 'preload')的回声洞对象。 * @param mediaToSave 待保存的媒体文件列表。 * @param session 触发操作的会话。 * @param hashManager 哈希管理器实例(如果启用)。 * @param aiManager AI管理器实例(如果启用)。 * @param reviewManager 审核管理器实例(如果启用)。 */ export declare function processNewCave(ctx: Context, config: Config, fileManager: FileManager, logger: Logger, reusableIds: Set<number>, newCave: CaveObject, session: Session, mediaToSave: { sourceUrl: string; fileName: string; }[], hashManager: HashManager | null, aiManager: AIManager | null, reviewManager: PendManager | null): Promise<void>;