From 34af04a7b04d6c19f954e0307e71ccce8f455d58 Mon Sep 17 00:00:00 2001 From: Pingex Date: Sat, 14 Jan 2017 20:39:51 +0100 Subject: [PATCH] ICommandExecutor now uses a Context instead of a MRE+Arguments. --- .../java/net/pingex/dcf/commands/Command.java | 22 ++----------------- .../pingex/dcf/commands/CommandHandler.java | 6 +++-- .../pingex/dcf/commands/ICommandExecutor.java | 5 +---- .../pingex/dcf/commands/InternalCommands.java | 22 +++++++++---------- 4 files changed, 18 insertions(+), 37 deletions(-) diff --git a/src/main/java/net/pingex/dcf/commands/Command.java b/src/main/java/net/pingex/dcf/commands/Command.java index 83b4825..8459baf 100644 --- a/src/main/java/net/pingex/dcf/commands/Command.java +++ b/src/main/java/net/pingex/dcf/commands/Command.java @@ -164,27 +164,9 @@ public abstract class Command implements ICommandExecutor return new Command(name, aliases, description, isEnabled, usage, commandOptions) { @Override - public void execute(MessageReceivedEvent event, List arguments) throws Throwable + public void execute(Context context) throws Throwable { - toExecute.execute(event, arguments); - } - }; - } - - /** - * Build a new Command using a method and a target object (for use with annotated command) - * @param target The method which needs to be invoked - * @param invokable The matching object - * @return Built command. - */ - public Command build(Method target, Object invokable) - { - return new Command(name, aliases, description, isEnabled, usage, commandOptions) - { - @Override - public void execute(MessageReceivedEvent event, List arguments) throws Throwable - { - target.invoke(invokable, event, arguments); + toExecute.execute(context); } }; } diff --git a/src/main/java/net/pingex/dcf/commands/CommandHandler.java b/src/main/java/net/pingex/dcf/commands/CommandHandler.java index 1973de0..adc38ab 100644 --- a/src/main/java/net/pingex/dcf/commands/CommandHandler.java +++ b/src/main/java/net/pingex/dcf/commands/CommandHandler.java @@ -67,8 +67,10 @@ public class CommandHandler return; } + final Context invocationContext = new Context(targetCommand.get(), arguments, event.getMessage(), event.getClient()); + // Audit - AuditResult result = AuditManager.doAudit(new Context(targetCommand.get(), arguments, event.getMessage(), event.getClient())); + AuditResult result = AuditManager.doAudit(invocationContext); if(result.getOpcode().equals(AuditResult.ResultCode.FAIL)) { LOGGER.info("Denied command {} for user #{}. OPCode: {}, Reason: {}", targetCommand.get().getName(), event.getMessage().getAuthor().getID(), result.getOpcode(), result.getMessage()); @@ -85,7 +87,7 @@ public class CommandHandler { try { - targetCommand.get().execute(event, arguments); + targetCommand.get().execute(invocationContext); } catch(Throwable throwable) { diff --git a/src/main/java/net/pingex/dcf/commands/ICommandExecutor.java b/src/main/java/net/pingex/dcf/commands/ICommandExecutor.java index b6127e9..d8a1b53 100644 --- a/src/main/java/net/pingex/dcf/commands/ICommandExecutor.java +++ b/src/main/java/net/pingex/dcf/commands/ICommandExecutor.java @@ -1,13 +1,10 @@ package net.pingex.dcf.commands; -import sx.blah.discord.handle.impl.events.MessageReceivedEvent; -import java.util.List; - /** * The body of a command. */ @FunctionalInterface public interface ICommandExecutor { - void execute(MessageReceivedEvent event, List arguments) throws Throwable; + void execute(Context context) throws Throwable; } diff --git a/src/main/java/net/pingex/dcf/commands/InternalCommands.java b/src/main/java/net/pingex/dcf/commands/InternalCommands.java index c9a7e1a..9e5f363 100644 --- a/src/main/java/net/pingex/dcf/commands/InternalCommands.java +++ b/src/main/java/net/pingex/dcf/commands/InternalCommands.java @@ -45,7 +45,7 @@ public class InternalCommands implements IWithCommands } @Override - public void execute(MessageReceivedEvent event, List arguments) + public void execute(Context context) { // Parameters Set bank = CommandRegistry.getRegistry(); @@ -58,19 +58,19 @@ public class InternalCommands implements IWithCommands // Parsing try { - List output = ArgumentParser.parseAll(Collections.singletonList(Integer.class), arguments); + List output = ArgumentParser.parseAll(Collections.singletonList(Integer.class), context.getArguments()); requestedPage = output.get(0) != null ? (int) output.get(0) : 1; } catch(ArgumentParser.ParserException e) { - DiscordInteractionsUtil.sendMessage(event.getMessage().getChannel(), e.getMessage()); + DiscordInteractionsUtil.sendMessage(context.getChannel(), e.getMessage()); return; } // Checks if(requestedPage <= 0 || requestedPage > amountPages) { - DiscordInteractionsUtil.sendMessage(event.getMessage().getChannel(), "Requested page is invalid. Number of available pages: " + amountPages); + DiscordInteractionsUtil.sendMessage(context.getChannel(), "Requested page is invalid. Number of available pages: " + amountPages); return; } @@ -96,7 +96,7 @@ public class InternalCommands implements IWithCommands } output.append("```"); - DiscordInteractionsUtil.sendMessage(event.getMessage().getChannel(), output.toString()); + DiscordInteractionsUtil.sendMessage(context.getChannel(), output.toString()); } } @@ -120,19 +120,19 @@ public class InternalCommands implements IWithCommands } @Override - public void execute(MessageReceivedEvent event, List arguments) throws Throwable + public void execute(Context context) throws Throwable { // Checks - if(arguments.size() != 1) // Arg check + if(context.getArguments().size() != 1) // Arg check { - DiscordInteractionsUtil.sendMessage(event.getMessage().getChannel(), "Invalid argument."); + DiscordInteractionsUtil.sendMessage(context.getChannel(), "Invalid argument."); return; } - Optional uncheckedTarget = CommandRegistry.getCommandOrAliasByName(arguments.get(0)); + Optional uncheckedTarget = CommandRegistry.getCommandOrAliasByName(context.getArguments().get(0)); if(!uncheckedTarget.isPresent()) // Command existence { - DiscordInteractionsUtil.sendMessage(event.getMessage().getChannel(), "Target command not found."); + DiscordInteractionsUtil.sendMessage(context.getChannel(), "Target command not found."); return; } @@ -151,7 +151,7 @@ public class InternalCommands implements IWithCommands output.append("Enabled: ").append(target.isEnabled() ? "Yes" : "No").append("\n"); output.append("```"); - DiscordInteractionsUtil.sendMessage(event.getMessage().getChannel(), output.toString()); + DiscordInteractionsUtil.sendMessage(context.getChannel(), output.toString()); } } }