koishi-plugin-best-cave
Version:
功能强大、高度可定制的回声洞。支持丰富的媒体类型、内容查重、人工审核、用户昵称、数据迁移以及本地/S3 双重文件存储后端。
74 lines (73 loc) • 3.93 kB
TypeScript
import { Context, h, Logger, Session } from 'koishi';
import { CaveObject, Config, StoredElement } from './index';
import { FileManager } from './FileManager';
import { HashManager, CaveHashObject } from './HashManager';
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 清理数据库中标记为 'delete' 状态的回声洞及其关联文件和哈希。
* @param ctx Koishi 上下文。
* @param fileManager 文件管理器实例。
* @param logger 日志记录器实例。
* @param reusableIds 可复用 ID 的内存缓存。
*/
export declare function cleanupPendingDeletions(ctx: Context, fileManager: FileManager, logger: Logger, reusableIds: Set<number>): Promise<void>;
/**
* @description 根据配置和会话,生成数据库查询的范围条件。
* @param session 当前会话。
* @param config 插件配置。
* @param includeStatus 是否包含 status: 'active' 条件,默认为 true。
* @returns 数据库查询条件对象。
*/
export declare function getScopeQuery(session: Session, config: Config, includeStatus?: boolean): object;
/**
* @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 日志实例。
* @returns 包含数据库元素和待保存媒体列表的对象。
*/
export declare function processMessageElements(sourceElements: h[], newId: number, session: Session, config: Config, logger: Logger): Promise<{
finalElementsForDb: StoredElement[];
mediaToSave: {
sourceUrl: string;
fileName: string;
}[];
}>;
/**
* @description 异步处理文件上传、查重和状态更新的后台任务。
* @param ctx - Koishi 上下文。
* @param config - 插件配置。
* @param fileManager - FileManager 实例,用于保存文件。
* @param logger - 日志记录器实例。
* @param reviewManager - ReviewManager 实例,用于提交审核。
* @param cave - 刚刚在数据库中创建的 `preload` 状态的回声洞对象。
* @param mediaToSave - 需要下载和处理的媒体文件列表。
* @param reusableIds - 可复用 ID 的内存缓存。
* @param session - 触发此操作的用户会话,用于发送反馈。
* @param hashManager - HashManager 实例,如果启用则用于哈希计算和比较。
* @param textHashesToStore - 已预先计算好的、待存入数据库的文本哈希对象数组。
*/
export declare function handleFileUploads(ctx: Context, config: Config, fileManager: FileManager, logger: Logger, reviewManager: PendManager, cave: CaveObject, mediaToToSave: {
sourceUrl: string;
fileName: string;
}[], reusableIds: Set<number>, session: Session, hashManager: HashManager, textHashesToStore: Omit<CaveHashObject, 'cave'>[]): Promise<void>;