diff --git a/src/main/java/netneutrality/command/specific/EvalMethod.java b/src/main/java/netneutrality/command/specific/EvalMethod.java new file mode 100644 index 0000000..1ec4a28 --- /dev/null +++ b/src/main/java/netneutrality/command/specific/EvalMethod.java @@ -0,0 +1,79 @@ +package netneutrality.command.specific; + +/* + * Copyright (c) anthorob + * + * This file is closed-source. It should not be distributed or copied in any way or form + */ + +import net.dv8tion.jda.core.events.message.MessageReceivedEvent; +import netneutrality.command.AbstractCommand; +import netneutrality.command.Visibility; +import netneutrality.music.MusicManager; +import netneutrality.utils.Settings; + +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; + +public class EvalMethod extends AbstractCommand { + + @Override + public boolean needAdmin() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + + @Override + public String getCommand() { + return "evaluate"; + } + + @Override + public String[] getAlias() { + return new String[] {"eval"}; + } + + @Override + public String getUsage() { + return null; + } + + @Override + public Visibility getVisibility() { + return Visibility.BOTH; + } + + @Override + public String execute(MessageReceivedEvent event, String args) { + + if (event.getAuthor().getId().equals(Settings.getCreator().getId())) { + ScriptEngine se = new ScriptEngineManager().getEngineByName("Nashorn"); + try { + se.eval("var imports = new JavaImporter(java.io, java.lang, java.util);"); + } catch (ScriptException e) { + e.printStackTrace(); + } + + se.put("event", event); + se.put("jda", event.getJDA()); + se.put("guild", event.getGuild()); + se.put("channel", event.getChannel()); + se.put("member", event.getMember()); + se.put("music", MusicManager.get(event.getGuild())); + + try { + event.getTextChannel().sendMessage(" Evaluated Successfully:\n```\n"+se.eval("(function() {with (imports) {\nreturn " + args + "\n}})();") + " ```").queue(); + } + catch(Exception e) { + event.getTextChannel().sendMessage(" An exception was thrown:\n```\n"+e+" ```").queue(); + } + } + + return null; + } +}