From 109728ef93091ac5fcb59b19fdaa41ff59245710 Mon Sep 17 00:00:00 2001 From: Cenngo Date: Sun, 15 May 2022 02:06:36 +0300 Subject: [PATCH] implement fix --- src/Discord.Net.Interactions/Info/ModuleInfo.cs | 2 +- .../Utilities/ApplicationCommandRestUtil.cs | 9 ++++++--- .../Entities/Interactions/RestApplicationCommand.cs | 4 ++-- .../SocketBaseCommand/SocketApplicationCommand.cs | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Interactions/Info/ModuleInfo.cs b/src/Discord.Net.Interactions/Info/ModuleInfo.cs index 904d67410..4f40f1607 100644 --- a/src/Discord.Net.Interactions/Info/ModuleInfo.cs +++ b/src/Discord.Net.Interactions/Info/ModuleInfo.cs @@ -248,7 +248,7 @@ namespace Discord.Interactions while (parent != null) { - permissions = (permissions ?? 0) | (parent.DefaultMemberPermissions ?? 0); + permissions = (permissions ?? 0) | (parent.DefaultMemberPermissions ?? 0).SanitizeGuildPermissions(); parent = parent.Parent; } diff --git a/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs b/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs index 60980c065..e4b6f893c 100644 --- a/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs +++ b/src/Discord.Net.Interactions/Utilities/ApplicationCommandRestUtil.cs @@ -41,7 +41,7 @@ namespace Discord.Interactions Name = commandInfo.Name, Description = commandInfo.Description, IsDMEnabled = commandInfo.IsEnabledInDm, - DefaultMemberPermissions = (commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0) + DefaultMemberPermissions = ((commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)).SanitizeGuildPermissions(), }.Build(); if (commandInfo.Parameters.Count > SlashCommandBuilder.MaxOptionsCount) @@ -69,14 +69,14 @@ namespace Discord.Interactions { Name = commandInfo.Name, IsDefaultPermission = commandInfo.DefaultPermission, - DefaultMemberPermissions = (commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0), + DefaultMemberPermissions = ((commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)).SanitizeGuildPermissions(), IsDMEnabled = commandInfo.IsEnabledInDm }.Build(), ApplicationCommandType.User => new UserCommandBuilder { Name = commandInfo.Name, IsDefaultPermission = commandInfo.DefaultPermission, - DefaultMemberPermissions = (commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0), + DefaultMemberPermissions = ((commandInfo.DefaultMemberPermissions ?? 0) | (commandInfo.Module.DefaultMemberPermissions ?? 0)).SanitizeGuildPermissions(), IsDMEnabled = commandInfo.IsEnabledInDm }.Build(), _ => throw new InvalidOperationException($"{commandInfo.CommandType} isn't a supported command type.") @@ -232,5 +232,8 @@ namespace Discord.Interactions return builder.Build(); } + + public static GuildPermission? SanitizeGuildPermissions(this GuildPermission permissions) => + permissions == 0 ? null : permissions; } } diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs index 9e2bab2c2..8383f5a82 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs @@ -65,8 +65,8 @@ namespace Discord.Rest : ImmutableArray.Create(); IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true); - DefaultMemberPermissions = model.DefaultMemberPermission.IsSpecified - ? new GuildPermissions((ulong)model.DefaultMemberPermission.Value) : GuildPermissions.None; + DefaultMemberPermissions = model.DefaultMemberPermission.GetValueOrDefault(null).HasValue + ? new GuildPermissions((ulong)model.DefaultMemberPermission.GetValueOrDefault(null).Value) : GuildPermissions.None; } /// diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs index 40ec17f5b..0612628b8 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs @@ -94,8 +94,8 @@ namespace Discord.WebSocket : ImmutableArray.Create(); IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true); - DefaultMemberPermissions = model.DefaultMemberPermission.IsSpecified - ? new GuildPermissions((ulong)model.DefaultMemberPermission.Value) : GuildPermissions.None; + DefaultMemberPermissions = model.DefaultMemberPermission.GetValueOrDefault(null).HasValue + ? new GuildPermissions((ulong)model.DefaultMemberPermission.GetValueOrDefault(null).Value) : GuildPermissions.None; } ///