예제 #1
0
        private Task StoreGuildRolesAsync(SocketGuild guild)
        {
            IReadOnlyCollection <SocketRole> rolesCollection = guild.Roles;
            Dictionary <string, SocketRole>  guildroles      = CreateRoleDictionary(rolesCollection.GetEnumerator(), rolesCollection.Count);

            Console.Out.WriteLine($"{DateTime.UtcNow.ToString("hh:mm:ss")} [Guild Info Service]: Successfully saved roles for the guild {guild.Name}");
            return(Task.Run(() => GuildRoles.Add(guild.Id, guildroles)));
        }
예제 #2
0
        public GuildRole GetRole(GuildRoles roles, string roleName)
        {
            GuildRole role = new GuildRole();

            roleName = roleName.ToUpper();
            role     = roles.Where(x => x.Name.ToUpper() == roleName).FirstOrDefault();

            return(role);
        }
예제 #3
0
        public GuildRoles GetRoles(TokenResponse tokenResponse, string guildId)
        {
            GuildRoles roles = new GuildRoles();

            using (WebClient client = new WebClient())
            {
                client.Headers.Add(HttpRequestHeader.Authorization, tokenResponse.Type + " " + tokenResponse.AccessToken);
                try
                {
                    IDiscordUriBuilder uriBuilder = new DiscordUriBuilder();
                    string             uri        = uriBuilder.AddPath(roles.PathUrl.Replace("{guild}", guildId))
                                                    .Build();
                    string response = client.DownloadString(uri);

                    roles = serializer.Deserialize <GuildRoles>(response);
                }
                catch (Exception) { }
            }
            return(roles);
        }
예제 #4
0
 private Task ClearGuildRolesAsync(SocketGuild guild)
 {
     return(Task.Run(() => GuildRoles.Remove(guild.Id)));
 }
예제 #5
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;
        }