UNPKG

icqq

Version:

QQ protocol for NodeJS!

135 lines (134 loc) 4.48 kB
/// <reference types="node" /> import { FileElem } from "./message"; type Client = import("./client").Client; /** 群文件/目录共通属性 */ export interface GfsBaseStat { /** 文件/目录的id (目录以/开头) */ fid: string; /** 父目录id */ pid: string; /** 文件/目录名 */ name: string; /** 创建该文件/目录的群员账号 */ user_id: number; /** 创建时间 */ create_time: number; /** 最近修改时间 */ modify_time: number; /** 是否为目录 */ is_dir: boolean; } /** 文件属性 */ export interface GfsFileStat extends GfsBaseStat { /** 文件大小 */ size: number; busid: number; md5: string; sha1: string; /** 文件存在时间 */ duration: number; /** 下载次数 */ download_times: number; } /** 目录属性 */ export interface GfsDirStat extends GfsBaseStat { /** 目录包含的文件数 */ file_count: number; } /** * 群文件系统 * `fid`表示一个文件或目录的id,`pid`表示它所在目录的id * 根目录的id为"/" * 只能在根目录下创建目录 * 删除一个目录会删除下面的全部文件 */ export declare class Gfs { private readonly c; readonly gid: number; /** `this.gid`的别名 */ get group_id(): number; /** 返回所在群的实例 */ get group(): import("./group").Group; /** 返回所属的客户端对象 */ get client(): import("./client").Client; constructor(c: Client, gid: number); /** 获取使用空间和文件数 */ df(): Promise<{ /** 总空间 */ total: number; /** 已使用的空间 */ used: number; /** 剩余空间 */ free: number; } & { /** 文件数 */ file_count: number; /** 文件数量上限 */ max_file_count: number; }>; private _resolve; /** * 获取文件或目录属性 * @param fid 目标文件id */ stat(fid: string): Promise<GfsFileStat | GfsDirStat>; /** * 列出`pid`目录下的所有文件和目录 * @param pid 目标目录,默认为根目录,即`"/"` * @param start @todo 未知参数 * @param limit 文件/目录上限,超过此上限就停止获取,默认`100` * @returns 文件和目录列表 */ dir(pid?: string, start?: number, limit?: number): Promise<(GfsFileStat | GfsDirStat)[]>; /** {@link dir} 的别名 */ ls(pid?: string, start?: number, limit?: number): Promise<(GfsFileStat | GfsDirStat)[]>; /** 创建目录(只能在根目录下创建) */ mkdir(name: string): Promise<GfsDirStat>; /** 删除文件/目录(删除目录会删除下面的所有文件) */ rm(fid: string): Promise<void>; /** * 重命名文件/目录 * @param fid 文件id * @param name 新命名 */ rename(fid: string, name: string): Promise<void>; /** * 移动文件 * @param fid 要移动的文件id * @param pid 目标目录id */ mv(fid: string, pid: string): Promise<void>; private _feed; /** * 上传一个文件 * @param file `string`表示从该本地文件路径上传,`Buffer`表示直接上传这段内容 * @param pid 上传的目标目录id,默认根目录 * @param name 上传的文件名,`file`为`Buffer`时,若留空则自动以md5命名 * @param callback 监控上传进度的回调函数,拥有一个"百分比进度"的参数 * @returns 上传的文件属性 */ upload(file: string | Buffer | Uint8Array, pid?: string, name?: string, callback?: (percentage: string) => void): Promise<GfsFileStat>; /** * 将文件转发到当前群 * @param stat 另一个群中的文件属性 * @param pid 转发的目标目录,默认根目录 * @param name 转发后的文件名,默认不变 * @returns 转发的文件在当前群的属性 */ forward(stat: GfsFileStat, pid?: string, name?: string): Promise<GfsFileStat>; /** * 将离线(私聊)文件转发到当前群 * @param fid 私聊文件fid * @param name 转发后的文件名,默认不变 * @returns 转发的文件在当前群的属性 */ forwardOfflineFile(fid: string, name?: string): Promise<GfsFileStat>; /** * 获取文件下载地址 * @param fid 文件id */ download(fid: string): Promise<Omit<FileElem, "type"> & { url: string; }>; } export {};