@@ -7,20 +7,20 @@ namespace Discord.API | |||||
[JsonProperty("id")] | [JsonProperty("id")] | ||||
public ulong Id { get; set; } | public ulong Id { get; set; } | ||||
[JsonProperty("username")] | [JsonProperty("username")] | ||||
public string Username { get; set; } | |||||
public Optional<string> Username { get; set; } | |||||
[JsonProperty("discriminator")] | [JsonProperty("discriminator")] | ||||
public string Discriminator { get; set; } | |||||
public Optional<string> Discriminator { get; set; } | |||||
[JsonProperty("bot")] | [JsonProperty("bot")] | ||||
public bool Bot { get; set; } | |||||
public Optional<bool> Bot { get; set; } | |||||
[JsonProperty("avatar")] | [JsonProperty("avatar")] | ||||
public string Avatar { get; set; } | |||||
public Optional<string> Avatar { get; set; } | |||||
//CurrentUser | //CurrentUser | ||||
[JsonProperty("verified")] | [JsonProperty("verified")] | ||||
public bool Verified { get; set; } | |||||
public Optional<bool> Verified { get; set; } | |||||
[JsonProperty("email")] | [JsonProperty("email")] | ||||
public string Email { get; set; } | |||||
public Optional<string> Email { get; set; } | |||||
[JsonProperty("mfa_enabled")] | [JsonProperty("mfa_enabled")] | ||||
public bool MfaEnabled { get; set; } | |||||
public Optional<bool> MfaEnabled { get; set; } | |||||
} | } | ||||
} | } |
@@ -58,9 +58,16 @@ namespace Discord | |||||
internal void AddChannel(ICachedChannel channel) | internal void AddChannel(ICachedChannel channel) | ||||
{ | { | ||||
_channels[channel.Id] = channel; | _channels[channel.Id] = channel; | ||||
var dmChannel = channel as CachedDMChannel; | var dmChannel = channel as CachedDMChannel; | ||||
if (dmChannel != null) | if (dmChannel != null) | ||||
_dmChannels[dmChannel.Recipient.Id] = dmChannel; | _dmChannels[dmChannel.Recipient.Id] = dmChannel; | ||||
else | |||||
{ | |||||
var groupChannel = channel as CachedGroupChannel; | |||||
if (groupChannel != null) | |||||
_groupChannels.TryAdd(groupChannel.Id); | |||||
} | |||||
} | } | ||||
internal ICachedChannel RemoveChannel(ulong id) | internal ICachedChannel RemoveChannel(ulong id) | ||||
{ | { | ||||
@@ -73,6 +80,12 @@ namespace Discord | |||||
CachedDMChannel ignored; | CachedDMChannel ignored; | ||||
_dmChannels.TryRemove(dmChannel.Recipient.Id, out ignored); | _dmChannels.TryRemove(dmChannel.Recipient.Id, out ignored); | ||||
} | } | ||||
else | |||||
{ | |||||
var groupChannel = channel as CachedGroupChannel; | |||||
if (groupChannel != null) | |||||
_groupChannels.TryRemove(id); | |||||
} | |||||
return channel; | return channel; | ||||
} | } | ||||
return null; | return null; | ||||
@@ -528,7 +528,6 @@ namespace Discord | |||||
var currentUser = new CachedSelfUser(this, data.User); | var currentUser = new CachedSelfUser(this, data.User); | ||||
int unavailableGuilds = 0; | int unavailableGuilds = 0; | ||||
//dataStore.GetOrAddUser(data.User.Id, _ => currentUser); | |||||
for (int i = 0; i < data.Guilds.Length; i++) | for (int i = 0; i < data.Guilds.Length; i++) | ||||
{ | { | ||||
var model = data.Guilds[i]; | var model = data.Guilds[i]; | ||||
@@ -31,9 +31,12 @@ namespace Discord | |||||
base.Update(model, source); | base.Update(model, source); | ||||
Email = model.Email; | |||||
IsVerified = model.Verified; | |||||
IsMfaEnabled = model.MfaEnabled; | |||||
if (model.Email.IsSpecified) | |||||
Email = model.Email.Value; | |||||
if (model.Verified.IsSpecified) | |||||
IsVerified = model.Verified.Value; | |||||
if (model.MfaEnabled.IsSpecified) | |||||
IsMfaEnabled = model.MfaEnabled.Value; | |||||
} | } | ||||
public async Task UpdateAsync() | public async Task UpdateAsync() | ||||
@@ -31,10 +31,14 @@ namespace Discord | |||||
{ | { | ||||
if (source == UpdateSource.Rest && IsAttached) return; | if (source == UpdateSource.Rest && IsAttached) return; | ||||
_avatarId = model.Avatar; | |||||
DiscriminatorValue = ushort.Parse(model.Discriminator); | |||||
IsBot = model.Bot; | |||||
Username = model.Username; | |||||
if (model.Avatar.IsSpecified) | |||||
_avatarId = model.Avatar.Value; | |||||
if (model.Discriminator.IsSpecified) | |||||
DiscriminatorValue = ushort.Parse(model.Discriminator.Value); | |||||
if (model.Bot.IsSpecified) | |||||
IsBot = model.Bot.Value; | |||||
if (model.Username.IsSpecified) | |||||
Username = model.Username.Value; | |||||
} | } | ||||
public override string ToString() => $"{Username}#{Discriminator}"; | public override string ToString() => $"{Username}#{Discriminator}"; | ||||