コード例 #1
0
        public Task SearchAnime([Remainder] string anime)
        {
            MALAnimeModel model = GetAnimeByName(anime);
            var           embed = new EmbedBuilder()
            {
                Title        = $"{model.title}\n*{model.title_english}*",
                Color        = Color.Orange,
                ThumbnailUrl = model.image_url,
                ImageUrl     = model.image_url,
                Description  = model.synopsis,
            };

            embed.AddField("Rating: ", model.score ?? 0);

            foreach (MALAnimeStudio studio in model.studios)
            {
                embed.AddField("Studio: ", studio.name);
            }

            string genres = String.Empty;

            foreach (MALGenres genre in model.genres)
            {
                genres += (genre.name + "\n");
            }
            embed.AddField("Genres: ", genres);

            embed.AddField("Episode Count: ", model.episodes ?? 0);
            embed.AddField("Episode Duration: ", model.duration);

            return(ReplyAsync(embed: embed.Build()));
        }
コード例 #2
0
        public MALAnimeModel GetAnimeByName(string anime)
        {
            var           searchModel = GetAnimeSearchByName(anime);
            var           response    = client.GetAsync($"{base_url}/anime/{searchModel.mal_id}");
            var           json        = response.Result.Content.ReadAsStringAsync().Result;
            MALAnimeModel model       = JsonConvert.DeserializeObject <MALAnimeModel>(json);

            return(model);
        }
コード例 #3
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()));
        }
コード例 #4
0
        public Task GetVoiceActorsFromAnime([Remainder] string anime)
        {
            MALAnimeModel       model      = GetAnimeSearchByName(anime);
            var                 response   = client.GetAsync($"{base_url}/anime/{model.mal_id}/characters_staff");
            var                 json       = response.Result.Content.ReadAsStringAsync().Result;
            List <MALCharacter> characters = JsonConvert.DeserializeObject <MALCharactersModel>(json).characters;
            //TODO: GET ALL CHARACTERS LMAO
            MALCharacter c     = characters.FirstOrDefault();
            var          embed = new EmbedBuilder()
            {
                Title        = c.name,
                ThumbnailUrl = Context.User.GetAvatarUrl(),
                ImageUrl     = c.image_url,
                Color        = Color.Orange
            };

            foreach (MALVoiceActor va in c.voice_actors)
            {
                embed.AddField(va.language, va.name);
            }

            return(ReplyAsync(embed: embed.Build()));
        }
コード例 #5
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()));
            }
        }