mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 16:19:18 +00:00
Update switchers.js
添加自动清理垃圾
This commit is contained in:
parent
ac341e5c6a
commit
a0f8b0b911
@ -1,13 +1,18 @@
|
|||||||
import config from "../model/index.js";
|
import config from "../model/index.js";
|
||||||
|
import schedule from 'node-schedule';
|
||||||
import { REDIS_YUNZAI_ISOVERSEA, REDIS_YUNZAI_LAGRANGE } from "../constants/constant.js";
|
import { REDIS_YUNZAI_ISOVERSEA, REDIS_YUNZAI_LAGRANGE } from "../constants/constant.js";
|
||||||
import { deleteFolderRecursive, readCurrentDir } from "../utils/file.js";
|
import { deleteFolderRecursive, readCurrentDir } from "../utils/file.js";
|
||||||
|
|
||||||
|
//自动清理定时
|
||||||
|
const autotime = config.getConfig("tools").autoclearTrashtime
|
||||||
|
// 视频保存路径
|
||||||
|
const defaultPath = config.getConfig("tools").defaultPath
|
||||||
|
|
||||||
export class switchers extends plugin {
|
export class switchers extends plugin {
|
||||||
constructor() {
|
constructor() {
|
||||||
super({
|
super({
|
||||||
name: "R插件开关类",
|
name: "R插件开关类",
|
||||||
dsc: "内含一些和Redis相关的开关类",
|
dsc: "内含一些和Redis相关的开关类",
|
||||||
event: "message.group",
|
|
||||||
priority: 300,
|
priority: 300,
|
||||||
rule: [
|
rule: [
|
||||||
{
|
{
|
||||||
@ -21,16 +26,12 @@ export class switchers extends plugin {
|
|||||||
permission: "master",
|
permission: "master",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
reg: "^清理data垃圾$",
|
reg: "^清理垃圾$",
|
||||||
fnc: "clearTrash",
|
fnc: "clearTrash",
|
||||||
permission: "master",
|
permission: "master",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
// 配置文件
|
|
||||||
this.toolsConfig = config.getConfig("tools");
|
|
||||||
// 视频保存路径
|
|
||||||
this.defaultPath = this.toolsConfig.defaultPath;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,35 +75,59 @@ export class switchers extends plugin {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
//手动清理垃圾
|
||||||
|
async clearTrash(e) {
|
||||||
|
try {
|
||||||
|
const { dataClearFileLen, rTempFileLen } = await autoclearTrash();
|
||||||
|
e.reply(`手动清理垃圾完成:\n` +
|
||||||
|
`- 清理了${dataClearFileLen}个垃圾文件\n` +
|
||||||
|
`- 清理了${rTempFileLen}个群临时文件`);
|
||||||
|
} catch (err) {
|
||||||
|
e.reply(`手动清理垃圾时发生错误: ${err.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* 清理垃圾文件
|
* 清理垃圾文件
|
||||||
* @param e
|
* @param e
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
async clearTrash(e) {
|
async function autoclearTrash(e) {
|
||||||
const dataDirectory = "./data/";
|
const dataDirectory = "./data/";
|
||||||
|
try {
|
||||||
// 删除Yunzai遗留问题的合成视频垃圾文件
|
const files = await readCurrentDir(dataDirectory);
|
||||||
try {
|
let dataClearFileLen = 0;
|
||||||
const files = await readCurrentDir(dataDirectory);
|
for (const file of files) {
|
||||||
let dataClearFileLen = 0;
|
if (/^[0-9a-f]{32}$/.test(file)) {
|
||||||
for (const file of files) {
|
await fs.promises.unlink(dataDirectory + file);
|
||||||
// 如果文件名符合规则,执行删除操作
|
dataClearFileLen++;
|
||||||
if (/^[0-9a-f]{32}$/.test(file)) {
|
|
||||||
await fs.promises.unlink(dataDirectory + file);
|
|
||||||
dataClearFileLen++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 删除R插件临时文件
|
|
||||||
const rTempFileLen = await deleteFolderRecursive(this.defaultPath)
|
|
||||||
e.reply(
|
|
||||||
`数据统计:\n` +
|
|
||||||
`- 当前清理了${ dataDirectory }下总计:${ dataClearFileLen } 个垃圾文件\n` +
|
|
||||||
`- 当前清理了${ this.toolsConfig.defaultPath }下文件夹:${ rTempFileLen } 个群的所有临时文件`
|
|
||||||
);
|
|
||||||
} catch (err) {
|
|
||||||
logger.error(err);
|
|
||||||
await e.reply("清理失败,重试或者手动清理即可");
|
|
||||||
}
|
}
|
||||||
|
const rTempFileLen = await deleteFolderRecursive(defaultPath);
|
||||||
|
return {
|
||||||
|
dataClearFileLen,
|
||||||
|
rTempFileLen
|
||||||
|
};
|
||||||
|
} catch (err) {
|
||||||
|
logger.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function autoclear(time) {
|
||||||
|
schedule.scheduleJob(time, async function() {
|
||||||
|
try {
|
||||||
|
const { dataClearFileLen, rTempFileLen } = await autoclearTrash();
|
||||||
|
console.log(`自动清理垃圾完成:\n` +
|
||||||
|
`- 清理了${dataClearFileLen}个垃圾文件\n` +
|
||||||
|
`- 清理了${rTempFileLen}个群临时文件`);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`自动清理垃圾时发生错误: ${err.message}`);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//自动清理垃圾
|
||||||
|
autoclear(autotime)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user