2021-06-01 18:59:59 +00:00
|
|
|
const Command = require("../lib/command.js");
|
|
|
|
const CATEGORY = "bot";
|
|
|
|
|
|
|
|
const logger = require("npmlog");
|
2021-07-06 00:57:28 +00:00
|
|
|
const {inspect} = require("util");
|
|
|
|
|
|
|
|
const {hastebin} = require("../lib/utils.js");
|
2021-06-01 18:59:59 +00:00
|
|
|
|
|
|
|
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);
|
2021-07-06 00:57:28 +00:00
|
|
|
|
|
|
|
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.then) out = await out;
|
|
|
|
} catch (err) {
|
|
|
|
out = err.message ? err.message : err;
|
|
|
|
errored = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
out = typeof out == "string" ? 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);
|