示例#1
0
        private string GetAvailableParameters()
        {
            using (var databaseContext = new StaticDBContext())
            {
                var stringBuilder = new StringBuilder();
                var categories    = databaseContext.Media
                                    .Where(p => p.Command.Name == "YouTube")
                                    .Select(p =>
                                            new
                {
                    CategoryName = p.Category.Name,
                    MediaName    = p.Names.FirstOrDefault().Name
                })
                                    .AsEnumerable()
                                    .GroupBy(p => p.CategoryName)
                                    .OrderBy(p => p.Key)
                                    .ToList();

                foreach (var category in categories)
                {
                    var sortedCategory = category.OrderBy(p => p.MediaName);
                    var items          = sortedCategory.Select(p => p.MediaName);

                    stringBuilder.Append($"**{category.Key}**:\r\n");
                    stringBuilder.Append(string.Join(", ", items));
                    stringBuilder.Append("\r\n\r\n");
                }

                return(stringBuilder.ToString());
            }
        }
示例#2
0
        public SimpleResponseResponse <SimpleResponseElement> GetAnswer(string commandName)
        {
            using (var databaseContext = new StaticDBContext())
            {
                var command = databaseContext.Commands.Where(p => p.Name == commandName).FirstOrDefault();
                if (command == null)
                {
                    return(new SimpleResponseResponse <SimpleResponseElement>(SimpleResponseResult.NoSuchCommand));
                }

                var responses   = databaseContext.SimpleResponses.Where(p => p.Command.Name == commandName);
                var randomIndex = _random.Next(responses.Count());

                if (responses.Count() == 0)
                {
                    return(new SimpleResponseResponse <SimpleResponseElement>(SimpleResponseResult.CommandHasNoResponses));
                }

                var response = responses
                               .OrderBy(p => p.ID)
                               .Skip(randomIndex)
                               .First();

                var list = new List <SimpleResponseElement>();
                return(new SimpleResponseResponse <SimpleResponseElement>(new SimpleResponseElement(response.Content, response.Type)));
            }
        }
示例#3
0
        public async Task YouTube(CommandContext ctx, [Description("Wpisz !yt list aby uzyskać listę dostępnych opcji.")] string videoName = null, [Description("Wzmianka")] DiscordMember member = null)
        {
            await ctx.TriggerTypingAsync();

            using (var databaseContext = new StaticDBContext())
            {
                if (videoName == "list")
                {
                    await ctx.RespondAsync($"Dostępne filmy:\r\n\r\n{GetAvailableParameters()}");

                    return;
                }

                var videoLink = databaseContext.Media
                                .Where(vid => vid.Command.Name == "YouTube" && vid.Names.Any(p => p.Name.ToLower() == videoName.ToLower()))
                                .Select(p => p.Link)
                                .FirstOrDefault();

                if (videoLink == null)
                {
                    await ctx.RespondAsync("Nieznany parametr, wpisz !yt list aby uzyskać listę dostępnych.");

                    return;
                }

                var response = videoLink;
                if (member != null)
                {
                    response += $" {member.Mention}";
                }

                await ctx.RespondAsync(response);
            }
        }
示例#4
0
        public async Task CreateMeme(CommandContext ctx, string picName, string upText, string downText = null)
        {
            string pictureLink;

            using (var databaseContext = new StaticDBContext())
            {
                await ctx.TriggerTypingAsync();

                pictureLink = databaseContext.Media
                              .Where(vid => vid.Command.Name == "Picture" && vid.Names.Any(p => p.Name == picName))
                              .Select(p => p.Link)
                              .FirstOrDefault();

                if (pictureLink == null)
                {
                    await ctx.RespondAsync("Nieznany parametr, wpisz !pic list aby uzyskać listę dostępnych.");

                    return;
                }
            }

            MemoryStream mem = new MemoryStream();

            using (Image <Rgba32> img = ImageHelper.DownloadImage(pictureLink))
            {
                DrawTextOnImage(img, upText, downText);
                img.SaveAsJpeg(mem);
            }

            mem.Position = 0;

            await ctx.RespondAsync(new DiscordMessageBuilder().WithFile("MEMEM.jpg", mem));
        }
示例#5
0
        public async Task Picture(CommandContext ctx, [Description("Wpisz !pic list aby uzyskać listę dostępnych opcji.")] string pictureName = "", [Description("Wzmianka")] DiscordMember member = null)
        {
            await ctx.TriggerTypingAsync();

            using (var databaseContext = new StaticDBContext())
            {
                if (pictureName == "list")
                {
                    await ctx.RespondAsync($"Dostępne obrazki:\r\n\r\n{GetAvailableParameters()}");

                    return;
                }

                var pictureLink = databaseContext.Media
                                  .Where(vid => vid.Command.Name == "Picture" && vid.Names.Any(p => p.Name.ToLower() == pictureName.ToLower()))
                                  .Select(p => p.Link)
                                  .FirstOrDefault();

                if (pictureLink == null)
                {
                    await ctx.RespondAsync("Nieznany parametr, wpisz !pic list aby uzyskać listę dostępnych.");

                    return;
                }

                var response = pictureLink;

                await PostEmbedHelper.PostEmbed(ctx, "Obrazek", member?.Mention, response);
            }
        }
示例#6
0
        public async Task JavaWhy(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var embed = new DiscordEmbedBuilder()
            {
                Color = ColorHelper.RandomColor()
            };

            //Find random java shenaningans in dynamic database
            using (var db = new DynamicDBContext())
            {
                var thingsList = db.JavaThings.ToList();
                var thing      = thingsList.RandomItem();

                embed.AddField(thing.Title, thing.Content);
            }

            //find random image with JavaWhy category
            using (var db = new StaticDBContext())
            {
                var links = db.Media.Where(m => m.Command.Name == "JavaWhy" && m.Category.Name == "JavaWhy")
                            .Select(m => m.Link).ToList();

                embed.ImageUrl = links.RandomItem();
            }

            await ctx.RespondAsync(embed : embed);
        }
示例#7
0
        public MessageResponseService()
        {
            MessageResponses = new Dictionary <string, string>();

            using (var databaseContext = new StaticDBContext())
            {
                List <MessageResponse> responses = databaseContext.MessageResponses.ToList();
                foreach (var response in responses)
                {
                    MessageResponses.Add(response.Message, response.Response);
                }
            }
        }
示例#8
0
        //[Command("doggirl")]
        //[Description("Wyświetla słodkie doggirl.")]
        public async Task Dog(CommandContext ctx, [Description("Wzmianka")] DiscordMember member = null)
        {
            await ctx.TriggerTypingAsync();

            using (var databaseContext = new StaticDBContext())
            {
                // String.Equals doesn't work in SQLite provider (comparison is case sensitive) so it must be replaced with DbFunctions.Like().
                var dogGirl = databaseContext.SimpleResponses
                              .Where(catboy => catboy.Command.Name == "DogGirl")
                              .Select(p => p.Content)
                              .ToList();

                var wordIndex = random.Next(0, dogGirl.Count);
                var response  = dogGirl[wordIndex];

                await PostEmbedHelper.PostEmbed(ctx, "Dog girl", member?.Mention, response);
            }
        }
示例#9
0
        /// <summary>
        /// Losuje słowo
        /// </summary>
        /// <param name="Category">kategoria</param>
        /// <returns></returns>
        private string GetWord(string Category = null)
        {
            using (var databaseContext = new StaticDBContext())
            {
                IQueryable <string> wordList = null;

                if (Category == null)
                {
                    wordList = databaseContext.HangmanWords
                               .Select(p => p.Word);
                }
                else if (Category == "państwa")
                {
                    wordList = databaseContext.HangmanWords
                               .Where(p => p.HangmanCategoryID == 1)
                               .Select(p => p.Word);
                }
                else if (Category == "zwierzęta")
                {
                    wordList = databaseContext.HangmanWords
                               .Where(p => p.HangmanCategoryID == 2)
                               .Select(p => p.Word);
                }
                else if (Category == "rzeczy")
                {
                    wordList = databaseContext.HangmanWords
                               .Where(p => p.HangmanCategoryID == 3)
                               .Select(p => p.Word);
                }
                var words = wordList.ToList();

                var wordIndex = _random.Next(0, words.Count);
                var word      = words[wordIndex];
                return(word);
            }
        }
示例#10
0
        public SimpleResponseResponse <List <SimpleResponseElement> > GetAnswers(string commandName)
        {
            using (var databaseContext = new StaticDBContext())
            {
                var command = databaseContext.Commands.Where(p => p.Name == commandName).FirstOrDefault();
                if (command == null)
                {
                    return(new SimpleResponseResponse <List <SimpleResponseElement> >(SimpleResponseResult.NoSuchCommand));
                }

                var responses = databaseContext.SimpleResponses.Where(p => p.Command.Name == commandName);
                if (responses.Count() == 0)
                {
                    return(new SimpleResponseResponse <List <SimpleResponseElement> >(SimpleResponseResult.CommandHasNoResponses));
                }

                var list = new List <SimpleResponseElement>();
                foreach (var response in responses)
                {
                    list.Add(new SimpleResponseElement(response.Content, response.Type));
                }
                return(new SimpleResponseResponse <List <SimpleResponseElement> >(list));
            }
        }