public static string GetReactionImage(string description)
        {
            string url = "";

            var adaptor = new ReactionImagesTableAdapter();
            var reactionImages = adaptor.GetData();

            List<TonyDBDataSet.ReactionImagesRow> images;
            if (!string.IsNullOrEmpty(description))
            {
                images = reactionImages.Where(i => i.Description.ToLower().Contains(description)).ToList();
            }
            else
            {
                images = reactionImages.ToList();
            }
            if (images.Count > 0)
            {
                url = images.GetRandom().ImageUrl;
            }
            
            return url;
        }
Beispiel #2
0
        private static async void HandleMessage(DiscordClient client)
        {
            client.MessageReceived += async (s, e) =>
            {
                var recievedMessage = e.Message.Text;

                if (!(e.Message.User.Name.ToLower().Equals("milliabot") || e.Message.User.Name.ToLower().Equals("robo-millia")))
                {

                    // Handle the recieved message
                    if (recievedMessage.ToLower().Equals("!help") || recievedMessage.ToLower().Equals("help"))
                    {
                        await
                            e.Channel.SendMessage(
                                "Sample commands: !nobully !idk !reaction !addreaction !hitbox !addhitbox");
                    }
                    else if (recievedMessage.ToLower().Equals("nyan"))
                        await e.Channel.SendMessage("nyan~☆");
                    else if (recievedMessage.ToLower().Equals("!nobully"))
                        await
                            e.Channel.SendMessage(
                                "http://36.media.tumblr.com/b9a0de59acdde512065cd345f6b14593/tumblr_nmvjvaqlq31r66h7yo1_500.jpg");
                    else if (recievedMessage.ToLower().Equals("!bully"))
                        await
                            e.Channel.SendMessage(
                                "https://data.desustorage.org/a/image/1436/16/1436163143100.jpg");
                    else if (recievedMessage.ToLower().Equals("!herewego"))
                        await
                            e.Channel.SendMessage(
                                "http://suptg.thisisnotatrueending.com/archive/32329424/images/1400964390429.jpg");
                    else if (recievedMessage.ToLower().Equals("!everyday"))
                        await
                            e.Channel.SendMessage(
                                "http://40.media.tumblr.com/5fef7876e1bfe7c744a7c5d8969ea5ba/tumblr_moly86fGRT1swsp86o2_r1_500.jpg");
                    else if (recievedMessage.ToLower().Equals("!idk"))
                        await
                            e.Channel.SendMessage(
                                "http://s.quickmeme.com/img/45/45cb7c3f84254c6aea385e88ab44149887e56bbb86ba7f7ad62ace9a91a521ef.jpg");
                    else if (recievedMessage.ToLower().Equals("!autism"))
                        await
                            e.Channel.SendMessage(
                                "http://i.imgur.com/bv3ruu8.jpg");
                    else if (recievedMessage.ToLower().Equals("!awoo"))
                        await
                            e.Channel.SendMessage(
                                "http://i.imgur.com/oPVnqGU.png");
                    else if ((recievedMessage.ToLower().Contains("milliabot") || recievedMessage.Replace("-", "").ToLower().Contains("robomillia")) && recievedMessage.EndsWith("?"))
                        await
                            e.Channel.SendMessage(
                                MilliaUtils.GetEightBallResponse());
                    else if (recievedMessage.ToLower().Contains("!reaction"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count == 1)
                        {
                            await e.Channel.SendMessage("Format is !reaction description(optional)");
                        }
                        if (commandList.Count > 1)
                        {
                            var description = commandList.Skip(1).Aggregate((i, j) => i + " " + j).ToLower();
                            var url = ReactionUtils.GetReactionImage(description);
                            if (string.IsNullOrEmpty(url))
                                url = "No images found";
                            await
                                e.Channel.SendMessage(
                                    url);
                        }
                        else
                        {
                            var url = ReactionUtils.GetReactionImage(null);
                            if (string.IsNullOrEmpty(url))
                                url = "No images found";
                            await
                                e.Channel.SendMessage(
                                    url);
                        }
                    }
                    else if (recievedMessage.ToLower().Contains("!addreaction"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            var adaptor = new ReactionImagesTableAdapter();

                            if (commandList.Count > 2)
                            {
                                var description = commandList.Skip(2).Aggregate((i, j) => i + " " + j);
                                adaptor.Insert(commandList[1], description);
                            }
                            else
                                adaptor.Insert(commandList[1], null);
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !addreaction url description");
                        }
                    }
                    else if (recievedMessage.ToLower().Contains("!hitbox"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 2)
                        {
                            var moveName = commandList.Skip(2).Aggregate((i, j) => i + " " + j).ToLower();
                            var url = MilliaUtils.GetHitboxImageUrl(commandList[1].ToLower(), moveName);
                            await
                                e.Channel.SendMessage(
                                    url);
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !hitbox charactername movename");
                        }
                    }
                    else if (recievedMessage.ToLower().Contains("!addhitbox"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 3)
                        {
                            var moveName = commandList.Skip(3).Aggregate((i, j) => i + " " + j).ToLower();
                            var result = MilliaUtils.AddHitboxImage(commandList[1], commandList[2].ToLower(), moveName.ToLower());

                            await e.Channel.SendMessage(result);
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !addhitbox url (character name) (move name)");
                        }
                    }
                    else if (recievedMessage.ToLower().Contains("!addcharacter"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            var charName = commandList.Skip(1).Aggregate((i, j) => i + " " + j);
                            var characterAdaptor = new CharactersTableAdapter();
                            var existingCharacter =
                                characterAdaptor.GetData().FirstOrDefault(c => c.Name.ToLower().Equals(charName));
                            if (existingCharacter == null)
                            {
                                characterAdaptor.Insert(charName, "");
                                if (characterAdaptor.GetData().FirstOrDefault(c => c.Name.Equals(charName)) != null)
                                {
                                    await e.Channel.SendMessage(charName + " added");
                                }
                                else
                                {
                                    await e.Channel.SendMessage("Failed to add character");
                                }
                            }
                            else
                            {
                                await e.Channel.SendMessage(charName + " already exists");
                            }
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !addcharacter (character name)");
                        }
                    }
                    else if (recievedMessage.ToLower().Contains("!playsong"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            var songName = commandList.Skip(1).Aggregate((i, j) => i + " " + j);
                            string file = "../assets/" + songName + ".mp3";
                            var voiceChannel = OttawaAnimeCrewServer.VoiceChannels.FirstOrDefault(v => v.Name.Equals("Jam Session"));

                            var VoiceClient = await voiceChannel.JoinAudio();

                            await MusicService.PlayMusic(VoiceClient, file);
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !playsong (songname)");
                        }
                    }
                    else if (recievedMessage.ToLower().Contains("!addsong"))
                    {

                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            var youtubeUrl = commandList.Skip(1).Aggregate((i, j) => i + " " + j);
                            var channelName = "Koromo's Room";
                            var koromos_room = "twitch_chat";
                            // Change for servers
                            var voiceClient = await VoiceChannel.JoinAudio();

                            if (!IsPlayingMusic)
                            {
                                IsPlayingMusic = true;

                                Playlist.Add(youtubeUrl);

                                await MusicService.ExecutePlaylist(voiceClient, Playlist, MusicChatChannel);

                                IsPlayingMusic = false;
                            }
                            else
                            {
                                Playlist.Add(youtubeUrl);
                                await e.Channel.SendMessage("added to playlist");
                            }
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !downloadsong (Youtube URL)");
                        }
                    }
                    else if (recievedMessage.ToLower().Equals("!skip"))
                    {
                        IsSkipSong = true;
                        await e.Channel.SendMessage("Song skipped");
                    }
                    else if (recievedMessage.ToLower().Contains("!matchvideo"))
                    {
                        var commandList = recievedMessage.ToLower().Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            string char1 = commandList[1];
                            string char2 = "";
                            if (commandList.Count > 2)
                                char2 = commandList[2];

                            var link = WebServices.GetMatchVideo(char1, char2);

                            await e.Channel.SendMessage(link);
                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !matchvideo (char1) (char2)");
                        }
                    }
                    else if (recievedMessage.ToLower().StartsWith("!unbansonify"))
                    {
                        var commandList = recievedMessage.ToLower().Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            var inputLine = commandList.Skip(1).Aggregate((i, j) => i + " " + j);
                            var correctedSentence = MilliaUtils.GetAutoCorrectedSentence(inputLine);
                            await e.Channel.SendMessage(correctedSentence);
                        }
                    }
                    else if (recievedMessage.ToLower().StartsWith("!add"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();
                        if (commandList.Count > 1)
                        {
                            var command = commandList[0].Replace("!add", "");
                            var adaptor = new CommandsTableAdapter();
                            var link = commandList.Skip(1).Aggregate((i, j) => i + " " + j);

                            adaptor.Insert(command, link);

                        }
                        else
                        {
                            await e.Channel.SendMessage("Format is !add (URL)");
                        }
                    }
                    // Must be last
                    else if (recievedMessage.StartsWith("!"))
                    {
                        var commandList = recievedMessage.Split(' ').ToList();

                        var value = MilliaUtils.GetCommandLink(commandList[0].Replace("!", ""));
                        if (!String.IsNullOrEmpty(value))
                            await e.Channel.SendMessage(value);
                    }
                }
                client.GetChannel(1);
            };
        }