50 lines
No EOL
1.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |