diff --git a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs index 69a49c7fa..7126d55b6 100644 --- a/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs +++ b/src/Discord.Net.Interactions/Attributes/Preconditions/RequireRoleAttribute.cs @@ -54,15 +54,17 @@ namespace Discord.Interactions if (guildUser.RoleIds.Contains(RoleId.Value)) return Task.FromResult(PreconditionResult.FromSuccess()); else - Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {context.Guild.GetRole(RoleId.Value).Name}.")); + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {context.Guild.GetRole(RoleId.Value).Name}.")); } if (!string.IsNullOrEmpty(RoleName)) { - if (guildUser.Guild.Roles.Any(x => x.Name == RoleName)) + var roleNames = guildUser.RoleIds.Select(x => guildUser.Guild.GetRole(x).Name); + + if (roleNames.Contains(RoleName)) return Task.FromResult(PreconditionResult.FromSuccess()); else - Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {RoleName}.")); + return Task.FromResult(PreconditionResult.FromError(ErrorMessage ?? $"User requires guild role {RoleName}.")); } return Task.FromResult(PreconditionResult.FromSuccess());