diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
index 099b9da43..262b865ea 100644
--- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
@@ -30,6 +30,11 @@ namespace Discord
/// Gets a collection of pinned messages in this channel.
Task> GetPinnedMessagesAsync(RequestOptions options = null);
+ /// Deletes a message based on the message ID in this channel.
+ Task DeleteMessageAsync(ulong messageId, RequestOptions options = null);
+ /// Deletes a message based on the provided message in this channel.
+ Task DeleteMessageAsync(IMessage message, RequestOptions options = null);
+
/// Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds.
Task TriggerTypingAsync(RequestOptions options = null);
/// Continuously broadcasts the "user is typing" message to all users in this channel until the returned object is disposed.
diff --git a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
index 6784f7f6a..dbbabbd72 100644
--- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
@@ -185,6 +185,10 @@ namespace Discord.Rest
return RestUserMessage.Create(client, channel, client.CurrentUser, model);
}
+ public static Task DeleteMessageAsync(IMessageChannel channel, ulong messageId, BaseDiscordClient client,
+ RequestOptions options)
+ => MessageHelper.DeleteAsync(channel.Id, messageId, client, options);
+
public static async Task DeleteMessagesAsync(ITextChannel channel, BaseDiscordClient client,
IEnumerable messageIds, RequestOptions options)
{
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs
index f65ce79de..21cd579e6 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs
@@ -72,6 +72,11 @@ namespace Discord.Rest
public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null)
=> ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null)
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
index af9d80d84..901016a6b 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
@@ -76,6 +76,11 @@ namespace Discord.Rest
public Task> GetPinnedMessagesAsync(RequestOptions options = null)
=> ChannelHelper.GetPinnedMessagesAsync(this, Discord, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task SendMessageAsync(string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null)
=> ChannelHelper.SendMessageAsync(this, Discord, text, isTTS, embed, options);
#if FILESYSTEM
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs
index 8a33ebd05..841aad666 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs
@@ -67,6 +67,11 @@ namespace Discord.Rest
public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null)
=> ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messages.Select(x => x.Id), options);
public Task DeleteMessagesAsync(IEnumerable messageIds, RequestOptions options = null)
diff --git a/src/Discord.Net.Rest/Entities/Channels/RpcVirtualMessageChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RpcVirtualMessageChannel.cs
index 14cbc33f1..8f69388d4 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RpcVirtualMessageChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RpcVirtualMessageChannel.cs
@@ -42,6 +42,11 @@ namespace Discord.Rest
public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null)
=> ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null)
diff --git a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs
index f7ce3ded0..3dc3e74e9 100644
--- a/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs
+++ b/src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs
@@ -25,10 +25,12 @@ namespace Discord.Rest
};
return await client.ApiClient.ModifyMessageAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false);
}
- public static async Task DeleteAsync(IMessage msg, BaseDiscordClient client,
+ public static Task DeleteAsync(IMessage msg, BaseDiscordClient client, RequestOptions options)
+ => DeleteAsync(msg.Channel.Id, msg.Id, client, options);
+ public static async Task DeleteAsync(ulong channelId, ulong msgId, BaseDiscordClient client,
RequestOptions options)
{
- await client.ApiClient.DeleteMessageAsync(msg.Channel.Id, msg.Id, options).ConfigureAwait(false);
+ await client.ApiClient.DeleteMessageAsync(channelId, msgId, options).ConfigureAwait(false);
}
public static async Task AddReactionAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options)
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
index 764431ae1..d95d45890 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
@@ -76,6 +76,11 @@ namespace Discord.WebSocket
public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null)
=> ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null)
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
index 1d68109ee..3d6f60db2 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
@@ -104,6 +104,11 @@ namespace Discord.WebSocket
public Task SendFileAsync(Stream stream, string filename, string text, bool isTTS = false, Embed embed = null, RequestOptions options = null)
=> ChannelHelper.SendFileAsync(this, Discord, stream, filename, text, isTTS, embed, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null)
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs
index f776c9956..9373c431a 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketTextChannel.cs
@@ -89,6 +89,11 @@ namespace Discord.WebSocket
public Task DeleteMessagesAsync(IEnumerable messageIds, RequestOptions options = null)
=> ChannelHelper.DeleteMessagesAsync(this, Discord, messageIds, options);
+ public Task DeleteMessageAsync(ulong messageId, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, messageId, Discord, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, message.Id, Discord, options);
+
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null)