import { admins, getLevel } from "../admin";
import fetch from "../fetch";
import { cookieJar } from "../fetch";
import { wrapper, clients } from "../wrapper";

import vm from "vm";

let maxoutput = 750;
let context = vm.createContext({
  e: null,
  bot: null,
  admins: null,
  fetch: fetch,
  cookieJar: cookieJar,
  console: console,
  wrapper: {
    wrapper, clients
  }
});
export default bot => {
  bot._trigger.set("sandbox_debug", new bot.trigger({
    call: /^\!debug (.*)/i,
    active: true,
    level: 100,
    f: e => {
      const args = e.message.trim().substring(7);
      try {
        context.admins = admins;
        context.e = e;
        context.bot = bot;
        context.level = getLevel;
        let output = vm.runInContext(args, vm.createContext(context));
        if (typeof output !== undefined && output) {
          output = JSON.stringify(output);
          if (output.length > maxoutput)
            return e.reply(`holy fuck, Ausgabe wäre viel zu lang! (${output.length} Zeichen :DDDDDD)`);
          else
            e.reply(output);
        }
      }
      catch (err) {
        e.reply(err.message);
      }
    }
  }));
};