koishi-plugin-best-cave
Version:
功能强大、高度可定制的回声洞插件。支持丰富的媒体类型、内容查重、AI分析、人工审核、用户昵称、数据迁移以及本地/S3 双重文件存储后端。
76 lines (75 loc) • 3.9 kB
TypeScript
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>;