From e6c73e1ada561c384bbab25fb0783974ee954001 Mon Sep 17 00:00:00 2001 From: Ge Date: Thu, 22 Jul 2021 22:31:17 +0800 Subject: [PATCH] Fixed ModifyCommandPermissions Invalid Form Body error (#55) --- ...ifyGuildApplicationCommandPermissionsParams.cs | 15 +++++++++++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 2 +- .../Entities/Interactions/InteractionHelper.cs | 13 +++++++++---- 3 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs diff --git a/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs new file mode 100644 index 000000000..af8ee95d4 --- /dev/null +++ b/src/Discord.Net.Rest/API/Rest/ModifyGuildApplicationCommandPermissionsParams.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.API.Rest +{ + internal class ModifyGuildApplicationCommandPermissionsParams + { + [JsonProperty("permissions")] + public ApplicationCommandPermissions[] Permissions { get; set; } + } +} diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 36259b01a..56bfed20e 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -1004,7 +1004,7 @@ namespace Discord.API return await SendAsync("GET", () => $"applications/{this.CurrentUserId}/guilds/{guildId}/commands/{commandId}/permissions", new BucketIds(), options: options).ConfigureAwait(false); } - public async Task ModifyApplicationCommandPermissions(ApplicationCommandPermissions[] permissions, ulong guildId, ulong commandId, RequestOptions options = null) + public async Task ModifyApplicationCommandPermissions(ModifyGuildApplicationCommandPermissionsParams permissions, ulong guildId, ulong commandId, RequestOptions options = null) { Preconditions.NotEqual(guildId, 0, nameof(guildId)); Preconditions.NotEqual(commandId, 0, nameof(commandId)); diff --git a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs index ec32623c7..7c5de2ee9 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/InteractionHelper.cs @@ -377,21 +377,26 @@ namespace Discord.Rest Preconditions.AtMost(args.Length, 10, nameof(args)); Preconditions.GreaterThan(args.Length, 0, nameof(args)); - List models = new List(); + List permissionsList = new List(); foreach (var arg in args) { - var model = new ApplicationCommandPermissions() + var permissions = new ApplicationCommandPermissions() { Id = arg.TargetId, Permission = arg.Permission, Type = arg.TargetType }; - models.Add(model); + permissionsList.Add(permissions); } - var apiModel = await client.ApiClient.ModifyApplicationCommandPermissions(models.ToArray(), guildId, commandId, options); + ModifyGuildApplicationCommandPermissionsParams model = new ModifyGuildApplicationCommandPermissionsParams() + { + Permissions = permissionsList.ToArray() + }; + + var apiModel = await client.ApiClient.ModifyApplicationCommandPermissions(model, guildId, commandId, options); return new GuildApplicationCommandPermission(apiModel.Id, apiModel.ApplicationId, guildId, apiModel.Permissions.Select( x => new ApplicationCommandPermission(x.Id, x.Type, x.Permission)).ToArray());