public Task AnimeQuotes([Remainder] string anime = null) { Random rand = new Random(); MALQuoteModel quote = new MALQuoteModel(); if (anime == null) { var response = client.GetAsync("https://animechan.vercel.app/api/random"); var json = response.Result.Content.ReadAsStringAsync().Result; quote = JsonConvert.DeserializeObject <MALQuoteModel>(json); } else { MALAnimeModel animeModel = GetAnimeByName(anime); var response = client.GetAsync($"https://animechan.vercel.app/api/quotes/anime?title={anime}"); var json = response.Result.Content.ReadAsStringAsync().Result; if (json.Contains("No related quotes found!")) { response = client.GetAsync($"https://animechan.vercel.app/api/quotes/anime?title={animeModel.title}"); json = response.Result.Content.ReadAsStringAsync().Result; } if (json.Contains("No related quotes found!")) { return(ReplyAsync(embed: InfoModule.GetErrorEmbed().WithDescription("Typed Anime Wrong/Could Not Find One").Build())); } List <MALQuoteModel> quotes = JsonConvert.DeserializeObject <List <MALQuoteModel> >(json); quote = quotes[rand.Next(0, quotes.Count)]; } quote.counter = 5; using (StreamWriter file = File.CreateText(answerPath)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, quote); } var embed = new EmbedBuilder() { Title = "Anime Quote Game", Description = quote.quote, Color = Color.Gold, }; return(ReplyAsync(embed: embed.Build())); }
public Task AnswerQuote([Remainder] string guess = "") { MALQuoteModel quoteModel = new MALQuoteModel(); using (StreamReader r = new StreamReader(answerPath)) { string json = r.ReadToEnd(); quoteModel = JsonConvert.DeserializeObject <MALQuoteModel>(json); } if (quoteModel != null) { quoteModel.counter--; string hintCheck = quoteModel.hint ?? string.Empty; int hintLength = hintCheck.Replace("^", "").Replace("-", "").Replace(" ", "").Length; MALAnimeModel animeModel = GetAnimeByName(quoteModel.anime); if (guess.ToLower() == quoteModel.anime.ToLower() || guess.ToLower() == animeModel.title_english.ToLower() || guess.ToLower() == quoteModel.character.ToLower() || CycleNames(guess, quoteModel.character)) { using (StreamWriter file = File.CreateText(answerPath)) { file.WriteLine(String.Empty); } var embed = new EmbedBuilder() { Title = $"#1 Victory Royal!\nQuote Has Been Reset!!", ImageUrl = Context.User.GetAvatarUrl(), Color = Color.Green, }; embed.AddField("Quote: ", quoteModel.quote); embed.AddField("By: ", quoteModel.character); embed.AddField("From: ", quoteModel.anime); return(ReplyAsync(embed: embed.Build())); } else if (quoteModel.counter <= 0 || hintLength + 1 == quoteModel.character.Replace(" ", "").Length) { using (StreamWriter file = File.CreateText(answerPath)) { file.WriteLine(String.Empty); } var embed = new EmbedBuilder() { Title = $"No one got it :confused:", Color = Color.Blue, }; embed.AddField("Quote: ", quoteModel.quote); embed.AddField("By: ", quoteModel.character); embed.AddField("From: ", quoteModel.anime); return(ReplyAsync(embed: embed.Build())); } else { Random ran = new Random(); int letterIndex = ran.Next(0, quoteModel.character.Length); string hint = quoteModel.hint ?? EmptyHint(quoteModel.character); while (quoteModel.character.ElementAt(letterIndex) == ' ' || hint.ElementAt(letterIndex * 2) == quoteModel.character.ElementAt(letterIndex)) { letterIndex = ran.Next(0, quoteModel.character.Length); } char[] h = hint.ToCharArray(); h[letterIndex * 2] = quoteModel.character.ElementAt(letterIndex); hint = new string(h); quoteModel.hint = hint; using (StreamWriter file = File.CreateText(answerPath)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, quoteModel); } var embed = new EmbedBuilder() { Title = "Try Again :clown:", Color = Color.Red, ThumbnailUrl = Context.User.GetAvatarUrl() }; embed.AddField("Guess: ", guess); embed.AddField("Quote: ", quoteModel.quote); embed.AddField("Hint: ", quoteModel.hint); embed.AddField("Attempts Left: ", quoteModel.counter); return(ReplyAsync(embed: embed.Build())); } } else { var embed = new EmbedBuilder() { Title = "There is no Quote to Guess", Color = Color.Red }; return(ReplyAsync(embed: embed.Build())); } }