From 0550006d567fe28a52d6c63c03a3c28c843b9506 Mon Sep 17 00:00:00 2001 From: FiniteReality Date: Sat, 17 Jun 2017 15:10:35 +0100 Subject: [PATCH] Change wording of permission preconditions Also fix an issue where RequireBotPermission may throw if used in a non-guild channel which required guild permissions. --- .../Preconditions/RequireBotPermissionAttribute.cs | 8 +++++--- .../Preconditions/RequireUserPermissionAttribute.cs | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs index 82975a2f6..0f865e864 100644 --- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs @@ -44,14 +44,16 @@ namespace Discord.Commands public override async Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services) { - var guildUser = await context.Guild.GetCurrentUserAsync(); + IGuildUser guildUser = null; + if (context.Guild != null) + guildUser = await context.Guild.GetCurrentUserAsync().ConfigureAwait(false); if (GuildPermission.HasValue) { if (guildUser == null) return PreconditionResult.FromError("Command must be used in a guild channel"); if (!guildUser.GuildPermissions.Has(GuildPermission.Value)) - return PreconditionResult.FromError($"Command requires guild permission {GuildPermission.Value}"); + return PreconditionResult.FromError($"Bot requires guild permission {GuildPermission.Value}"); } if (ChannelPermission.HasValue) @@ -65,7 +67,7 @@ namespace Discord.Commands perms = ChannelPermissions.All(guildChannel); if (!perms.Has(ChannelPermission.Value)) - return PreconditionResult.FromError($"Command requires channel permission {ChannelPermission.Value}"); + return PreconditionResult.FromError($"Bot requires channel permission {ChannelPermission.Value}"); } return PreconditionResult.FromSuccess(); diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs index 44c69d76a..b7729b0c8 100644 --- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs @@ -52,7 +52,7 @@ namespace Discord.Commands if (guildUser == null) return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel")); if (!guildUser.GuildPermissions.Has(GuildPermission.Value)) - return Task.FromResult(PreconditionResult.FromError($"Command requires guild permission {GuildPermission.Value}")); + return Task.FromResult(PreconditionResult.FromError($"User requires guild permission {GuildPermission.Value}")); } if (ChannelPermission.HasValue) @@ -66,7 +66,7 @@ namespace Discord.Commands perms = ChannelPermissions.All(guildChannel); if (!perms.Has(ChannelPermission.Value)) - return Task.FromResult(PreconditionResult.FromError($"Command requires channel permission {ChannelPermission.Value}")); + return Task.FromResult(PreconditionResult.FromError($"User requires channel permission {ChannelPermission.Value}")); } return Task.FromResult(PreconditionResult.FromSuccess());