Eval Command
This commit is contained in:
parent
53ef9fb1ff
commit
aedf64d295
1 changed files with 60 additions and 1 deletions
|
|
@ -9,12 +9,71 @@ import com.bbn.hadder.commands.CommandEvent;
|
|||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class EvalCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void executed(String[] args, CommandEvent event) {
|
||||
if (event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) {
|
||||
|
||||
if (args.length > 0) {
|
||||
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
|
||||
|
||||
try {
|
||||
engine.eval("var imports = new JavaImporter(java.io, java.lang, java.util);");
|
||||
} catch (ScriptException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
engine.put("event", event);
|
||||
engine.put("jda", event.getJDA());
|
||||
engine.put("message", event.getMessage());
|
||||
engine.put("guild", event.getGuild());
|
||||
engine.put("channel", event.getChannel());
|
||||
engine.put("vc", event.getMember().getVoiceState().getChannel());
|
||||
engine.put("author", event.getAuthor());
|
||||
engine.put("member", event.getMember());
|
||||
engine.put("self", event.getGuild().getSelfMember());
|
||||
|
||||
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
|
||||
|
||||
ScheduledFuture<?> future = service.schedule(() -> {
|
||||
|
||||
long startExec = System.currentTimeMillis();
|
||||
Object out = null;
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
|
||||
try {
|
||||
String script = "";
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
args[i] = args[i].replace("```java", "").replace("```", "");
|
||||
script += i == args.length-1 ? args[i]:args[i]+" ";
|
||||
}
|
||||
builder.addField("Input", "```java\n\n" + script + "```", false);
|
||||
|
||||
out = engine.eval(script);
|
||||
builder.addField("Output", "```java\n\n" + out.toString() + "```", false);
|
||||
|
||||
} catch (Exception ex) {
|
||||
builder.addField("Error", "```java\n\n" + ex.getMessage() + "```", false);
|
||||
}
|
||||
|
||||
builder.addField("Timing", System.currentTimeMillis()-startExec + " milliseconds", false);
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, builder).setTitle("Eval Command").build()).queue();
|
||||
|
||||
service.shutdownNow();
|
||||
|
||||
}, 0, TimeUnit.MILLISECONDS);
|
||||
|
||||
} else {
|
||||
event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel());
|
||||
}
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION, builder).build()).queue();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue