mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 07:01:16 +00:00
Introduced a centralized examples.ts file providing payload and return examples for all actions. Updated numerous action classes to include actionDescription, actionTags, payloadExample, and returnExample fields, improving API documentation and discoverability.
73 lines
2.6 KiB
TypeScript
73 lines
2.6 KiB
TypeScript
import { OneBotAction } from '@/napcat-onebot/action/OneBotAction';
|
|
import { ActionName } from '@/napcat-onebot/action/router';
|
|
import { unlink, readdir } from 'fs/promises';
|
|
import path, { join } from 'path';
|
|
import { Type } from '@sinclair/typebox';
|
|
|
|
export class CleanCache extends OneBotAction<void, void> {
|
|
override actionName = ActionName.CleanCache;
|
|
override payloadSchema = Type.Object({});
|
|
override returnSchema = Type.Null();
|
|
override actionDescription = '清理缓存';
|
|
override actionTags = ['系统接口'];
|
|
|
|
async _handle () {
|
|
try {
|
|
// 获取临时文件夹路径
|
|
const tempPath = this.core.NapCatTempPath;
|
|
|
|
// 读取文件夹中的所有文件
|
|
const files = await readdir(tempPath);
|
|
|
|
// 删除每个文件
|
|
const deletePromises = files.map(async (file) => {
|
|
const filePath = join(tempPath, file);
|
|
try {
|
|
await unlink(filePath);
|
|
this.core.context.logger.log(`已删除文件: ${filePath}`);
|
|
} catch (err: unknown) {
|
|
this.core.context.logger.log(`删除文件 ${filePath} 失败: ${(err as Error).message}`);
|
|
}
|
|
});
|
|
|
|
// 等待所有删除操作完成
|
|
await Promise.all(deletePromises);
|
|
const basic_path = path.join(this.core.dataPath, this.core.selfInfo.uin || '10001', 'nt_qq', 'nt_data');
|
|
|
|
// 需要清理的目录列表
|
|
const dirsToClean = ['Pic', 'Ptt', 'Video', 'File', 'log'];
|
|
|
|
// 清理每个指定目录
|
|
for (const dir of dirsToClean) {
|
|
const dirPath = path.join(basic_path, dir);
|
|
try {
|
|
// 检查目录是否存在
|
|
const files = await readdir(dirPath).catch(() => null);
|
|
if (files) {
|
|
// 删除目录下的所有文件
|
|
const dirDeletePromises = files.map(async (file) => {
|
|
const filePath = path.join(dirPath, file);
|
|
try {
|
|
await unlink(filePath);
|
|
this.core.context.logger.log(`已删除文件: ${filePath}`);
|
|
} catch (err: unknown) {
|
|
this.core.context.logger.log(`删除文件 ${filePath} 失败: ${(err as Error).message}`);
|
|
}
|
|
});
|
|
|
|
await Promise.all(dirDeletePromises);
|
|
this.core.context.logger.log(`目录清理完成: ${dirPath}`);
|
|
}
|
|
} catch (err: unknown) {
|
|
this.core.context.logger.log(`清理目录 ${dirPath} 失败: ${(err as Error).message}`);
|
|
}
|
|
}
|
|
|
|
this.core.context.logger.log(`临时文件夹清理完成: ${tempPath}`);
|
|
} catch (err: unknown) {
|
|
this.core.context.logger.log(`清理缓存失败: ${(err as Error).message}`);
|
|
throw err;
|
|
}
|
|
}
|
|
}
|