UNPKG

koishi-plugin-best-cave

Version:

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

74 lines (73 loc) 3.93 kB
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>;