protected virtual void OnCovidMessageReceived(string data) { COVID stats = JsonConvert.DeserializeObject <COVID>(data); Action <COVID> handler = CovidMessageReceived; if (handler != null) { handler(stats); } }
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(); }); }
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()); } }