From 7ecfdfb514022643e1766b5bea1ac1bcd4c82c1a Mon Sep 17 00:00:00 2001 From: Misha133 Date: Tue, 13 Dec 2022 20:55:39 +0300 Subject: [PATCH] add `nsfw` to data model & internal methods; add missing property --- .../ApplicationCommandProperties.cs | 5 +++++ .../Interactions/IApplicationCommand.cs | 5 +++++ .../API/Common/ApplicationCommand.cs | 3 +++ .../Rest/CreateApplicationCommandParams.cs | 6 ++++- .../Rest/ModifyApplicationCommandParams.cs | 6 +++++ .../Interactions/InteractionHelper.cs | 22 +++++++++++++------ .../Interactions/RestApplicationCommand.cs | 4 ++++ .../SocketApplicationCommand.cs | 4 ++++ 8 files changed, 47 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs index 0c1c628cd..78182c404 100644 --- a/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs +++ b/src/Discord.Net.Core/Entities/Interactions/ApplicationCommandProperties.cs @@ -83,6 +83,11 @@ namespace Discord /// public Optional IsDMEnabled { get; set; } + /// + /// Gets or sets whether or not this command is age restricted. + /// + public Optional IsNsfw { get; set; } + /// /// Gets or sets the default permissions required by a user to execute this application command. /// diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs index 6f9ce7a45..afab93500 100644 --- a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs +++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommand.cs @@ -42,6 +42,11 @@ namespace Discord /// bool IsEnabledInDm { get; } + /// + /// Indicates whether the command is age restricted. + /// + bool IsNsfw { get; } + /// /// Set of default required to invoke the command. /// diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs index e46369277..6e434d466 100644 --- a/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs +++ b/src/Discord.Net.Rest/API/Common/ApplicationCommand.cs @@ -44,5 +44,8 @@ namespace Discord.API [JsonProperty("default_member_permissions")] public Optional DefaultMemberPermission { get; set; } + + [JsonProperty("nsfw")] + public Optional Nsfw { get; set; } } } diff --git a/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs b/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs index 2257d4b97..36ea0270a 100644 --- a/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs +++ b/src/Discord.Net.Rest/API/Rest/CreateApplicationCommandParams.cs @@ -35,9 +35,12 @@ namespace Discord.API.Rest [JsonProperty("default_member_permissions")] public Optional DefaultMemberPermission { get; set; } + [JsonProperty("nsfw")] + public Optional Nsfw { get; set; } + public CreateApplicationCommandParams() { } public CreateApplicationCommandParams(string name, string description, ApplicationCommandType type, ApplicationCommandOption[] options = null, - IDictionary nameLocalizations = null, IDictionary descriptionLocalizations = null) + IDictionary nameLocalizations = null, IDictionary descriptionLocalizations = null, bool nsfw = false) { Name = name; Description = description; @@ -45,6 +48,7 @@ namespace Discord.API.Rest Type = type; NameLocalizations = nameLocalizations?.ToDictionary(x => x.Key, x => x.Value) ?? Optional>.Unspecified; DescriptionLocalizations = descriptionLocalizations?.ToDictionary(x => x.Key, x => x.Value) ?? Optional>.Unspecified; + Nsfw = nsfw; } } } diff --git a/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs index f49a3f33d..222e16b84 100644 --- a/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyApplicationCommandParams.cs @@ -17,6 +17,12 @@ namespace Discord.API.Rest [JsonProperty("default_permission")] public Optional DefaultPermission { get; set; } + [JsonProperty("nsfw")] + public Optional Nsfw { get; set; } + + [JsonProperty("default_member_permissions")] + public Optional DefaultMemberPermission { get; set; } + [JsonProperty("name_localizations")] public Optional> NameLocalizations { get; set; } diff --git a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs index deca00b72..a118ca8c3 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs @@ -107,7 +107,8 @@ namespace Discord.Rest // TODO: better conversion to nullable optionals DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(), - DmPermission = arg.IsDMEnabled.ToNullable() + DmPermission = arg.IsDMEnabled.ToNullable(), + Nsfw = arg.IsNsfw.GetValueOrDefault(false), }; if (arg is SlashCommandProperties slashProps) @@ -147,8 +148,9 @@ namespace Discord.Rest // TODO: better conversion to nullable optionals DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(), - DmPermission = arg.IsDMEnabled.ToNullable() - }; + DmPermission = arg.IsDMEnabled.ToNullable(), + Nsfw = arg.IsNsfw.GetValueOrDefault(false) + }; if (arg is SlashCommandProperties slashProps) { @@ -190,7 +192,8 @@ namespace Discord.Rest // TODO: better conversion to nullable optionals DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(), - DmPermission = arg.IsDMEnabled.ToNullable() + DmPermission = arg.IsDMEnabled.ToNullable(), + Nsfw = arg.IsNsfw.GetValueOrDefault(false) }; if (arg is SlashCommandProperties slashProps) @@ -252,7 +255,9 @@ namespace Discord.Rest ? args.IsDefaultPermission.Value : Optional.Unspecified, NameLocalizations = args.NameLocalizations?.ToDictionary(), - DescriptionLocalizations = args.DescriptionLocalizations?.ToDictionary() + DescriptionLocalizations = args.DescriptionLocalizations?.ToDictionary(), + Nsfw = args.IsNsfw.GetValueOrDefault(false), + DefaultMemberPermission = args.DefaultMemberPermissions.ToNullable() }; if (args is SlashCommandProperties slashProps) @@ -312,7 +317,8 @@ namespace Discord.Rest // TODO: better conversion to nullable optionals DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable(), - DmPermission = arg.IsDMEnabled.ToNullable() + DmPermission = arg.IsDMEnabled.ToNullable(), + Nsfw = arg.IsNsfw.GetValueOrDefault(false) }; if (arg is SlashCommandProperties slashProps) @@ -347,7 +353,9 @@ namespace Discord.Rest ? arg.IsDefaultPermission.Value : Optional.Unspecified, NameLocalizations = arg.NameLocalizations?.ToDictionary(), - DescriptionLocalizations = arg.DescriptionLocalizations?.ToDictionary() + DescriptionLocalizations = arg.DescriptionLocalizations?.ToDictionary(), + Nsfw = arg.IsNsfw.GetValueOrDefault(false), + DefaultMemberPermission = arg.DefaultMemberPermissions.ToNullable() }; if (arg is SlashCommandProperties slashProps) diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs index 468d10712..ed22712e7 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommand.cs @@ -30,6 +30,9 @@ namespace Discord.Rest /// public bool IsEnabledInDm { get; private set; } + /// + public bool IsNsfw { get; private set; } + /// public GuildPermissions DefaultMemberPermissions { get; private set; } @@ -101,6 +104,7 @@ namespace Discord.Rest IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true); DefaultMemberPermissions = new GuildPermissions((ulong)model.DefaultMemberPermission.GetValueOrDefault(0).GetValueOrDefault(0)); + IsNsfw = model.Nsfw.GetValueOrDefault(false).GetValueOrDefault(false); } /// diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs index b0ddd0012..cdefd3260 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommand.cs @@ -39,6 +39,9 @@ namespace Discord.WebSocket /// public bool IsEnabledInDm { get; private set; } + /// + public bool IsNsfw { get; private set; } + /// public GuildPermissions DefaultMemberPermissions { get; private set; } @@ -130,6 +133,7 @@ namespace Discord.WebSocket IsEnabledInDm = model.DmPermission.GetValueOrDefault(true).GetValueOrDefault(true); DefaultMemberPermissions = new GuildPermissions((ulong)model.DefaultMemberPermission.GetValueOrDefault(0).GetValueOrDefault(0)); + IsNsfw = model.Nsfw.GetValueOrDefault(false).GetValueOrDefault(false); } ///