fix: handle GUILD_DELETE behavior correctly (#1542)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user