From bc2364d3d498f4ec27455093bc9c5ba9c53d554e Mon Sep 17 00:00:00 2001
From: Hsu Still <341464@gmail.com>
Date: Sat, 24 Mar 2018 18:15:23 +0800
Subject: [PATCH] Implement DeleteMessageAsync
---
src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs | 5 +++++
src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs | 6 ++++++
src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs | 5 +++++
src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs | 5 +++++
src/Discord.Net.Rest/Entities/Channels/RestTextChannel.cs | 5 +++++
.../Entities/Channels/RpcVirtualMessageChannel.cs | 5 +++++
.../Entities/Channels/SocketDMChannel.cs | 5 +++++
.../Entities/Channels/SocketGroupChannel.cs | 5 +++++
.../Entities/Channels/SocketTextChannel.cs | 5 +++++
9 files changed, 46 insertions(+)
diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
index 5a6e5df59..75e4e0b35 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..95cf449de 100644
--- a/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/ChannelHelper.cs
@@ -184,6 +184,12 @@ namespace Discord.Rest
var model = await client.ApiClient.UploadFileAsync(channel.Id, args, options).ConfigureAwait(false);
return RestUserMessage.Create(client, channel, client.CurrentUser, model);
}
+
+ public static async Task DeleteMessageAsync(IMessageChannel channel, BaseDiscordClient client,
+ ulong messageId, RequestOptions options)
+ {
+ await client.ApiClient.DeleteMessageAsync(channel.Id, messageId, options).ConfigureAwait(false);
+ }
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 08acdf32b..59707c1ee 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, 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 a1868573e..492b44d72 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, options);
+
public Task SendMessageAsync(string text, 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 600b197d6..675d24736 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, 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 3b6a68193..40def4fb8 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, 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, 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/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
index 451240e66..15df72280 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, 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 d46c5fc59..f3b7d9e92 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, 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 ec7615b55..5daf96c1d 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, Discord, messageId, options);
+ public Task DeleteMessageAsync(IMessage message, RequestOptions options = null)
+ => ChannelHelper.DeleteMessageAsync(this, Discord, message.Id, options);
+
public Task TriggerTypingAsync(RequestOptions options = null)
=> ChannelHelper.TriggerTypingAsync(this, Discord, options);
public IDisposable EnterTypingState(RequestOptions options = null)