UNPKG

koishi-plugin-best-cave

Version:

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

49 lines (48 loc) 1.83 kB
import { Logger } from 'koishi'; import { Config } from './index'; /** * @class FileManager * @description 封装了对文件的存储、读取和删除操作。 * 能根据配置自动选择使用本地文件系统或 AWS S3 作为存储后端。 * 内置 Promise 文件锁,防止本地文件的并发写入冲突。 */ export declare class FileManager { private logger; private resourceDir; private locks; private s3Client?; private s3Bucket?; /** * @constructor * @param baseDir Koishi 应用的基础数据目录 (ctx.baseDir)。 * @param config 插件的配置对象。 * @param logger 日志记录器实例。 */ constructor(baseDir: string, config: Config, logger: Logger); /** * @description 使用文件锁安全地执行异步文件操作,防止并发读写冲突。 * @template T 异步操作的返回类型。 * @param fullPath 需要加锁的文件的完整路径。 * @param operation 要执行的异步函数。 * @returns 异步操作的结果。 */ private withLock; /** * @description 保存文件,自动选择 S3 或本地存储。 * @param fileName 用作 S3 Key 或本地文件名。 * @param data 要写入的 Buffer 数据。 * @returns 保存时使用的文件名。 */ saveFile(fileName: string, data: Buffer): Promise<string>; /** * @description 读取文件,自动从 S3 或本地存储读取。 * @param fileName 要读取的文件名/标识符。 * @returns 文件的 Buffer 数据。 */ readFile(fileName: string): Promise<Buffer>; /** * @description 删除文件,自动从 S3 或本地删除。 * @param fileIdentifier 要删除的文件名/标识符。 */ deleteFile(fileIdentifier: string): Promise<void>; }