diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj index 6281ff4e4..8cb0cb65e 100644 --- a/src/Discord.Net.Net45/Discord.Net.csproj +++ b/src/Discord.Net.Net45/Discord.Net.csproj @@ -241,6 +241,9 @@ API\Client\Rest\AddGuildBan.cs + + API\Client\Rest\BulkMessageDelete.cs + API\Client\Rest\CreateChannel.cs diff --git a/src/Discord.Net/API/Client/Rest/BulkMessageDelete.cs b/src/Discord.Net/API/Client/Rest/BulkMessageDelete.cs new file mode 100644 index 000000000..5eb352035 --- /dev/null +++ b/src/Discord.Net/API/Client/Rest/BulkMessageDelete.cs @@ -0,0 +1,23 @@ +using Newtonsoft.Json; + + namespace Discord.API.Client.Rest + { + [JsonObject(MemberSerialization.OptIn)] + public class BulkMessageDelete : IRestRequest + { + string IRestRequest.Endpoint => $"/channels/{ChannelId}/messages/bulk_delete"; + string IRestRequest.Method => "POST"; + object IRestRequest.Payload => this; + + public ulong ChannelId { get; set; } + + public BulkMessageDelete(ulong channelId, ulong[] messageIds) + { + ChannelId = channelId; + MessageIds = messageIds; + } + + [JsonProperty("messages")] + public ulong[] MessageIds { get; set; } + } + } \ No newline at end of file diff --git a/src/Discord.Net/Models/Channel.cs b/src/Discord.Net/Models/Channel.cs index 5037c88bc..03eb5d610 100644 --- a/src/Discord.Net/Models/Channel.cs +++ b/src/Discord.Net/Models/Channel.cs @@ -200,6 +200,13 @@ namespace Discord } } + public async Task DeleteMessages(Message[] messages) => await DeleteMessages(messages.Select(m => m.Id).ToArray()); + + public async Task DeleteMessages(ulong[] messageIds) + { + await Client.ClientAPI.Send(new BulkMessageDelete(Id, messageIds)); + } + public async Task Delete() { try { await Client.ClientAPI.Send(new DeleteChannelRequest(Id)).ConfigureAwait(false); }