diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 06ed64c8a..0d58d6222 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -1439,15 +1439,12 @@ namespace Discord.WebSocket } SocketPresence beforePresence; - SocketGuildUser beforeGuild; SocketGlobalUser beforeGlobal; var user = guild.GetUser(data.User.Id); if (user != null) { - beforePresence = user.Presence.Clone(); beforeGlobal = user.GlobalUser.Clone(); - beforeGuild = user.Clone(); user.Update(State, data); } else @@ -1455,19 +1452,14 @@ namespace Discord.WebSocket beforePresence = new SocketPresence(UserStatus.Offline, null); user = guild.AddOrUpdateUser(data); beforeGlobal = user.GlobalUser.Clone(); - beforeGuild = user.Clone(); - } - - await _userPresenceUpdatedEvent.InvokeAsync(guild, user, beforePresence, user.Presence).ConfigureAwait(false); - if (data.Roles.IsSpecified || data.Nick.IsSpecified) - { - await _guildMemberUpdatedEvent.InvokeAsync(beforeGuild, user).ConfigureAwait(false); } if (data.User.Username.IsSpecified || data.User.Avatar.IsSpecified) { await _userUpdatedEvent.InvokeAsync(beforeGlobal, user).ConfigureAwait(false); + return; } + await _userPresenceUpdatedEvent.InvokeAsync(guild, user, beforePresence, user.Presence).ConfigureAwait(false); } else { diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs index b6804f89f..53475e5a2 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketGuildUser.cs @@ -88,14 +88,11 @@ namespace Discord.WebSocket internal override void Update(ClientState state, PresenceModel model) { base.Update(state, model); + GlobalUser.Update(state, model.User); if (model.Roles.IsSpecified) UpdateRoles(model.Roles.Value); if (model.Nick.IsSpecified) Nickname = model.Nick.Value; - if (model.User.Username.IsSpecified) - GlobalUser.Username = model.User.Username.Value; - if (model.User.Avatar.IsSpecified) - GlobalUser.AvatarId = model.User.Avatar.Value; } private void UpdateRoles(ulong[] roleIds) {