mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 16:19:18 +00:00
commit
d300635a72
@ -1,13 +1,18 @@
|
||||
import config from "../model/index.js";
|
||||
import schedule from 'node-schedule';
|
||||
import { REDIS_YUNZAI_ISOVERSEA, REDIS_YUNZAI_LAGRANGE } from "../constants/constant.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 {
|
||||
constructor() {
|
||||
super({
|
||||
name: "R插件开关类",
|
||||
dsc: "内含一些和Redis相关的开关类",
|
||||
event: "message.group",
|
||||
priority: 300,
|
||||
rule: [
|
||||
{
|
||||
@ -21,16 +26,12 @@ export class switchers extends plugin {
|
||||
permission: "master",
|
||||
},
|
||||
{
|
||||
reg: "^清理data垃圾$",
|
||||
reg: "^清理垃圾$",
|
||||
fnc: "clearTrash",
|
||||
permission: "master",
|
||||
},
|
||||
]
|
||||
});
|
||||
// 配置文件
|
||||
this.toolsConfig = config.getConfig("tools");
|
||||
// 视频保存路径
|
||||
this.defaultPath = this.toolsConfig.defaultPath;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -74,35 +75,59 @@ export class switchers extends plugin {
|
||||
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
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async clearTrash(e) {
|
||||
async function autoclearTrash(e) {
|
||||
const dataDirectory = "./data/";
|
||||
|
||||
// 删除Yunzai遗留问题的合成视频垃圾文件
|
||||
try {
|
||||
const files = await readCurrentDir(dataDirectory);
|
||||
let dataClearFileLen = 0;
|
||||
for (const file of files) {
|
||||
// 如果文件名符合规则,执行删除操作
|
||||
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 } 个群的所有临时文件`
|
||||
);
|
||||
const rTempFileLen = await deleteFolderRecursive(defaultPath);
|
||||
return {
|
||||
dataClearFileLen,
|
||||
rTempFileLen
|
||||
};
|
||||
} catch (err) {
|
||||
logger.error(err);
|
||||
await e.reply("清理失败,重试或者手动清理即可");
|
||||
}
|
||||
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)
|
||||
|
@ -16,3 +16,5 @@ queueConcurrency: 1 # 【目前只涉及哔哩哔哩的下载】根据服务器
|
||||
videoDownloadConcurrency: 1 # 下载视频是否使用多线程,如果不使用默认是1,如果使用根据服务器进行选择,如果不确定是否可以用4即可,高性能服务器随意4~12都可以,看CPU的实力
|
||||
|
||||
lagrangeForwardWebSocket: 'ws://127.0.0.1:9091/' # 格式:ws://地址:端口/,拉格朗日正向连接地址,用于适配拉格朗日上传群文件,解决部分用户无法查看视频问题
|
||||
|
||||
autoclearTrashtime: '0 0 8 * * ?' #每天早上8点自动清理视频缓存,cron可自定义时间
|
||||
|
Loading…
x
Reference in New Issue
Block a user