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)]
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)]
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)
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)]
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))
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;
}

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)
return result;


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

@@ -23,9 +23,9 @@ namespace Discord.Commands
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)
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)
{
var result = await precondition.CheckPermissions(context).ConfigureAwait(false);
var result = await precondition.CheckPermissions(context, this, Module.Instance).ConfigureAwait(false);
if (!result.IsSuccess)
return result;
}

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)
return result;
}


Loading…
Cancel
Save