From 91e0f03bfdf6aae1a0e944a15aaf6a3a2a9a0d4c Mon Sep 17 00:00:00 2001 From: Alex Gravely Date: Sun, 2 Dec 2018 12:57:38 -0500 Subject: [PATCH] fix: Fix after message remaining in MessageUpdated if message author wasn't in the payload (#1209) * Fix leaving updated message as null when Discords doesn't include a message author in MESSAGE_UPDATE * Name! That! Parameter! --- .../DiscordSocketClient.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 6b720645e..1e431ec92 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1218,16 +1218,22 @@ namespace Discord.WebSocket cachedMsg.Update(State, data); after = cachedMsg; } - else if (data.Author.IsSpecified) + else { //Edited message isnt in cache, create a detached one SocketUser author; - if (guild != null) - author = guild.GetUser(data.Author.Value.Id); + if (data.Author.IsSpecified) + { + if (guild != null) + author = guild.GetUser(data.Author.Value.Id); + else + author = (channel as SocketChannel).GetUser(data.Author.Value.Id); + if (author == null) + author = SocketUnknownUser.Create(this, State, data.Author.Value); + } else - author = (channel as SocketChannel).GetUser(data.Author.Value.Id); - if (author == null) - author = SocketUnknownUser.Create(this, State, data.Author.Value); + // Message author wasn't specified in the payload, so create a completely anonymous unknown user + author = new SocketUnknownUser(this, id: 0); after = SocketMessage.Create(this, State, author, channel, data); }