From 0df7225111da3446998e7576080d2b2a6e18ee0e Mon Sep 17 00:00:00 2001 From: Alex Gravely Date: Sun, 2 Dec 2018 03:42:47 -0500 Subject: [PATCH] Fix leaving updated message as null when Discords doesn't include a message author in MESSAGE_UPDATE --- .../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..36b4927cd 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, 0); after = SocketMessage.Create(this, State, author, channel, data); }