Browse Source

Add Command and module instance parameters to CheckPermissions

After a small discussion with Joe4evr on discord, a way of retrieving the
state of a module appeared to be needed. The new override should provide
enough context to a bot dev to allow them to do what they want.
tags/1.0-rc
Finite Reality 9 years ago
parent
commit
11f1163ec2
6 changed files with 9 additions and 9 deletions
  1. +1
    -1
      src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
  2. +1
    -1
      src/Discord.Net.Commands/Attributes/Preconditions/RequireDMAttribute.cs
  3. +1
    -1
      src/Discord.Net.Commands/Attributes/Preconditions/RequireGuildAttribute.cs
  4. +2
    -2
      src/Discord.Net.Commands/Attributes/Preconditions/RequirePermission.cs
  5. +2
    -2
      src/Discord.Net.Commands/Attributes/Preconditions/RequireRoleAttribute.cs
  6. +2
    -2
      src/Discord.Net.Commands/Command.cs

+ 1
- 1
src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs View File

@@ -8,6 +8,6 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = true)] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public abstract class PreconditionAttribute : Attribute public abstract class PreconditionAttribute : Attribute
{ {
public abstract Task<PreconditionResult> CheckPermissions(IMessage context);
public abstract Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance);
} }
} }

+ 1
- 1
src/Discord.Net.Commands/Attributes/Preconditions/RequireDMAttribute.cs View File

@@ -8,7 +8,7 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireDMAttribute : PreconditionAttribute public class RequireDMAttribute : PreconditionAttribute
{ {
public override Task<PreconditionResult> CheckPermissions(IMessage context)
public override Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
{ {
if (context.Channel is IGuildChannel) if (context.Channel is IGuildChannel)
return Task.FromResult(PreconditionResult.FromError("Command must be used in a DM")); return Task.FromResult(PreconditionResult.FromError("Command must be used in a DM"));


+ 1
- 1
src/Discord.Net.Commands/Attributes/Preconditions/RequireGuildAttribute.cs View File

@@ -8,7 +8,7 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireGuildAttribute : PreconditionAttribute public class RequireGuildAttribute : PreconditionAttribute
{ {
public override Task<PreconditionResult> CheckPermissions(IMessage context)
public override Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
{ {
if (!(context.Channel is IGuildChannel)) if (!(context.Channel is IGuildChannel))
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild")); return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild"));


+ 2
- 2
src/Discord.Net.Commands/Attributes/Preconditions/RequirePermission.cs View File

@@ -23,9 +23,9 @@ namespace Discord.Commands.Attributes.Preconditions
GuildPermission = null; GuildPermission = null;
} }


public override async Task<PreconditionResult> CheckPermissions(IMessage context)
public override async Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
{ {
var result = await base.CheckPermissions(context).ConfigureAwait(false);
var result = await base.CheckPermissions(context, executingCommand, moduleInstance).ConfigureAwait(false);


if (!result.IsSuccess) if (!result.IsSuccess)
return result; return result;


+ 2
- 2
src/Discord.Net.Commands/Attributes/Preconditions/RequireRoleAttribute.cs View File

@@ -23,9 +23,9 @@ namespace Discord.Commands
Comparer = comparer; Comparer = comparer;
} }


public override async Task<PreconditionResult> CheckPermissions(IMessage context)
public override async Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
{ {
var result = await base.CheckPermissions(context).ConfigureAwait(false);
var result = await base.CheckPermissions(context, executingCommand, moduleInstance).ConfigureAwait(false);


if (!result.IsSuccess) if (!result.IsSuccess)
return result; return result;


+ 2
- 2
src/Discord.Net.Commands/Command.cs View File

@@ -46,14 +46,14 @@ namespace Discord.Commands
{ {
foreach (PreconditionAttribute precondition in Module.Preconditions) foreach (PreconditionAttribute precondition in Module.Preconditions)
{ {
var result = await precondition.CheckPermissions(context).ConfigureAwait(false);
var result = await precondition.CheckPermissions(context, this, Module.Instance).ConfigureAwait(false);
if (!result.IsSuccess) if (!result.IsSuccess)
return result; return result;
} }


foreach (PreconditionAttribute precondition in Preconditions) foreach (PreconditionAttribute precondition in Preconditions)
{ {
var result = await precondition.CheckPermissions(context).ConfigureAwait(false);
var result = await precondition.CheckPermissions(context, this, Module.Instance).ConfigureAwait(false);
if (!result.IsSuccess) if (!result.IsSuccess)
return result; return result;
} }


Loading…
Cancel
Save