diff --git a/src/main/java/com/bbn/hadder/commands/Perm.java b/src/main/java/com/bbn/hadder/commands/Perm.java index 524f726..ede807c 100644 --- a/src/main/java/com/bbn/hadder/commands/Perm.java +++ b/src/main/java/com/bbn/hadder/commands/Perm.java @@ -11,7 +11,7 @@ public enum Perm { BOT_OWNER() { @Override public boolean check(CommandEvent commandEvent) { - return commandEvent.getConfig().getOwners().contains(commandEvent.getAuthor().getId()); + return commandEvent.getConfig().getOwners().contains(commandEvent.getAuthor().getIdLong()); } }, MANAGE_MESSAGES { diff --git a/src/main/java/com/bbn/hadder/commands/Perms.java b/src/main/java/com/bbn/hadder/commands/Perms.java index 2cc052e..c834df4 100644 --- a/src/main/java/com/bbn/hadder/commands/Perms.java +++ b/src/main/java/com/bbn/hadder/commands/Perms.java @@ -4,6 +4,10 @@ package com.bbn.hadder.commands; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) public @interface Perms { Perm[] value() default {}; } diff --git a/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java b/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java index 06b73eb..c44cbf2 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/EvalCommand.java @@ -7,6 +7,8 @@ package com.bbn.hadder.commands.owner; import com.bbn.hadder.Hadder; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.commands.Perm; +import com.bbn.hadder.commands.Perms; import com.bbn.hadder.utils.MessageEditor; import javax.script.ScriptEngine; @@ -16,84 +18,79 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +@Perms(Perm.BOT_OWNER) 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"); + 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("msg", event.getMessage()); + engine.put("shardmanager", Hadder.shardManager); + engine.put("rethink", event.getRethink()); + 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("author", event.getAuthor()); + engine.put("member", event.getMember()); + engine.put("self", event.getGuild().getSelfMember()); + + ScheduledExecutorService service = Executors.newScheduledThreadPool(1); + + service.schedule(() -> { + + long startExec = System.currentTimeMillis(); + Object out; try { - engine.eval("var imports = new JavaImporter(java.io, java.lang, java.util);"); - } catch (ScriptException ex) { - ex.printStackTrace(); + 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] + " "; + } + out = engine.eval(script); + + event.getTextChannel().sendMessage(event.getMessageEditor() + .getMessage(MessageEditor.MessageType.INFO, "commands.owner.eval.success.title", "") + .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.input"), + "```java\n\n" + script + "```", false) + .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.output"), + "```java\n\n" + out.toString() + "```", false) + .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.timing"), + System.currentTimeMillis() - startExec + " milliseconds", false) + .build()).queue(); + } catch (Exception ex) { + event.getTextChannel().sendMessage(event.getMessageEditor() + .getMessage(MessageEditor.MessageType.INFO, "commands.owner.eval.success.title", "") + .addField(event.getMessageEditor().getTerm("error"), + "```java\n\n" + ex.getMessage() + "```", false) + .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.timing"), + System.currentTimeMillis() - startExec + " milliseconds", false) + .build()).queue(); + } - engine.put("msg", event.getMessage()); - engine.put("shardmanager", Hadder.shardManager); - engine.put("rethink", event.getRethink()); - 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("author", event.getAuthor()); - engine.put("member", event.getMember()); - engine.put("self", event.getGuild().getSelfMember()); + service.shutdownNow(); - ScheduledExecutorService service = Executors.newScheduledThreadPool(1); + }, 0, TimeUnit.MILLISECONDS); - service.schedule(() -> { - - long startExec = System.currentTimeMillis(); - Object out; - - 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] + " "; - } - out = engine.eval(script); - - event.getTextChannel().sendMessage(event.getMessageEditor() - .getMessage(MessageEditor.MessageType.INFO, "commands.owner.eval.success.title", "") - .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.input"), - "```java\n\n" + script + "```", false) - .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.output"), - "```java\n\n" + out.toString() + "```", false) - .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.timing"), - System.currentTimeMillis() - startExec + " milliseconds", false) - .build()).queue(); - } catch (Exception ex) { - event.getTextChannel().sendMessage(event.getMessageEditor() - .getMessage(MessageEditor.MessageType.INFO, "commands.owner.eval.success.title", "") - .addField(event.getMessageEditor().getTerm("error"), - "```java\n\n" + ex.getMessage() + "```", false) - .addField(event.getMessageEditor().getTerm("commands.owner.eval.success.timing"), - System.currentTimeMillis() - startExec + " milliseconds", false) - .build()).queue(); - - } - - service.shutdownNow(); - - }, 0, TimeUnit.MILLISECONDS); - - } else { - event.getHelpCommand().sendHelp(this, event); - } } else { - event.getTextChannel() - .sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()) - .queue(); + event.getHelpCommand().sendHelp(this, event); } } @Override public String[] labels() { - return new String[] { "eval" }; + return new String[]{"eval"}; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java b/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java index 13cb60d..32c392a 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java @@ -6,9 +6,12 @@ package com.bbn.hadder.commands.owner; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.commands.Perm; +import com.bbn.hadder.commands.Perms; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.entities.Guild; +@Perms(Perm.BOT_OWNER) public class GuildLeaveCommand implements Command { @Override @@ -32,14 +35,20 @@ public class GuildLeaveCommand implements Command { } } else { event.getTextChannel() - .sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()) + .sendMessage(event.getMessageEditor() + .getMessage(MessageEditor.MessageType.INFO, "commands.owner.guildleave.success.title", + "", "commands.owner.guildleave.success.description", guild.getName()) + .build()) .queue(); + } else { + event.getHelpCommand().sendHelp(this, event); } + } @Override public String[] labels() { - return new String[] { "guildleave" }; + return new String[]{"guildleave"}; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java b/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java index 4ce2138..5059e4f 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/RebootCommand.java @@ -6,18 +6,16 @@ package com.bbn.hadder.commands.owner; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.commands.Perm; +import com.bbn.hadder.commands.Perms; import com.bbn.hadder.utils.MessageEditor; - +@Perms(Perm.BOT_OWNER) public class RebootCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { - if (event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) { - Runtime.getRuntime().exit(69); - } else { - event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()).queue(); - } + Runtime.getRuntime().exit(69); } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java index 4f9307a..56bac44 100644 --- a/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java +++ b/src/main/java/com/bbn/hadder/commands/owner/ShutdownCommand.java @@ -6,20 +6,19 @@ package com.bbn.hadder.commands.owner; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.commands.Perm; +import com.bbn.hadder.commands.Perms; import com.bbn.hadder.utils.MessageEditor; +@Perms(Perm.BOT_OWNER) public class ShutdownCommand implements Command { @Override public void executed(String[] args, CommandEvent event) { - if (event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) { - event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO).setTitle("Shutdown").build()).queue(); - event.getJDA().getShardManager().shutdown(); - System.out.println("Bot shut down via Command..."); - Runtime.getRuntime().exit(69); - } else { - event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()).queue(); - } + event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO).setTitle("Shutdown").build()).queue(); + event.getJDA().getShardManager().shutdown(); + System.out.println("Bot shut down via Command..."); + Runtime.getRuntime().exit(69); } @Override diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java index 967d9c3..0949f5d 100644 --- a/src/main/java/com/bbn/hadder/core/CommandHandler.java +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -9,6 +9,7 @@ import com.bbn.hadder.commands.general.HelpCommand; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import java.util.Arrays; import java.util.List; public class CommandHandler { @@ -37,8 +38,15 @@ public class CommandHandler { CommandEvent commandEvent = new CommandEvent(event.getJDA(), event.getResponseNumber(), event.getMessage(), rethink, config, this, helpCommand, new MessageEditor(rethink, event.getAuthor())); - for (Perm perm : ((Perms) cmd).value()) { - if (!perm.check(commandEvent)) return; + if (!Arrays.asList(cmd.getClass().getAnnotations()).contains(Perms.class)) { + for (Perm perm : cmd.getClass().getAnnotation(Perms.class).value()) { + if (!perm.check(commandEvent)) { + commandEvent.getTextChannel() + .sendMessage(commandEvent.getMessageEditor().getMessage(MessageEditor.MessageType.NO_PERMISSION).build()) + .queue(); + return; + } + } } cmd.executed(args, commandEvent);