protected virtual void OnCovidMessageReceived(string data)
        {
            COVID          stats   = JsonConvert.DeserializeObject <COVID>(data);
            Action <COVID> handler = CovidMessageReceived;

            if (handler != null)
            {
                handler(stats);
            }
        }
示例#2
0
        public void WS_CovidStatsReady(COVID stats)
        {
            Task.Run(async() => {
                DateTime dateTime    = stats.date;
                DateTime yesterday   = dateTime.AddDays(-1);
                COVID yesterdayStats = await Data.APIHttpRequest <COVID>($"https://api.anastarawneh.tech/v1/covid-19/{yesterday.Year}/{yesterday.Month}/{yesterday.Day}", "GET");
                EmbedBuilder embed   = new EmbedBuilder();
                embed.WithTitle($"COVID-19 stats for {dateTime:dd/MM/yyyy}");
                embed.WithColor(Constants.IColors.Blurple);
                embed.WithDescription($"{stats.localCases} new local cases, {stats.deaths} casualties and {stats.recoveries} recoveries.");
                if (stats.cities.Total() != 0)
                {
                    embed.AddField("Amman", stats.cities.amman, true);
                    embed.AddField("Irbid", stats.cities.irbid, true);
                    embed.AddField("Zarqa", stats.cities.zarqa, true);
                    embed.AddField("Mafraq", stats.cities.mafraq, true);
                    embed.AddField("Ajloun", stats.cities.ajloun, true);
                    embed.AddField("Jerash", stats.cities.jerash, true);
                    embed.AddField("Madaba", stats.cities.madaba, true);
                    embed.AddField("Balqa", stats.cities.balqa, true);
                    embed.AddField("Karak", stats.cities.karak, true);
                    embed.AddField("Tafileh", stats.cities.tafileh, true);
                    embed.AddField("Ma'an", stats.cities.maan, true);
                    embed.AddField("Aqaba", stats.cities.aqaba, true);
                }
                decimal percentage = (decimal)stats.cases / (decimal)stats.tests * 100m;
                string moreStats   =
                    $"Total cases: {stats.totalCases}\n" +
                    $"Total casualties: {stats.totalDeaths}\n" +
                    $"Total recoveries: {stats.totalRecoveries}\n" +
                    $"Foreign cases: {stats.cases - stats.localCases}\n" +
                    $"Hospitalized cases today: {stats.hospitalized}, total: {stats.totalHospitalized}\n" +
                    $"Recovery distribution: {stats.homeRecoveries} at home, {stats.hospitalRecoveries} from hospitals\n" +
                    $"Tests today: {stats.tests}, total: {stats.totalTests}\n" +
                    $"Positive test percentage: {Math.Round(percentage, 2)}%\n" +
                    $"Active cases: {stats.active}";
                if (yesterdayStats.critical != 0)
                {
                    moreStats += $"\nYesterday's critical cases: {yesterdayStats.critical}";
                }
                if (stats.vaxRegistered != 0)
                {
                    moreStats +=
                        $"\nvaccine.jo registrants: {stats.vaxRegistered}\n" +
                        $"Vaccinated - First dose: {stats.vaxFirstDose}\n" +
                        $"Vaccinated - Second dose: {stats.vaxSecondDose}";
                }
                embed.AddField("More stats", moreStats);

                SocketTextChannel channel = Constants.IGuilds.Jordan(_client).GetTextChannel(Data.GetChnlId("covid-19-stats"));
                RestUserMessage msg       = await channel.SendMessageAsync(MentionUtils.MentionRole(773576613605933087), false, embed.Build());
                await msg.CrosspostAsync();
            });
        }
示例#3
0
        public async Task CovidStats(string date = null)
        {
            DateTime dateTime = DateTime.Today;

            if (DateTime.TryParseExact(date, "d-M-yyyy", null, System.Globalization.DateTimeStyles.None, out DateTime outDateTime))
            {
                dateTime = outDateTime;
            }
            else if (DateTime.TryParseExact(date, "d/M/yyyy", null, System.Globalization.DateTimeStyles.None, out DateTime outDateTime2))
            {
                dateTime = outDateTime2;
            }
            if (dateTime < new DateTime(2020, 10, 1))
            {
                await ReplyAsync(":x: The API only contains COVID data from 1/10/2020 and after.");

                return;
            }
            COVID stats = await Data.APIHttpRequest <COVID>($"https://api.anastarawneh.tech/v1/covid-19/{dateTime.Year}/{dateTime.Month}/{dateTime.Day}", "GET");

            dateTime = stats.date;
            DateTime yesterday      = dateTime.AddDays(-1);
            COVID    yesterdayStats = await Data.APIHttpRequest <COVID>($"https://api.anastarawneh.tech/v1/covid-19/{yesterday.Year}/{yesterday.Month}/{yesterday.Day}", "GET");

            EmbedBuilder embed = new EmbedBuilder();

            embed.WithTitle($"COVID-19 stats for {dateTime:dd/MM/yyyy}");
            embed.WithColor(Constants.IColors.Blurple);
            embed.WithDescription($"{stats.localCases} new local cases, {stats.deaths} casualties and {stats.recoveries} recoveries.");
            if (stats.cities.Total() != 0)
            {
                embed.AddField("Amman", stats.cities.amman, true);
                embed.AddField("Irbid", stats.cities.irbid, true);
                embed.AddField("Zarqa", stats.cities.zarqa, true);
                embed.AddField("Mafraq", stats.cities.mafraq, true);
                embed.AddField("Ajloun", stats.cities.ajloun, true);
                embed.AddField("Jerash", stats.cities.jerash, true);
                embed.AddField("Madaba", stats.cities.madaba, true);
                embed.AddField("Balqa", stats.cities.balqa, true);
                embed.AddField("Karak", stats.cities.karak, true);
                embed.AddField("Tafileh", stats.cities.tafileh, true);
                embed.AddField("Ma'an", stats.cities.maan, true);
                embed.AddField("Aqaba", stats.cities.aqaba, true);
            }
            decimal percentage = (decimal)stats.cases / (decimal)stats.tests * 100m;
            string  moreStats  =
                $"Total cases: {stats.totalCases}\n" +
                $"Total casualties: {stats.totalDeaths}\n" +
                $"Total recoveries: {stats.totalRecoveries}\n" +
                $"Foreign cases: {stats.cases - stats.localCases}\n" +
                $"Hospitalized cases today: {stats.hospitalized}, total: {stats.totalHospitalized}\n" +
                $"Recovery distribution: {stats.homeRecoveries} at home, {stats.hospitalRecoveries} from hospitals\n" +
                $"Tests today: {stats.tests}, total: {stats.totalTests}\n" +
                $"Positive test percentage: {Math.Round(percentage, 2)}%\n" +
                $"Active cases: {stats.active}";

            if (yesterdayStats.critical != 0)
            {
                moreStats += $"\nYesterday's critical cases: {yesterdayStats.critical}";
            }
            if (stats.vaxRegistered != 0)
            {
                moreStats +=
                    $"\nvaccine.jo registrants: {stats.vaxRegistered}\n" +
                    $"Vaccinated - First dose: {stats.vaxFirstDose}\n" +
                    $"Vaccinated - Second dose: {stats.vaxSecondDose}";
            }
            embed.AddField("More stats", moreStats);

            IUserMessage statmsg;

            if (Context.Channel.Name == "covid-19-stats")
            {
                bool statsReady = stats.date == DateTime.Today;
                if (!statsReady)
                {
                    await ReplyAsync(":x: Today's stats aren't ready yet.");

                    return;
                }
                statmsg = await ReplyAsync(MentionUtils.MentionRole(773576613605933087), false, embed.Build());

                await Context.Message.DeleteAsync();

                await statmsg.CrosspostAsync();
            }
            else
            {
                statmsg = await ReplyAsync("", false, embed.Build());
            }
        }