Fixed member permission resolving
This commit is contained in:
@@ -16,7 +16,7 @@ namespace Discord.Collections
|
||||
|
||||
protected override void OnCreated(Member item)
|
||||
{
|
||||
item.Server.AddMember(item.UserId);
|
||||
item.Server.AddMember(item);
|
||||
item.User.AddServer(item.ServerId);
|
||||
item.User.AddRef();
|
||||
if (item.UserId == _client.CurrentUserId)
|
||||
@@ -24,7 +24,7 @@ namespace Discord.Collections
|
||||
}
|
||||
protected override void OnRemoved(Member item)
|
||||
{
|
||||
item.Server.RemoveMember(item.UserId);
|
||||
item.Server.RemoveMember(item);
|
||||
item.User.RemoveServer(item.ServerId);
|
||||
item.User.RemoveRef();
|
||||
if (item.UserId == _client.CurrentUserId)
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace Discord
|
||||
if (!_areMembersStale)
|
||||
return _userIds;
|
||||
|
||||
_userIds = Server.Members.Where(x => x.GetPermissions(Id).Text_ReadMessages).Select(x => x.UserId).ToArray();
|
||||
_userIds = Server.Members.Where(x => x.GetPermissions(Id)?.Text_ReadMessages ?? false).Select(x => x.UserId).ToArray();
|
||||
_areMembersStale = false;
|
||||
return _userIds;
|
||||
}
|
||||
|
||||
@@ -152,7 +152,9 @@ namespace Discord
|
||||
}
|
||||
internal void UpdatePermissions(string channelId)
|
||||
{
|
||||
var server = Server;
|
||||
if (RoleIds == null) return; // We don't have all our data processed yet, this will be called again soon
|
||||
|
||||
var server = Server;
|
||||
if (server == null) return;
|
||||
var channel = _client.Channels[channelId];
|
||||
if (channel == null) return;
|
||||
|
||||
@@ -194,18 +194,24 @@ namespace Discord
|
||||
return _invites.TryRemove(inviteId, out ignored);
|
||||
}
|
||||
|
||||
internal void AddMember(string userId)
|
||||
internal void AddMember(Member member)
|
||||
{
|
||||
_members.TryAdd(userId, true);
|
||||
_members.TryAdd(member.UserId, true);
|
||||
foreach (var channel in Channels)
|
||||
channel._areMembersStale = true;
|
||||
{
|
||||
member.AddChannel(channel.Id);
|
||||
channel._areMembersStale = true;
|
||||
}
|
||||
}
|
||||
internal bool RemoveMember(string userId)
|
||||
internal bool RemoveMember(Member member)
|
||||
{
|
||||
bool ignored;
|
||||
foreach (var channel in Channels)
|
||||
{
|
||||
member.RemoveChannel(channel.Id);
|
||||
channel._areMembersStale = true;
|
||||
return _members.TryRemove(userId, out ignored);
|
||||
}
|
||||
return _members.TryRemove(member.UserId, out ignored);
|
||||
}
|
||||
internal bool HasMember(string userId)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user