remove the !corona command
This commit is contained in:
parent
c1b5a4d449
commit
15e1d10839
3 changed files with 0 additions and 148 deletions
|
@ -1,19 +0,0 @@
|
|||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Geekbot.Bot.Commands.Utils.Corona
|
||||
{
|
||||
public record CoronaApiCountryResponseDto
|
||||
{
|
||||
[JsonPropertyName("country")]
|
||||
public string Country { get; init; }
|
||||
|
||||
[JsonPropertyName("cases")]
|
||||
public decimal Cases { get; init; }
|
||||
|
||||
[JsonPropertyName("deaths")]
|
||||
public decimal Deaths { get; init; }
|
||||
|
||||
[JsonPropertyName("recovered")]
|
||||
public decimal Recovered { get; init; }
|
||||
}
|
||||
}
|
|
@ -1,119 +0,0 @@
|
|||
using System.Text;
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using Geekbot.Core;
|
||||
using Geekbot.Core.Converters;
|
||||
using Geekbot.Core.ErrorHandling;
|
||||
using Geekbot.Core.Extensions;
|
||||
using Geekbot.Core.GuildSettingsManager;
|
||||
using Localization = Geekbot.Core.Localization;
|
||||
|
||||
namespace Geekbot.Bot.Commands.Utils.Corona
|
||||
{
|
||||
public class CoronaStats : GeekbotCommandBase
|
||||
{
|
||||
|
||||
public CoronaStats(IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager) : base(errorHandler, guildSettingsManager)
|
||||
{
|
||||
}
|
||||
|
||||
[Command("corona", RunMode = RunMode.Async)]
|
||||
[Summary("Get the latest worldwide corona statistics")]
|
||||
public async Task Summary([Summary("CountryCode")] string countryCode = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var summary = await GetCoronaInfo(countryCode);
|
||||
if (summary == null)
|
||||
{
|
||||
await Context.Channel.SendMessageAsync($"`{countryCode}` is not a valid country code");
|
||||
return;
|
||||
}
|
||||
|
||||
var activeCases = summary.Cases - (summary.Recovered + summary.Deaths);
|
||||
|
||||
string CalculatePercentage(decimal i) => (i / summary.Cases).ToString("#0.##%");
|
||||
var activePercent = CalculatePercentage(activeCases);
|
||||
var recoveredPercentage = CalculatePercentage(summary.Recovered);
|
||||
var deathsPercentage = CalculatePercentage(summary.Deaths);
|
||||
|
||||
var numberFormat = "#,#";
|
||||
var totalFormatted = summary.Cases.ToString(numberFormat);
|
||||
var activeFormatted = activeCases.ToString(numberFormat);
|
||||
var recoveredFormatted = summary.Recovered.ToString(numberFormat);
|
||||
var deathsFormatted = summary.Deaths.ToString(numberFormat);
|
||||
|
||||
var embedTitleBuilder = new StringBuilder();
|
||||
embedTitleBuilder.Append(Localization.Corona.ConfirmedCases);
|
||||
if (!string.IsNullOrEmpty(summary.Country))
|
||||
{
|
||||
embedTitleBuilder.Append(" - ");
|
||||
embedTitleBuilder.Append(EmojiConverter.CountryCodeToEmoji(summary.Country));
|
||||
}
|
||||
|
||||
var eb = new EmbedBuilder
|
||||
{
|
||||
Author = new EmbedAuthorBuilder
|
||||
{
|
||||
Name = embedTitleBuilder.ToString(),
|
||||
IconUrl = "https://www.redcross.org/content/dam/icons/disasters/virus/Virus-1000x1000-R-Pl.png"
|
||||
},
|
||||
Footer = new EmbedFooterBuilder
|
||||
{
|
||||
Text = $"{Localization.Corona.Source}: covid19-api.org",
|
||||
},
|
||||
Color = Color.Red
|
||||
};
|
||||
eb.AddField(Localization.Corona.Total, totalFormatted);
|
||||
eb.AddInlineField(Localization.Corona.Active, $"{activeFormatted} ({activePercent})");
|
||||
eb.AddInlineField(Localization.Corona.Recovered, $"{recoveredFormatted} ({recoveredPercentage})");
|
||||
eb.AddInlineField(Localization.Corona.Deaths, $"{deathsFormatted} ({deathsPercentage})");
|
||||
|
||||
await Context.Channel.SendMessageAsync(String.Empty, false, eb.Build());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
await ErrorHandler.HandleCommandException(e, Context);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<CoronaTotalDto> GetCoronaInfo(string countryCode = null)
|
||||
{
|
||||
var allCountries = await HttpAbstractions.Get<List<CoronaApiCountryResponseDto>>(new Uri("https://covid19-api.org/api/status"));
|
||||
|
||||
if (string.IsNullOrEmpty(countryCode))
|
||||
{
|
||||
return allCountries.Aggregate(
|
||||
new CoronaTotalDto(),
|
||||
(accumulate, source) =>
|
||||
{
|
||||
accumulate.Cases += source.Cases;
|
||||
accumulate.Deaths += source.Deaths;
|
||||
accumulate.Recovered += source.Recovered;
|
||||
return accumulate;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if (countryCode.Length != 2)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var upcasedCountryCode = countryCode.ToUpper();
|
||||
var countryStats = allCountries.Find(x => x.Country == upcasedCountryCode);
|
||||
if (countryStats == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new CoronaTotalDto()
|
||||
{
|
||||
Country = upcasedCountryCode,
|
||||
Cases = countryStats.Cases,
|
||||
Deaths = countryStats.Deaths,
|
||||
Recovered = countryStats.Recovered,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
namespace Geekbot.Bot.Commands.Utils.Corona
|
||||
{
|
||||
public record CoronaTotalDto
|
||||
{
|
||||
public string Country { get; set; }
|
||||
public decimal Cases { get; set; }
|
||||
public decimal Deaths { get; set; }
|
||||
public decimal Recovered { get; set; }
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue