diff --git a/src/Discord.Net.Net45/API/Client/Rest/BulkMessageDelete.cs b/src/Discord.Net.Net45/API/Client/Rest/BulkMessageDelete.cs
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/src/Discord.Net.Net45/API/Client/Rest/BulkMessageDelete.cs
@@ -0,0 +1 @@
+
diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj
index 6281ff4e4..58adc19f7 100644
--- a/src/Discord.Net.Net45/Discord.Net.csproj
+++ b/src/Discord.Net.Net45/Discord.Net.csproj
@@ -607,6 +607,7 @@
TaskManager.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); }