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