mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-04 14:41:14 +00:00
Added or updated actionSummary, actionTags, payloadExample, and returnExample properties for all OneBot action classes in the napcat-onebot package. This improves API documentation and discoverability by providing concise summaries, categorization tags, and usage examples for each action.
76 lines
2.8 KiB
TypeScript
76 lines
2.8 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 actionSummary = '清理缓存';
|
|
override actionDescription = '清理缓存';
|
|
override actionTags = ['系统接口'];
|
|
override payloadExample = {};
|
|
override returnExample = null;
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|