diff --git a/src/main/java/net/pingex/dcf/commands/Command.java b/src/main/java/net/pingex/dcf/commands/Command.java index 8b70e14..5829c98 100644 --- a/src/main/java/net/pingex/dcf/commands/Command.java +++ b/src/main/java/net/pingex/dcf/commands/Command.java @@ -292,7 +292,7 @@ public abstract class Command implements ICommandExecutor return commandScope; } - public Set getCommandOptions() + public Set getOptions() { return Collections.unmodifiableSet(commandOptions); } diff --git a/src/main/java/net/pingex/dcf/commands/audit/basic/ScopeCheck.java b/src/main/java/net/pingex/dcf/commands/audit/basic/ScopeCheck.java index 1172b65..44b0486 100644 --- a/src/main/java/net/pingex/dcf/commands/audit/basic/ScopeCheck.java +++ b/src/main/java/net/pingex/dcf/commands/audit/basic/ScopeCheck.java @@ -3,6 +3,9 @@ package net.pingex.dcf.commands.audit.basic; import net.pingex.dcf.commands.Context; import net.pingex.dcf.commands.audit.AuditResult; import net.pingex.dcf.commands.audit.IAuditComponentProvider; +import net.pingex.dcf.commands.options.ICommandOption; +import net.pingex.dcf.commands.options.ScopeOption; +import java.util.Optional; /** * This component checks whether the command is invoked in the right scope. @@ -12,9 +15,12 @@ public class ScopeCheck implements IAuditComponentProvider @Override public AuditResult doAudit(Context context) { - if(context.getCommand().getScope().test(context.getChannel())) + Optional option = context.getCommand().getOptions().stream().filter(i -> i instanceof ScopeOption).findFirst(); + if(!option.isPresent()) return new AuditResult(AuditResult.ResultCode.NOOP, "ScopeOption not present."); + + if(((ScopeOption)option.get()).getScope().test(context.getChannel())) return new AuditResult(AuditResult.ResultCode.PASS, null); - else return new AuditResult(AuditResult.ResultCode.FAIL, "Cannot run this command outside of its intended scope. Valid scope is: " + context.getCommand().getScope() + "."); + else return new AuditResult(AuditResult.ResultCode.FAIL, "Cannot run this command outside of its intended scope. Valid scope is: " + ((ScopeOption)option.get()).getScope() + "."); } @Override diff --git a/src/main/java/net/pingex/dcf/commands/options/ScopeOption.java b/src/main/java/net/pingex/dcf/commands/options/ScopeOption.java index ddb3730..e634a2c 100644 --- a/src/main/java/net/pingex/dcf/commands/options/ScopeOption.java +++ b/src/main/java/net/pingex/dcf/commands/options/ScopeOption.java @@ -15,7 +15,7 @@ public class ScopeOption implements ICommandOption this.commandScope = commandScope; } - public CommandScope getCommandScope() + public CommandScope getScope() { return commandScope; }