diff --git a/src/Discord.Net.Rest/API/Rest/EditWebhookMessageParams.cs b/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs similarity index 67% rename from src/Discord.Net.Rest/API/Rest/EditWebhookMessageParams.cs rename to src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs index 01c7ee869..6f8ac4d50 100644 --- a/src/Discord.Net.Rest/API/Rest/EditWebhookMessageParams.cs +++ b/src/Discord.Net.Rest/API/Rest/ModifyWebhookMessageParams.cs @@ -4,19 +4,13 @@ using Newtonsoft.Json; namespace Discord.API.Rest { [JsonObject(MemberSerialization = MemberSerialization.OptIn)] - internal class EditWebhookMessageParams + internal class ModifyWebhookMessageParams { [JsonProperty("content")] - public string Content { get; } - + public string Content { get; set; } [JsonProperty("embeds")] public Optional Embeds { get; set; } [JsonProperty("allowed_mentions")] public Optional AllowedMentions { get; set; } - - public EditWebhookMessageParams(string content) - { - Content = content; - } } } diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 50ef79153..05772321b 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -526,7 +526,7 @@ namespace Discord.API /// Message content is too long, length must be less or equal to . /// This operation may only be called with a token. - public async Task EditWebhookMessageAsync(ulong webhookId, ulong messageId, EditWebhookMessageParams args, RequestOptions options = null) + public async Task ModifyWebhookMessageAsync(ulong webhookId, ulong messageId, ModifyWebhookMessageParams args, RequestOptions options = null) { if (AuthTokenType != TokenType.Webhook) throw new InvalidOperationException($"This operation may only be called with a {nameof(TokenType.Webhook)} token."); @@ -534,9 +534,9 @@ namespace Discord.API Preconditions.NotNull(args, nameof(args)); Preconditions.NotEqual(webhookId, 0, nameof(webhookId)); Preconditions.NotEqual(messageId, 0, nameof(messageId)); - if (!args.Embeds.IsSpecified || args.Embeds.Value == null || args.Embeds.Value.Length == 0) - Preconditions.NotNullOrEmpty(args.Content, nameof(args.Content)); + if (args.Embeds.IsSpecified) + Preconditions.AtMost(args.Embeds.Value.Length, 10, nameof(args.Embeds), "A max of 10 Embeds are allowed."); if (args.Content?.Length > DiscordConfig.MaxMessageSize) throw new ArgumentException(message: $"Message content is too long, length must be less or equal to {DiscordConfig.MaxMessageSize}.", paramName: nameof(args.Content)); options = RequestOptions.CreateOrClone(options); diff --git a/src/Discord.Net.Webhook/DiscordWebhookClient.cs b/src/Discord.Net.Webhook/DiscordWebhookClient.cs index 25ceefc96..c34a32db0 100644 --- a/src/Discord.Net.Webhook/DiscordWebhookClient.cs +++ b/src/Discord.Net.Webhook/DiscordWebhookClient.cs @@ -91,12 +91,34 @@ namespace Discord.Webhook string username = null, string avatarUrl = null, RequestOptions options = null, AllowedMentions allowedMentions = null) => WebhookClientHelper.SendMessageAsync(this, text, isTTS, embeds, username, avatarUrl, allowedMentions, options); - /// Edits a message posted using this webhook. - public Task EditMessageAsync(ulong messageId, string text = null, IEnumerable embeds = null, + /// Modifies a message posted using this webhook. + /// + /// This method can only modify messages that were sent using the same webhook. + /// + /// ID of the modified message. + /// The message to be sent. + /// The enumeration to be sent. + /// + /// Specifies if notifications are sent for mentioned users and roles in the message . + /// If null, all mentioned roles and users will be notified. + /// + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous modification operation. + /// + public Task ModifyMessageAsync(ulong messageId, string text = null, IEnumerable embeds = null, AllowedMentions allowedMentions = null, RequestOptions options = null) - => WebhookClientHelper.EditMessageAsync(this, messageId, text, embeds, allowedMentions, options); + => WebhookClientHelper.ModifyMessageAsync(this, messageId, text, embeds, allowedMentions, options); /// Deletes a message posted using this webhook. + /// + /// This method can only delete messages that were sent using the same webhook. + /// + /// ID of the deleted message. + /// The options to be used when sending the request. + /// + /// A task that represents the asynchronous deletion operation. + /// public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null) => WebhookClientHelper.DeleteMessageAsync(this, messageId, options); diff --git a/src/Discord.Net.Webhook/WebhookClientHelper.cs b/src/Discord.Net.Webhook/WebhookClientHelper.cs index 2e4a24c51..676e1143a 100644 --- a/src/Discord.Net.Webhook/WebhookClientHelper.cs +++ b/src/Discord.Net.Webhook/WebhookClientHelper.cs @@ -36,16 +36,16 @@ namespace Discord.Webhook var model = await client.ApiClient.CreateWebhookMessageAsync(client.Webhook.Id, args, options: options).ConfigureAwait(false); return model.Id; } - public static async Task EditMessageAsync(DiscordWebhookClient client, ulong messageId, string text, IEnumerable embeds, + public static async Task ModifyMessageAsync(DiscordWebhookClient client, ulong messageId, string text, IEnumerable embeds, AllowedMentions allowedMentions, RequestOptions options) { - var args = new EditWebhookMessageParams(text); + var args = new ModifyWebhookMessageParams { Content = text }; if (embeds != null) args.Embeds = embeds.Select(x => x.ToModel()).ToArray(); if (allowedMentions != null) args.AllowedMentions = allowedMentions.ToModel(); - await client.ApiClient.EditWebhookMessageAsync(client.Webhook.Id, messageId, args, options: options).ConfigureAwait(false); + await client.ApiClient.ModifyWebhookMessageAsync(client.Webhook.Id, messageId, args, options: options).ConfigureAwait(false); } public static async Task DeleteMessageAsync(DiscordWebhookClient client, ulong messageId, RequestOptions options) {