fix: handle GUILD_DELETE behavior correctly (#1542)
This commit is contained in:
@@ -1771,17 +1771,7 @@ namespace Discord.WebSocket
|
|||||||
return guild;
|
return guild;
|
||||||
}
|
}
|
||||||
internal SocketGuild RemoveGuild(ulong id)
|
internal SocketGuild RemoveGuild(ulong id)
|
||||||
{
|
=> State.RemoveGuild(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <exception cref="InvalidOperationException">Unexpected channel type is created.</exception>
|
/// <exception cref="InvalidOperationException">Unexpected channel type is created.</exception>
|
||||||
internal ISocketPrivateChannel AddPrivateChannel(API.Channel model, ClientState state)
|
internal ISocketPrivateChannel AddPrivateChannel(API.Channel model, ClientState state)
|
||||||
|
|||||||
@@ -809,13 +809,14 @@ namespace Discord.WebSocket
|
|||||||
var members = Users;
|
var members = Users;
|
||||||
var self = CurrentUser;
|
var self = CurrentUser;
|
||||||
_members.Clear();
|
_members.Clear();
|
||||||
_members.TryAdd(self.Id, self);
|
if (self != null)
|
||||||
|
_members.TryAdd(self.Id, self);
|
||||||
|
|
||||||
DownloadedMemberCount = _members.Count;
|
DownloadedMemberCount = _members.Count;
|
||||||
|
|
||||||
foreach (var member in members)
|
foreach (var member in members)
|
||||||
{
|
{
|
||||||
if (member.Id != self.Id)
|
if (member.Id != self?.Id)
|
||||||
member.GlobalUser.RemoveRef(Discord);
|
member.GlobalUser.RemoveRef(Discord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user