#nullable disable using AngleSharp; using AngleSharp.Html.Dom; using EllieBot.Modules.Searches.Services; namespace EllieBot.Modules.Searches; public partial class Searches { [Group] public partial class AnimeSearchCommands : EllieModule<AnimeSearchService> { [Cmd] public async Task Anime([Leftover] string query) { if (string.IsNullOrWhiteSpace(query)) return; var animeData = await _service.GetAnimeData(query); if (animeData is null) { await Response().Error(strs.failed_finding_anime).SendAsync(); return; } var embed = CreateEmbed() .WithOkColor() .WithDescription(animeData.Synopsis.Replace("<br>", Environment.NewLine, StringComparison.InvariantCulture)) .WithTitle(animeData.TitleEnglish) .WithUrl(animeData.Link) .WithImageUrl(animeData.ImageUrlLarge) .AddField(GetText(strs.episodes), animeData.TotalEpisodes.ToString(), true) .AddField(GetText(strs.status), animeData.AiringStatus, true) .AddField(GetText(strs.genres), string.Join(",\n", animeData.Genres.Any() ? animeData.Genres : ["none"]), true) .WithFooter($"{GetText(strs.score)} {animeData.AverageScore} / 100"); await Response().Embed(embed).SendAsync(); } [Cmd] [RequireContext(ContextType.Guild)] public async Task Manga([Leftover] string query) { if (string.IsNullOrWhiteSpace(query)) return; var mangaData = await _service.GetMangaData(query); if (mangaData is null) { await Response().Error(strs.failed_finding_manga).SendAsync(); return; } var embed = CreateEmbed() .WithOkColor() .WithDescription(mangaData.Synopsis.Replace("<br>", Environment.NewLine, StringComparison.InvariantCulture)) .WithTitle(mangaData.TitleEnglish) .WithUrl(mangaData.Link) .WithImageUrl(mangaData.ImageUrlLge) .AddField(GetText(strs.chapters), mangaData.TotalChapters.ToString(), true) .AddField(GetText(strs.status), mangaData.PublishingStatus, true) .AddField(GetText(strs.genres), string.Join(",\n", mangaData.Genres.Any() ? mangaData.Genres : ["none"]), true) .WithFooter($"{GetText(strs.score)} {mangaData.AverageScore} / 100"); await Response().Embed(embed).SendAsync(); } } }