geekbot/src/Bot/Commands/Utils/Evergiven.cs

50 lines
No EOL
1.9 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using Discord.Commands;
using Geekbot.Bot.Utils;
using Geekbot.Core;
using Geekbot.Core.ErrorHandling;
using Geekbot.Core.GuildSettingsManager;
using HtmlAgilityPack;
namespace Geekbot.Bot.Commands.Utils
{
public class Evergiven : GeekbotCommandBase
{
public Evergiven(IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager) : base(errorHandler, guildSettingsManager)
{
}
[Command("evergiven", RunMode = RunMode.Async)]
[Summary("Check if the evergiven ship is still stuck in the suez canal")]
public async Task GetStatus()
{
try
{
var httpClient = HttpAbstractions.CreateDefaultClient();
var response = await httpClient.GetAsync("https://istheshipstillstuck.com/");
response.EnsureSuccessStatusCode();
var stringResponse = await response.Content.ReadAsStringAsync();
var doc = new HtmlDocument();
doc.LoadHtml(stringResponse);
var yesOrNoNode = doc.DocumentNode.SelectNodes("//a").FirstOrDefault();
if (yesOrNoNode?.InnerHtml == "Yes.")
{
var stuckSince = DateTime.Now - new DateTime(2021, 03, 23, 10, 39, 0);
var formatted = DateLocalization.FormatDateTimeAsRemaining(stuckSince);
await ReplyAsync(string.Format(Localization.Evergiven.StillStuck, formatted));// $"Ever Given is **still stuck** in the suez canal! It has been stuck for {formatted}");
return;
}
await ReplyAsync(Localization.Evergiven.NotStuckAnymore);
}
catch (Exception e)
{
await ErrorHandler.HandleCommandException(e, Context);
}
}
}
}