fix: handle GUILD_DELETE behavior correctly (#1542)

This commit is contained in:
Paulo
2020-05-20 18:25:49 -03:00
committed by GitHub
parent 08d9834e2c
commit 91b270a0ce
2 changed files with 4 additions and 13 deletions

View File

@@ -1771,17 +1771,7 @@ namespace Discord.WebSocket
return guild;
}
internal SocketGuild RemoveGuild(ulong id)
{
var guild = State.RemoveGuild(id);
if (guild != null)
{
foreach (var _ in guild.Channels)
State.RemoveChannel(id);
foreach (var user in guild.Users)
user.GlobalUser.RemoveRef(this);
}
return guild;
}
=> State.RemoveGuild(id);
/// <exception cref="InvalidOperationException">Unexpected channel type is created.</exception>
internal ISocketPrivateChannel AddPrivateChannel(API.Channel model, ClientState state)

View File

@@ -809,13 +809,14 @@ namespace Discord.WebSocket
var members = Users;
var self = CurrentUser;
_members.Clear();
_members.TryAdd(self.Id, self);
if (self != null)
_members.TryAdd(self.Id, self);
DownloadedMemberCount = _members.Count;
foreach (var member in members)
{
if (member.Id != self.Id)
if (member.Id != self?.Id)
member.GlobalUser.RemoveRef(Discord);
}
}