const Command = require("../lib/command.js"); const CATEGORY = "bot"; const logger = require("npmlog"); const {inspect} = require("util"); const {hastebin} = require("../lib/utils.js"); const reload = new Command("reload"); reload.ownerOnly = true; reload.category = CATEGORY; reload.helpText = "Reloads a module."; reload.callback = function (msg, line) { try { require.resolve(`./${line}.js`); } catch (err) { if (err.code == "MODULE_NOT_FOUND") { return "Module not found."; } else { return `:warning: An error occurred: \`\`\`\n${err}\`\`\``; } } try { logger.info("hf:modules", "Reloading module: '%s'", line); delete require.cache[require.resolve(`./${line}.js`)]; require(`./${line}.js`); return {reaction: "\uD83D\uDC4C"}; } catch (err) { return `:warning: An error occurred: \`\`\`\n${err}\`\`\``; } }; hf.registerCommand(reload); const restart = new Command("restart"); restart.ownerOnly = true; restart.category = CATEGORY; restart.helpText = "Restarts the bot."; restart.callback = function () { setTimeout(process.exit, 500); return {reaction: "\uD83D\uDD04"}; }; hf.registerCommand(restart); const _eval = new Command("eval"); _eval.elevatedOnly = true; _eval.category = CATEGORY; _eval.helpText = "Evalueates Javascript"; _eval.callback = async function (msg, line) { let errored = false; let out; try { out = eval(line); if (out && out instanceof Promise) out = await out; } catch (err) { out = err.toString(); errored = true; } out = errored ? out : inspect(out, {depth: 0}); const token = hf.config.token; out = out.replace( new RegExp(token.replace(/\./g, "\\."), "g"), "lol no key 4 u" ); if (errored) { return ":warning: Output (errored):\n```js\n" + out + "\n```"; } else { if (out.toString().length > 1980) { const code = hastebin(out.toString()); return `\u2705 Output too long to send in a message: ${hf.config.haste_provider}/${code}`; } else { return "\u2705 Output:\n```js\n" + out + "\n```"; } } }; hf.registerCommand(_eval);