Add better support for invisible users
This commit is contained in:
@@ -125,7 +125,7 @@ namespace Discord.WebSocket
|
||||
return user;
|
||||
return null;
|
||||
}
|
||||
internal SocketGroupUser AddUser(UserModel model)
|
||||
internal SocketGroupUser GetOrAddUser(UserModel model)
|
||||
{
|
||||
SocketGroupUser user;
|
||||
if (_users.TryGetValue(model.Id, out user))
|
||||
|
||||
@@ -16,6 +16,7 @@ using MemberModel = Discord.API.GuildMember;
|
||||
using Model = Discord.API.Guild;
|
||||
using PresenceModel = Discord.API.Presence;
|
||||
using RoleModel = Discord.API.Role;
|
||||
using UserModel = Discord.API.User;
|
||||
using VoiceStateModel = Discord.API.VoiceState;
|
||||
|
||||
namespace Discord.WebSocket
|
||||
@@ -375,6 +376,19 @@ namespace Discord.WebSocket
|
||||
public Task<int> PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null)
|
||||
=> GuildHelper.PruneUsersAsync(this, Discord, days, simulate, options);
|
||||
|
||||
internal SocketGuildUser AddOrUpdateUser(UserModel model)
|
||||
{
|
||||
SocketGuildUser member;
|
||||
if (_members.TryGetValue(model.Id, out member))
|
||||
member.GlobalUser?.Update(Discord.State, model);
|
||||
else
|
||||
{
|
||||
member = SocketGuildUser.Create(this, Discord.State, model);
|
||||
_members[member.Id] = member;
|
||||
DownloadedMemberCount++;
|
||||
}
|
||||
return member;
|
||||
}
|
||||
internal SocketGuildUser AddOrUpdateUser(MemberModel model)
|
||||
{
|
||||
SocketGuildUser member;
|
||||
|
||||
@@ -6,7 +6,8 @@ using System.Collections.Immutable;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Model = Discord.API.GuildMember;
|
||||
using UserModel = Discord.API.User;
|
||||
using MemberModel = Discord.API.GuildMember;
|
||||
using PresenceModel = Discord.API.Presence;
|
||||
|
||||
namespace Discord.WebSocket
|
||||
@@ -69,7 +70,14 @@ namespace Discord.WebSocket
|
||||
Guild = guild;
|
||||
GlobalUser = globalUser;
|
||||
}
|
||||
internal static SocketGuildUser Create(SocketGuild guild, ClientState state, Model model)
|
||||
internal static SocketGuildUser Create(SocketGuild guild, ClientState state, UserModel model)
|
||||
{
|
||||
var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model));
|
||||
entity.Update(state, model);
|
||||
entity.UpdateRoles(new ulong[0]);
|
||||
return entity;
|
||||
}
|
||||
internal static SocketGuildUser Create(SocketGuild guild, ClientState state, MemberModel model)
|
||||
{
|
||||
var entity = new SocketGuildUser(guild, guild.Discord.GetOrCreateUser(state, model.User));
|
||||
entity.Update(state, model);
|
||||
@@ -81,7 +89,7 @@ namespace Discord.WebSocket
|
||||
entity.Update(state, model, false);
|
||||
return entity;
|
||||
}
|
||||
internal void Update(ClientState state, Model model)
|
||||
internal void Update(ClientState state, MemberModel model)
|
||||
{
|
||||
base.Update(state, model.User);
|
||||
if (model.JoinedAt.IsSpecified)
|
||||
|
||||
Reference in New Issue
Block a user