Added method for evaluating code

This commit is contained in:
Anthony committed 2018-04-16 09:53:37 -04:00
1 parent fe0ce72492
commit 35cce0f36e
1 file changed
+79
@@ -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;
}
}