Browse Source

Made GetOrCreateUser always call AddRef and added check to PRESENCE_UPDATE to avoid readding users who have been removed from guilds

pull/641/head
Sindre G. Langhus 8 years ago
parent
commit
cc87a3ef35
1 changed files with 9 additions and 6 deletions
  1. +9
    -6
      src/Discord.Net.WebSocket/DiscordSocketClient.cs

+ 9
- 6
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -271,12 +271,9 @@ namespace Discord.WebSocket
}
internal SocketGlobalUser GetOrCreateUser(ClientState state, Discord.API.User model)
{
return state.GetOrAddUser(model.Id, x =>
{
var user = SocketGlobalUser.Create(this, state, model);
user.GlobalUser.AddRef();
return user;
});
var user = state.GetOrAddUser(model.Id, x => SocketGlobalUser.Create(this, state, model));
user.GlobalUser.AddRef();
return user;
}
internal SocketGlobalUser GetOrCreateSelfUser(ClientState state, Discord.API.User model)
{
@@ -1328,7 +1325,13 @@ namespace Discord.WebSocket

var user = guild.GetUser(data.User.Id);
if (user == null)
{
if (data.Status == UserStatus.Offline)
{
return;
}
user = guild.AddOrUpdateUser(data);
}
else
{
var globalBefore = user.GlobalUser.Clone();


Loading…
Cancel
Save