From 72dbeb4ac61456a5da830ae311fd00913694e10e Mon Sep 17 00:00:00 2001 From: "Sindre G. Langhus" Date: Thu, 17 Nov 2016 19:15:19 +0100 Subject: [PATCH 1/2] Added channel to the MessageDeleted event, getting the channel before required the message to be in cache, which it not always is. --- .../DiscordSocketClient.Events.cs | 4 ++-- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs index 529caaa87..0c85ef1cb 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs @@ -59,12 +59,12 @@ namespace Discord.WebSocket remove { _messageReceivedEvent.Remove(value); } } private readonly AsyncEvent> _messageReceivedEvent = new AsyncEvent>(); - public event Func, Task> MessageDeleted + public event Func, Task> MessageDeleted { add { _messageDeletedEvent.Add(value); } remove { _messageDeletedEvent.Remove(value); } } - private readonly AsyncEvent, Task>> _messageDeletedEvent = new AsyncEvent, Task>>(); + private readonly AsyncEvent, Task>> _messageDeletedEvent = new AsyncEvent, Task>>(); public event Func, SocketMessage, Task> MessageUpdated { add { _messageUpdatedEvent.Add(value); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 3eb4158d1..dc49e125b 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1280,22 +1280,22 @@ namespace Discord.WebSocket case "MESSAGE_DELETE": { await _gatewayLogger.DebugAsync("Received Dispatch (MESSAGE_DELETE)").ConfigureAwait(false); - + var data = (payload as JToken).ToObject(_serializer); var channel = State.GetChannel(data.ChannelId) as ISocketMessageChannel; if (channel != null) { if (!((channel as SocketGuildChannel)?.Guild.IsSynced ?? true)) - { + { await _gatewayLogger.DebugAsync("Ignored MESSAGE_DELETE, guild is not synced yet.").ConfigureAwait(false); return; } var msg = SocketChannelHelper.RemoveMessage(channel, this, data.Id); if (msg != null) - await _messageDeletedEvent.InvokeAsync(data.Id, msg).ConfigureAwait(false); + await _messageDeletedEvent.InvokeAsync(data.Id, channel as SocketChannel, msg).ConfigureAwait(false); else - await _messageDeletedEvent.InvokeAsync(data.Id, Optional.Create()).ConfigureAwait(false); + await _messageDeletedEvent.InvokeAsync(data.Id, channel as SocketChannel, Optional.Create()).ConfigureAwait(false); } else { @@ -1322,9 +1322,9 @@ namespace Discord.WebSocket { var msg = SocketChannelHelper.RemoveMessage(channel, this, id); if (msg != null) - await _messageDeletedEvent.InvokeAsync(id, msg).ConfigureAwait(false); + await _messageDeletedEvent.InvokeAsync(id, channel as SocketChannel, msg).ConfigureAwait(false); else - await _messageDeletedEvent.InvokeAsync(id, Optional.Create()).ConfigureAwait(false); + await _messageDeletedEvent.InvokeAsync(id, channel as SocketChannel, Optional.Create()).ConfigureAwait(false); } } else From 1a4d22b3cd02dbadd7de974beaa7c921baa16bef Mon Sep 17 00:00:00 2001 From: "Sindre G. Langhus" Date: Thu, 17 Nov 2016 20:38:16 +0100 Subject: [PATCH 2/2] Refactor based on input on pull request. --- src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs | 4 ++-- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs index 0c85ef1cb..927ddc473 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.Events.cs @@ -59,12 +59,12 @@ namespace Discord.WebSocket remove { _messageReceivedEvent.Remove(value); } } private readonly AsyncEvent> _messageReceivedEvent = new AsyncEvent>(); - public event Func, Task> MessageDeleted + public event Func, Task> MessageDeleted { add { _messageDeletedEvent.Add(value); } remove { _messageDeletedEvent.Remove(value); } } - private readonly AsyncEvent, Task>> _messageDeletedEvent = new AsyncEvent, Task>>(); + private readonly AsyncEvent, Task>> _messageDeletedEvent = new AsyncEvent, Task>>(); public event Func, SocketMessage, Task> MessageUpdated { add { _messageUpdatedEvent.Add(value); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index dc49e125b..309d9697b 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1293,9 +1293,9 @@ namespace Discord.WebSocket var msg = SocketChannelHelper.RemoveMessage(channel, this, data.Id); if (msg != null) - await _messageDeletedEvent.InvokeAsync(data.Id, channel as SocketChannel, msg).ConfigureAwait(false); + await _messageDeletedEvent.InvokeAsync(data.Id, channel, msg).ConfigureAwait(false); else - await _messageDeletedEvent.InvokeAsync(data.Id, channel as SocketChannel, Optional.Create()).ConfigureAwait(false); + await _messageDeletedEvent.InvokeAsync(data.Id, channel, Optional.Create()).ConfigureAwait(false); } else {