From f2d80de343e74702ffb75ef82b430bd0def6ef5e Mon Sep 17 00:00:00 2001 From: Finite Reality Date: Sun, 7 Aug 2016 17:23:26 +0100 Subject: [PATCH] Fix error with RequirePermission precondition --- .../Attributes/Preconditions/RequirePermission.cs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermission.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermission.cs index 1529fe405..a970685f5 100644 --- a/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermission.cs +++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequirePermission.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace Discord.Commands.Attributes.Preconditions { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] - public class RequirePermission : RequireGuildAttribute + public class RequirePermission : PreconditionAttribute { public GuildPermission? GuildPermission { get; set; } public ChannelPermission? ChannelPermission { get; set; } @@ -23,12 +23,10 @@ namespace Discord.Commands.Attributes.Preconditions GuildPermission = null; } - public override async Task CheckPermissions(IMessage context, Command executingCommand, object moduleInstance) + public override Task CheckPermissions(IMessage context, Command executingCommand, object moduleInstance) { - var result = await base.CheckPermissions(context, executingCommand, moduleInstance).ConfigureAwait(false); - - if (!result.IsSuccess) - return result; + if (!(context.Channel is IGuildChannel)) + return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel")); var author = context.Author as IGuildUser; @@ -36,7 +34,7 @@ namespace Discord.Commands.Attributes.Preconditions { var guildPerms = author.GuildPermissions.ToList(); if (!guildPerms.Contains(GuildPermission.Value)) - return PreconditionResult.FromError($"User is missing guild permission {GuildPermission.Value}"); + return Task.FromResult(PreconditionResult.FromError($"User is missing guild permission {GuildPermission.Value}")); } if (ChannelPermission.HasValue) @@ -45,10 +43,10 @@ namespace Discord.Commands.Attributes.Preconditions var channelPerms = author.GetPermissions(channel).ToList(); if (!channelPerms.Contains(ChannelPermission.Value)) - return PreconditionResult.FromError($"User is missing channel permission {ChannelPermission.Value}"); + return Task.FromResult(PreconditionResult.FromError($"User is missing channel permission {ChannelPermission.Value}")); } - return PreconditionResult.FromSuccess(); + return Task.FromResult(PreconditionResult.FromSuccess()); } } }