Fix error with RequirePermission precondition
This commit is contained in:
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
|||||||
namespace Discord.Commands.Attributes.Preconditions
|
namespace Discord.Commands.Attributes.Preconditions
|
||||||
{
|
{
|
||||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
|
||||||
public class RequirePermission : RequireGuildAttribute
|
public class RequirePermission : PreconditionAttribute
|
||||||
{
|
{
|
||||||
public GuildPermission? GuildPermission { get; set; }
|
public GuildPermission? GuildPermission { get; set; }
|
||||||
public ChannelPermission? ChannelPermission { get; set; }
|
public ChannelPermission? ChannelPermission { get; set; }
|
||||||
@@ -23,12 +23,10 @@ namespace Discord.Commands.Attributes.Preconditions
|
|||||||
GuildPermission = null;
|
GuildPermission = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
|
public override Task<PreconditionResult> CheckPermissions(IMessage context, Command executingCommand, object moduleInstance)
|
||||||
{
|
{
|
||||||
var result = await base.CheckPermissions(context, executingCommand, moduleInstance).ConfigureAwait(false);
|
if (!(context.Channel is IGuildChannel))
|
||||||
|
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel"));
|
||||||
if (!result.IsSuccess)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
var author = context.Author as IGuildUser;
|
var author = context.Author as IGuildUser;
|
||||||
|
|
||||||
@@ -36,7 +34,7 @@ namespace Discord.Commands.Attributes.Preconditions
|
|||||||
{
|
{
|
||||||
var guildPerms = author.GuildPermissions.ToList();
|
var guildPerms = author.GuildPermissions.ToList();
|
||||||
if (!guildPerms.Contains(GuildPermission.Value))
|
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)
|
if (ChannelPermission.HasValue)
|
||||||
@@ -45,10 +43,10 @@ namespace Discord.Commands.Attributes.Preconditions
|
|||||||
var channelPerms = author.GetPermissions(channel).ToList();
|
var channelPerms = author.GetPermissions(channel).ToList();
|
||||||
|
|
||||||
if (!channelPerms.Contains(ChannelPermission.Value))
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user