internal void RemoveGuildChannel(Snowflake guildId, Snowflake guildChannelId) { GuildChannels.TryRemove(guildChannelId, out _); if (GuildChannelIds.TryGetValue(guildId, out ConcurrentHashSet <Snowflake> guildChannelsIdSet)) { guildChannelsIdSet.TryRemove(guildChannelId); } }
public void Clear() { guildIds.Clear(); unavailableGuildIds.Clear(); GuildChannelIds.Clear(); Users.Clear(); DMChannels.Clear(); Guilds.Clear(); GuildMetadata.Clear(); GuildChannels.Clear(); GuildMembers.Clear(); GuildPresences.Clear(); GuildVoiceStates.Clear(); }
public void UpdateSettings(SettingsBase settings) { if (settings is Guild guild) { Guilds.Update(guild); } else if (settings is GuildChannel gChannel) { GuildChannels.Update(gChannel); } else if (settings is Group group) { Groups.Update(group); } else if (settings is DM dm) { DMs.Update(dm); } }
public override void Patch(Dictionary <string, JsonElement> Data) { //if (!Partial) return; Console.WriteLine($"Patching guild data for {this.Id}"); JsonElement temp; long tempL; #region String values Name = Data["name"].GetString(); Icon = Data["icon"].GetString(); Splash = Data["splash"].GetString(); DiscoverySplash = Data["discovery_splash"].ToString(); Region = Data["region"].ToString(); ArrayEnumerator _Features = Data["features"].EnumerateArray(); Features = new string[Data["features"].GetArrayLength()]; for (int i = 0; i < Features.Length; i++) { _Features.MoveNext(); Features[i] = _Features.Current.GetString(); } #endregion String values #region Integer values AfkTimeout = Data["afk_timeout"].GetInt32(); VerificationLevel = Data["verification_level"].GetInt32(); DefaultNotifications = Data["default_message_notifications"].GetInt32(); ExplicitContentFilter = Data["explicit_content_filter"].GetInt32(); MfaLevel = Data["mfa_level"].GetInt32(); if (Data.TryGetValue("member_count", out temp)) { MemberCount = temp.GetInt32(); } if (Data.TryGetValue("max_presences", out temp)) { MaxPresences = temp.GetInt32(); } if (Data.TryGetValue("max_members", out temp)) { MaxMembers = temp.GetInt32(); } #endregion Integer values #region Long values OwnerId = long.Parse(Data["owner_id"].GetString()); if (Data.TryGetValue("afk_channel_id", out temp) && long.TryParse(temp.GetString(), out tempL)) { AfkChannelId = tempL; } if (Data.TryGetValue("application_id", out temp) && long.TryParse(temp.GetString(), out tempL)) { ApplicationId = tempL; } if (long.TryParse(Data["system_channel_id"].GetString(), out tempL)) { SystemChannelId = tempL; } if (long.TryParse(Data["rules_channel_id"].GetString(), out tempL)) { RulesChannelId = tempL; } if (Data.TryGetValue("widget_channel_id", out temp) && long.TryParse(temp.GetString(), out tempL)) { WidgetChannelId = tempL; } #endregion Long values #region Bool values if (Data.TryGetValue("widget_enabled", out temp)) { WidgetEnabled = temp.GetBoolean(); } if (Data.TryGetValue("large", out temp)) { Large = temp.GetBoolean(); } if (Data.TryGetValue("unavailable", out temp)) { Unavailable = temp.GetBoolean(); } #endregion Bool values if (Data.TryGetValue("joined_at", out temp)) { JoinedAt = DateTime.Parse(temp.GetString()); } if (_Patched) { return; } // TODO: Create role objects Roles = new GuildRoles(this.Client, this); ArrayEnumerator _Roles = Data["roles"].EnumerateArray(); foreach (JsonElement Role in _Roles) { Roles.CreateEntry(Role); } // TODO: Create emoji objects Emojis = new GuildEmojis(this.Client, this); ArrayEnumerator _Emojis = Data["emojis"].EnumerateArray(); foreach (JsonElement Role in _Roles) { Emojis.CreateEntry(Role); } // TODO: AFK channel // TODO: System channel // TODO: Rules channel // TODO: Channels Channels = new GuildChannels(this.Client, this); ArrayEnumerator _Channels = Data["channels"].EnumerateArray(); foreach (JsonElement Channel in _Channels) { Channels.CreateEntry(Channel); } // TODO: Members Members = new GuildMembers(Client, this); ArrayEnumerator _Members = Data["members"].EnumerateArray(); foreach (JsonElement Member in _Members) { //Console.WriteLine(Member); Members.CreateEntry(Member); } // TODO: Presences // TODO: Voice states _Patched = true; }