Uwev2/src/inc/trigger/sandbox.js
2017-11-22 19:23:43 +01:00

89 lines
2.3 KiB
JavaScript

import { maxoutput, sandbox, bfgen } from "./lib/sandbox.js";
const vm = require("vm")
, request = require("request");
module.exports = bot => {
bot._trigger.set("sandbox_js", {
call: /^\!js (.*)/i,
level: 100,
active: true,
clients: ["irc", "tg"],
f: e => {
const args = e.message.substring(3);
const context = {
e: e,
t: bot._trigger
};
try {
let output = vm.runInNewContext(args, context);
if (typeof output !== undefined && output) {
output = JSON.stringify(output);
if (output !== "Converting circular structure to JSON") {
e.reply(output.length > maxoutput ? `holy fuck, Ausgabe wäre viel zu lang! (${output.length} Zeichen :DDDDDD)` : output);
}
}
}
catch (err) {
e.reply(err.message);
}
}
});
bot._trigger.set("sandbox", {
call: /^\!(hs|py|cpp|bf|php|lua|bash) .*/i,
level: 100,
active: true,
clients: ["irc", "tg"],
f: e => {
let args = e.message.trim().substring(1).split(" ");
const lang = args.shift();
args = args.join(" ");
sandbox(lang, args).then(
resolve => e.reply(resolve),
reject => e.reply(reject.replace("\n", " "))
);
}
});
bot._trigger.set("sandbox_rs", {
call: /^\!rs (.*)/i,
level: 100,
active: true,
clients: ["irc", "tg"],
f: e => {
const args = e.message.substring(4);
const params = {
channel: "stable",
code: "fn main() { " + args + " }",
crateType: "bin",
mode: "debug",
tests: false
};
const options = {
url: "https://play.rust-lang.org/execute",
method: "POST",
body: params,
json: true
};
request(options, (err, res, body) => {
e.reply(body.success ? (body.stdout.length > maxoutput ? `holy fuck, Ausgabe wäre viel zu lang! (${body.stdout.length} Zeichen :DDDDDD)` : body.stdout) : "error!");
});
}
});
bot._trigger.set("bfgen", {
call: /^\!bfgen .*/i,
level: 100,
active: true,
clients: ["irc", "tg"],
f: e => {
let args = e.message.trim().substring(7);
let output = bfgen(args);
e.reply(output.length > maxoutput ? `holy fuck, Ausgabe wäre viel zu lang! (${output.length} Zeichen :DDDDDD)` : output);
}
});
};