public static async void GetLeaderboardByPage(IHost host, string apiUrl, MySettingsConfig mySettingsConfig, TwitchBot twitchBot, string page)
        {
            using (var serviceScope = host.Services.CreateScope())
            {
                var services = serviceScope.ServiceProvider;

                try
                {
                    int    rank          = 0;
                    string lp            = "";
                    string name          = "";
                    string playersOutput = "";

                    Players players   = JsonConvert.DeserializeObject <Players>(await services.GetRequiredService <MyApplication>().Run(apiUrl, mySettingsConfig.RiotApiKey));
                    var     queryable = players.data.AsQueryable();
                    var     pager     = new Pager(queryable.Count(), Convert.ToInt32(page), 8, queryable.Count() / 8);

                    if (pager.CurrentPage > 1)
                    {
                        queryable = queryable.Skip(pager.PageSize * (pager.CurrentPage - 1));
                    }

                    if (pager.Pages.Count() > pager.PageSize)
                    {
                        queryable = queryable.Take(pager.PageSize);
                    }

                    foreach (var p in queryable)
                    {
                        name           = p.Name;
                        rank           = Convert.ToInt32(p.Rank) + 1;
                        lp             = p.Lp.Substring(0, p.Lp.IndexOf('.', 0));
                        playersOutput += $" rank:_{rank}_name:_{name}_LP:_{lp}______";
                    }
                    await twitchBot.SendMessage(playersOutput);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error Occured {ex}");
                }
            }
        }
        public static async void LookUpPlayer(IHost host, string apiUrl, MySettingsConfig mySettingsConfig, TwitchBot twitchBot, string player)
        {
            using (var serviceScope = host.Services.CreateScope())
            {
                var services = serviceScope.ServiceProvider;

                try
                {
                    int    rank      = 0;
                    string lp        = "";
                    string name      = "";
                    var    inMasters = false;

                    Players players = JsonConvert.DeserializeObject <Players>(await services.GetRequiredService <MyApplication>().Run(apiUrl, mySettingsConfig.RiotApiKey));

                    foreach (var p in players.data)
                    {
                        if (p.Name.ToLower() == player.ToLower())
                        {
                            inMasters = true;
                            name      = p.Name;
                            rank      = Convert.ToInt32(p.Rank) + 1;
                            lp        = p.Lp.Substring(0, p.Lp.IndexOf('.', 0));
                        }
                    }

                    if (inMasters)
                    {
                        await twitchBot.SendMessage($"{name}'s rank is {rank} and their LP is {lp}.");
                    }
                    else
                    {
                        await twitchBot.SendMessage($"{player} is not in masters KEKW");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error Occured {ex}");
                }
            }
        }
        static async Task Main(string[] args)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                                .AddEnvironmentVariables();

            IConfigurationRoot configuration = configBuilder.Build();
            var mySettingsConfig             = new MySettingsConfig();

            configuration.GetSection("MySettings").Bind(mySettingsConfig);

            var builder = new HostBuilder()
                          .ConfigureServices((hostContext, services) =>
            {
                services.AddHttpClient();
                services.AddTransient <MyApplication>();
            }).UseConsoleLifetime();

            var host = builder.Build();

            var twitchBot = new TwitchBot(mySettingsConfig.Ip, mySettingsConfig.Port, mySettingsConfig.UserName, mySettingsConfig.Password, mySettingsConfig.Channel);

            twitchBot.Start().SafeFireAndForget();

            await twitchBot.JoinChannel();

            await twitchBot.SendMessage("SqweebyBot has started listening.");

            twitchBot.OnMessage += async(sender, twitchChatMessage) =>
            {
                var apiUrl = "";

                if (twitchChatMessage.Message.StartsWith("!rank"))
                {
                    var name = twitchChatMessage.Message.Substring(twitchChatMessage.Message.IndexOf(' ') + 1);

                    if (twitchChatMessage.Message.Split(' ').First().ToLower() == "!rank")
                    {
                        await twitchBot.SendMessage($"Type !rankna for Americas !rankeu for Europe !ranksea for SEA and !rankasia for Asia.");

                        return;
                    }
                    else if (twitchChatMessage.Message.Split(' ').First().ToLower() == "!rankna")
                    {
                        apiUrl = "https://americas.api.riotgames.com/lor/ranked/v1/leaderboards";
                        LookUpPlayer(host, apiUrl, mySettingsConfig, twitchBot, name);
                    }
                    else if (twitchChatMessage.Message.Split(' ').First().ToLower() == "!rankeu")
                    {
                        apiUrl = "https://europe.api.riotgames.com/lor/ranked/v1/leaderboards";
                        LookUpPlayer(host, apiUrl, mySettingsConfig, twitchBot, name);
                    }
                    else if (twitchChatMessage.Message.Split(' ').First().ToLower() == "!ranksea")
                    {
                        apiUrl = "https://sea.api.riotgames.com/lor/ranked/v1/leaderboards";
                        LookUpPlayer(host, apiUrl, mySettingsConfig, twitchBot, name);
                    }
                    else if (twitchChatMessage.Message.Split(' ').First().ToLower() == "!rankasia")
                    {
                        apiUrl = "https://asia.api.riotgames.com/lor/ranked/v1/leaderboards";
                        LookUpPlayer(host, apiUrl, mySettingsConfig, twitchBot, name);
                    }
                    else
                    {
                        return;
                    }
                }
                else if (twitchChatMessage.Message.StartsWith("!leaderboard"))
                {
                    var words = twitchChatMessage.Message.Split(' ');
                    if (twitchChatMessage.Message.Split(' ').First().ToLower() == "!leaderboard")
                    {
                        await twitchBot.SendMessage($"Type '!leaderboardna page 1' for Americas '!leaderboardeu page 1' for Europe '!leaderboardsea page 1' for SEA and '!leaderboardasia page 1' for Asia.");

                        return;
                    }
                    else if (words[0].ToLower() == "!leaderboardna" && words[1].ToLower() == "page" && !string.IsNullOrWhiteSpace(words[2]))
                    {
                        apiUrl = "https://americas.api.riotgames.com/lor/ranked/v1/leaderboards";
                        // Check if the thirdWord is a page number.
                        if (!long.TryParse(words[2], out long number1))
                        {
                            await twitchBot.SendMessage($"{words[2]} is not a valid page number. Try !rankna page 1");

                            return;
                        }

                        GetLeaderboardByPage(host, apiUrl, mySettingsConfig, twitchBot, words[2]);
                    }
                    else if (words[0].ToLower() == "!leaderboardeu" && words[1].ToLower() == "page" && !string.IsNullOrWhiteSpace(words[2]))
                    {
                        apiUrl = "https://europe.api.riotgames.com/lor/ranked/v1/leaderboards";
                        // Check if the thirdWord is a page number.
                        if (!long.TryParse(words[2], out long number1))
                        {
                            await twitchBot.SendMessage($"{words[2]} is not a valid page number. Try !rankna page 1");

                            return;
                        }

                        GetLeaderboardByPage(host, apiUrl, mySettingsConfig, twitchBot, words[2]);
                    }
                    else if (words[0].ToLower() == "!leaderboardsea" && words[1].ToLower() == "page" && !string.IsNullOrWhiteSpace(words[2]))
                    {
                        apiUrl = "https://sea.api.riotgames.com/lor/ranked/v1/leaderboards";
                        // Check if the thirdWord is a page number.
                        if (!long.TryParse(words[2], out long number1))
                        {
                            await twitchBot.SendMessage($"{words[2]} is not a valid page number. Try !rankna page 1");

                            return;
                        }

                        GetLeaderboardByPage(host, apiUrl, mySettingsConfig, twitchBot, words[2]);
                    }
                    else if (words[0].ToLower() == "!leaderboardasia" && words[1].ToLower() == "page" && !string.IsNullOrWhiteSpace(words[2]))
                    {
                        apiUrl = "https://asia.api.riotgames.com/lor/ranked/v1/leaderboards";
                        // Check if the thirdWord is a page number.
                        if (!long.TryParse(words[2], out long number1))
                        {
                            await twitchBot.SendMessage($"{words[2]} is not a valid page number. Try !rankna page 1");

                            return;
                        }

                        GetLeaderboardByPage(host, apiUrl, mySettingsConfig, twitchBot, words[2]);
                    }
                }
                else
                {
                    return;
                }
            };

            await Task.Delay(-1);
        }