f0ckv2/src/inc/trigger/f0ck.mjs
2021-04-17 10:43:23 +02:00

56 lines
2.0 KiB
JavaScript

import { promises as fs } from "fs";
import { exec } from "child_process";
import cfg from "../../inc/config.mjs";
import sql from "../sql.mjs";
import lib from "../lib.mjs";
export default async bot => {
return [{
name: "f0ck",
call: /^\!f0ck .*/i,
active: true,
level: 100,
f: async e => {
switch(e.args[0]) {
case "stats":
const dirs = {
b: await fs.readdir("./public/b"),
t: await fs.readdir("./public/t")
};
const sizes = {
b: lib.formatSize((await Promise.all(dirs.b.map(async file => (await fs.stat(`./public/b/${file}`)).size))).reduce((a, b) => b + a)),
t: lib.formatSize((await Promise.all(dirs.t.map(async file => (await fs.stat(`./public/t/${file}`)).size))).reduce((a, b) => b + a)),
};
return e.reply(`${dirs.b.length} f0cks: ${sizes.b}, ${dirs.t.length} thumbnails: ${sizes.t}`);
case "limit":
return e.reply(`up to ${lib.formatSize(cfg.main.maxfilesize)} (${lib.formatSize(cfg.main.maxfilesize * 2.5)} for admins)`);
case "thumb":
const rows = await sql.query("select id from items");
const dir = (await fs.readdir("./public/t")).filter(d => d.endsWith(".png")).map(e => +e.split(".")[0]);
const tmp = [];
for(let row of rows)
!dir.includes(row.id) ? tmp.push(row.id) : null;
e.reply(`${tmp.length}, ${rows.length}, ${dir.length}`);
break;
case "cache":
cfg.websrv.cache = !cfg.websrv.cache;
return e.reply(`Cache is ${cfg.websrv.cache ? "enabled" : "disabled"}`);
break;
case "uptime":
exec('sudo systemctl status f0ck', (err, stdout) => {
if(!err)
return e.reply(stdout.split('\n')[2].trim().replace("Active: active (running)", "i'm active"));
});
break;
case "restart":
e.reply("hay hay patron, hemen!");
exec("sudo systemctl restart f0ck");
break;
default:
return;
}
}
}]
};