Beispiel #1
0
        internal void RemoveGuildChannel(Snowflake guildId, Snowflake guildChannelId)
        {
            GuildChannels.TryRemove(guildChannelId, out _);

            if (GuildChannelIds.TryGetValue(guildId, out ConcurrentHashSet <Snowflake> guildChannelsIdSet))
            {
                guildChannelsIdSet.TryRemove(guildChannelId);
            }
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
        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;
        }