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; } } }] };