@@ -29,11 +29,12 @@ namespace Discord
[JsonIgnore]
[JsonIgnore]
public User Owner { get; private set; }
public User Owner { get; private set; }
private string _ownerId;
private string _ownerId;
/// <summary> Returns the AFK voice channel for this server (see AFKTimeout). </summary>
/// <summary> Returns the AFK voice channel for this server (see AFKTimeout). </summary>
[JsonIgnore]
[JsonIgnore]
public Channel AFKChannel { get; private set; }
public Channel AFKChannel => _afkChannel.Value;
private Reference<Channel> _afkChannel;
/// <summary> Returns the default channel for this server. </summary>
/// <summary> Returns the default channel for this server. </summary>
[JsonIgnore]
[JsonIgnore]
public Channel DefaultChannel { get; private set; }
public Channel DefaultChannel { get; private set; }
@@ -75,6 +76,8 @@ namespace Discord
internal Server(DiscordClient client, string id)
internal Server(DiscordClient client, string id)
: base(client, id)
: base(client, id)
{
{
_afkChannel = new Reference<Channel>(x => _client.Channels[x]);
//Global Cache
//Global Cache
_channels = new ConcurrentDictionary<string, Channel>();
_channels = new ConcurrentDictionary<string, Channel>();
_members = new ConcurrentDictionary<string, User>();
_members = new ConcurrentDictionary<string, User>();
@@ -83,8 +86,11 @@ namespace Discord
//Local Cache
//Local Cache
_bans = new ConcurrentDictionary<string, bool>();
_bans = new ConcurrentDictionary<string, bool>();
_invites = new ConcurrentDictionary<string, Invite>();
_invites = new ConcurrentDictionary<string, Invite>();
}
internal override void LoadReferences() { }
}
internal override void LoadReferences()
{
_afkChannel.Load();
}
internal override void UnloadReferences()
internal override void UnloadReferences()
{
{
//Global Cache
//Global Cache
@@ -113,15 +119,15 @@ namespace Discord
invites.Clear();
invites.Clear();
_bans.Clear();
_bans.Clear();
}
_afkChannel.Unload();
}
internal void Update(GuildInfo model)
internal void Update(GuildInfo model)
{
{
//Can be null
AFKChannel = _client.Channels[model.AFKChannelId];
if (model.AFKTimeout != null)
if (model.AFKTimeout != null)
AFKTimeout = model.AFKTimeout.Value;
AFKTimeout = model.AFKTimeout.Value;
if (model.AFKChannelId != null)
if (model.JoinedAt != null)
if (model.JoinedAt != null)
JoinedAt = model.JoinedAt.Value;
JoinedAt = model.JoinedAt.Value;
if (model.Name != null)
if (model.Name != null)
@@ -143,6 +149,8 @@ namespace Discord
role.Update(x);
role.Update(x);
}
}
}
}
_afkChannel.Id = model.AFKChannelId; //Can be null
}
}
internal void Update(ExtendedGuildInfo model)
internal void Update(ExtendedGuildInfo model)
{
{