示例#1
0
        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()));
        }
示例#2
0
        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()));
            }
        }