From 8df2c1a1fbc0478f3af6398b705513ad6e8ca20a Mon Sep 17 00:00:00 2001 From: Christopher F Date: Tue, 9 Oct 2018 19:26:57 -0400 Subject: [PATCH] fix: don't assume the member will always be included on MESSAGE_CREATE (#1167) * fix: don't assume the member will always be included on MESSAGE_CREATE This resolves #1153. Member objects are only included on a message when the user has transitioned from an offline state to an online state (i think?), so this change will fall back to the prior behavior, where we just create an incomplete member object for these states. * lint: use a ternary in place of an if/else block --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 81538e6e7..3d260d1a6 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1158,7 +1158,11 @@ namespace Discord.WebSocket if (author == null) { if (guild != null) - author = guild.AddOrUpdateUser(data.Member.Value); //per g250k, we can create an entire member now + { + author = data.Member.IsSpecified // member isn't always included, but use it when we can + ? guild.AddOrUpdateUser(data.Member.Value) + : guild.AddOrUpdateUser(data.Author.Value); // user has no guild-specific data + } else if (channel is SocketGroupChannel) author = (channel as SocketGroupChannel).GetOrAddUser(data.Author.Value); else