Example #1
0
        void IModule.Install(ModuleManager manager)
        {
            _client = manager.Client;

            info             = new Data.TextInformation();
            updater          = new Timer(10000);
            updater.Elapsed += Updater_Elapsed;
            updater.Start();

            _client.MessageReceived += _client_MessageReceived;

            manager.CreateCommands("quote", group =>
            {
                group.PublicOnly();

                group.CreateCommand("get")
                .Description("Gets the Quote at Index or Random if no Index is given")
                .Parameter("Index", ParameterType.Optional)
                .Do(async e =>
                {
                    if (e.Args[0] == "")
                    {
                        await e.Channel.SendMessage($"Quote[{new Random().Next(0, info.quotes.Count)}]:\n{info.quotes[new Random().Next(0, info.quotes.Count)]}");
                    }
                    else
                    {
                        await e.Channel.SendMessage($"Quote[{e.Args[0]}]:\n{info.quotes[int.Parse(e.Args[0])]}");
                    }
                });

                group.CreateCommand("search")
                .Description("Searches all Quote containing the keyword")
                .Parameter("keyword", ParameterType.Unparsed)
                .Do(async e =>
                {
                    string output = "";

                    for (int i = 0; i < info.quotes.Count; i++)
                    {
                        if (info.quotes[i].ToString().ToLower().Contains(e.Args[0].ToLower()))
                        {
                            output += $"Quote[{i}]:\n{info.quotes[i]}\n\n";
                        }
                    }

                    await e.Channel.SendMessage(output);
                });

                group.CreateCommand("add")
                .Description("Adds a Quote at the end of the List")
                .Parameter("Quote", ParameterType.Unparsed)
                .Do(async e =>
                {
                    info.quotes.Add($"{e.Args[0]}");
                    info.writeInformation();
                    await e.Channel.SendMessage($"Added Quote[{info.quotes.Count - 1}]");
                });

                group.CreateCommand("de")
                .Description("Removes Quote at Index")
                .Parameter("Index")
                .Do(async e =>
                {
                    info.quotes.RemoveAt(int.Parse(e.Args[0]));
                    info.writeInformation();
                    await e.Channel.SendMessage($"Removed Quote[{e.Args[0]}]");
                });
            });

            manager.CreateCommands("", group =>
            {
                group.CreateCommand("giveCookie")
                .Description("You make me survive for a few minutes longer!")
                .Do(async e =>
                {
                    info.cookies++;
                    info.writeInformation();
                    await e.Channel.SendMessage($"Up to now, I have been fed {info.cookies} cookies!");
                });

                group.CreateCommand("hug")
                .Description("SQUEEZE THEM")
                .Parameter("People", ParameterType.Unparsed)
                .Do(async e =>
                {
                    string output = "";

                    foreach (var r in e.Message.MentionedRoles)
                    {
                        output += "Every Member of the " + r.Name + " role (";

                        foreach (User u in r.Members)
                        {
                            if (!e.User.Equals(u))
                            {
                                Data.Individual.User botUser = Game.findDataUser(u);
                                Game.userScores.users.First(x => x.ID == botUser.ID).hugged += 1;
                                Game.userScores.writeScore();
                                output += $"`{u.Name}` ";
                            }
                        }
                        output += ") has been hugged by **" + e.User.Name + "**\n";
                    }

                    foreach (User u in e.Message.MentionedUsers)
                    {
                        if (!e.User.Equals(u))
                        {
                            Data.Individual.User botUser = Game.findDataUser(u);
                            Game.userScores.users.First(x => x.ID == botUser.ID).hugged += 1;
                            Game.userScores.writeScore();
                            output += $"**{u.Name}** has been hugged by **{e.User.Name}**\nAww. They have already been hugged `{Game.userScores.users.First(x => x.ID == botUser.ID).hugged}` times.\n\n";
                        }
                    }

                    await e.Channel.SendMessage(output);
                });

                group.CreateCommand("punch")
                .Description("F**k that asshole up!")
                .Parameter("People", ParameterType.Unparsed)
                .Do(async e =>
                {
                    string output = "";

                    foreach (var r in e.Message.MentionedRoles)
                    {
                        output += "Every Member of the " + r.Name + " role (";

                        foreach (User u in r.Members)
                        {
                            if (!e.User.Equals(u))
                            {
                                Data.Individual.User botUser = Game.findDataUser(u);
                                Game.userScores.users.First(x => x.ID == botUser.ID).punched += 1;
                                Game.userScores.writeScore();
                                output += $"`{u.Name}` ";
                            }
                        }
                        output += ") has been punched by **" + e.User.Name + "**\n";
                    }

                    foreach (User u in e.Message.MentionedUsers)
                    {
                        if (!e.User.Equals(u))
                        {
                            Data.Individual.User botUser = Game.findDataUser(u);
                            Game.userScores.users.First(x => x.ID == botUser.ID).punched += 1;
                            Game.userScores.writeScore();
                            output += $"**{u.Name}** has been punched by **{e.User.Name}**\nThey have already been f****d up `{Game.userScores.users.First(x => x.ID == botUser.ID).punched}` times.\n\n";
                        }
                    }

                    await e.Channel.SendMessage(output);
                });

                group.CreateCommand("kiss")
                .Description("Suck their soul out! HAHA")
                .Parameter("People", ParameterType.Unparsed)
                .Do(async e =>
                {
                    string output = "";

                    foreach (var r in e.Message.MentionedRoles)
                    {
                        output += "Every Member of the " + r.Name + " role (";

                        foreach (User u in r.Members)
                        {
                            if (!e.User.Equals(u))
                            {
                                Data.Individual.User botUser = Game.findDataUser(u);
                                Game.userScores.users.First(x => x.ID == botUser.ID).kissed += 1;
                                Game.userScores.writeScore();
                                output += $"`{u.Name}` ";
                            }
                        }
                        output += ") has been kissed by **" + e.User.Name + "**\n";
                    }

                    foreach (User u in e.Message.MentionedUsers)
                    {
                        if (!e.User.Equals(u))
                        {
                            Data.Individual.User botUser = Game.findDataUser(u);
                            Game.userScores.users.First(x => x.ID == botUser.ID).kissed += 1;
                            Game.userScores.writeScore();
                            output += $"**{u.Name}** has been kissed by **{e.User.Name}**\nDo I smell love? They have already been kissed `{Game.userScores.users.First(x => x.ID == botUser.ID).kissed}` times.\n\n";
                        }
                    }

                    await e.Channel.SendMessage(output);
                });

                group.CreateCommand("cat")
                .Description("CATS WOOF!")
                .Do(async e =>
                {
                    var jss  = new JavaScriptSerializer();
                    var dict = jss.Deserialize <dynamic>(Information.readURL("http://api.giphy.com/v1/gifs/random?api_key=dc6zaTOxFJmzC&tag=cat&fmt=json"));

                    await e.Channel.SendMessage(dict["data"]["url"]);
                });

                group.CreateCommand("gif")
                .Description("Returns random giphy gif")
                .Parameter("keyword", ParameterType.Unparsed)
                .Hide()
                .Do(async e =>
                {
                    string request = e.GetArg("keyword").Replace(' ', '+');

                    var jss  = new JavaScriptSerializer();
                    var dict = jss.Deserialize <dynamic>(Information.readURL($"http://api.giphy.com/v1/gifs/random?api_key=dc6zaTOxFJmzC&tag={request}&fmt=json"));

                    await e.Channel.SendMessage(dict["data"]["url"]);
                });
            });

            manager.CreateCommands("osu", group =>
            {
                group.CreateCommand("user")
                .Description("test")
                .Parameter("name")
                .Do(async e =>
                {
                    var dict = Module.Data.osuUser.userStats(e.GetArg("name"));

                    try { await e.Channel.SendMessage($"http://osusig.ppy.sh/image5.png?uid={dict["user_id"]}&m=15"); } catch (Exception ex) { await e.Channel.SendMessage(ex.Message); }
                });

                group.CreateCommand("signup")
                .Description("Signs you up into the Osu! Database")
                .Parameter("name")
                .Do(async e =>
                {
                    if (osuInfo.osuUsers.Exists(x => x.discordID == e.User.Id))
                    {
                        osuInfo.osuUsers.Find(x => x.discordID == e.User.Id).channels.Add(e.Channel);
                    }

                    else
                    {
                        var dict = Module.Data.osuUser.userStats(e.GetArg("name"));

                        osuInfo.osuUsers.Add(new Data.osuUser(e.User.Id, dict["user_id"], e.Channel));
                    }

                    osuInfo.writeInformation();

                    await e.Channel.SendMessage($"Signed you up on {e.Channel.Id} ({e.Channel.Name})\n" +
                                                $"Keeping track of your **{osuInfo.osuUsers.Find(x => x.discordID == e.User.Id).modeToString()}** pp.\n" +
                                                $"Change the game mode by using the !setMainMode command.");
                });

                group.CreateCommand("setMainMode")
                .Description("0 = Standard, 1 = Taiko, 2 = CtB, 3 = Mania")
                .Parameter("Mode")
                .Do(async e =>
                {
                    if (!osuInfo.osuUsers.Exists(x => x.discordID == e.User.Id))
                    {
                        return;
                    }

                    osuInfo.osuUsers.Find(x => x.discordID == e.User.Id).mainMode = "m=" + e.GetArg("Mode");
                    osuInfo.osuUsers.Find(x => x.discordID == e.User.Id).updateStats();

                    osuInfo.writeInformation();

                    await e.Channel.SendMessage("Set mode to " + e.GetArg("Mode"));
                });

                group.CreateCommand("getStats")
                .Description("Fetches and updates your Data from the DataBase")
                .Do(async e =>
                {
                    Data.osuUser OUser = osuInfo.osuUsers.Find(x => x.discordID == e.User.Id);
                    OUser.updateStats();

                    await e.Channel.SendMessage($"Name: {OUser.username}\nScore: {OUser.score} ({Math.Round(OUser.accuracy, 2)}%)\nPP: {OUser.pp}  {OUser.mainMode}\n\nhttps://osu.ppy.sh/u/{OUser.ident}");
                });

                group.CreateCommand("ranking")
                .Description("returns pp leaderboard")
                .Do(async e =>
                {
                    await e.Channel.SendMessage(osuInfo.drawDiagram(e.Server));
                });
            });

            manager.CreateCommands("overwatch", group =>
            {
                group.CreateCommand("user")
                .Description("Returns user stats")
                .Parameter("Battletag")
                .Do(async e =>
                {
                    await e.Channel.SendMessage(Data.OW_User.statsToString(e.GetArg("Battletag")));
                });

                group.CreateCommand("signup")
                .Description("In development")
                .Parameter("Battletag")
                .Do(async e =>
                {
                    if (owInfo == null)
                    {
                        await e.Channel.SendMessage("Try again in around a minute o3o");
                    }

                    if (owInfo.OW_Users.Exists(x => x.discordID == e.User.Id))
                    {
                        owInfo.OW_Users.Find(x => x.discordID == e.User.Id).channels.Add(e.Channel);
                    }

                    else
                    {
                        owInfo.OW_Users.Add(new Data.OW_User(e.User.Id, e.GetArg("Battletag"), e.Channel));
                    }

                    owInfo.writeInformation();

                    await e.Channel.SendMessage($"Signed you up on {e.Channel.Id} ({e.Channel.Name})\n" +
                                                $"Keeping track of your **IN DEVELOPMENT**");
                });

                group.CreateCommand("getStats")
                .Description("Returns your OW stats")
                .Do(async e =>
                {
                    await e.Channel.SendMessage(owInfo.OW_Users.Find(x => x.discordID == e.User.Id).statsToString());
                });

                group.CreateCommand("ranking")
                .Description("Returns top limit ranked users")
                .Parameter("Limit")
                .Do(async e =>
                {
                    await e.Channel.SendMessage(owInfo.drawDiagram(int.Parse(e.GetArg("Limit"))));
                });
            });
        }
Example #2
0
        void IModule.Install(ModuleManager manager)
        {
            info             = new Data.TextInformation();
            osuInfo          = new Data.Osu_Data();
            updater          = new Timer(60000);
            updater.Elapsed += Updater_Elapsed;
            updater.Start();

            _manager = manager;
            _client  = manager.Client;

            _client.MessageReceived += _client_MessageReceived;

            manager.CreateCommands("quote", group =>
            {
                group.PublicOnly();

                group.CreateCommand("get")
                .Description("Gets the Quote at Index or Random if no Index is given")
                .Parameter("Index", ParameterType.Optional)
                .Do(async e =>
                {
                    if (e.Args[0] == "")
                    {
                        await e.Channel.SendMessage($"Quote[{new Random().Next(0, info.quotes.Count)}]:\n{info.quotes[new Random().Next(0, info.quotes.Count)]}");
                    }
                    else
                    {
                        await e.Channel.SendMessage($"Quote[{e.Args[0]}]:\n{info.quotes[int.Parse(e.Args[0])]}");
                    }
                });

                group.CreateCommand("search")
                .Description("Searches all Quote containing the keyword")
                .Parameter("keyword", ParameterType.Unparsed)
                .Do(async e =>
                {
                    string output = "";

                    for (int i = 0; i < info.quotes.Count; i++)
                    {
                        if (info.quotes[i].ToString().ToLower().Contains(e.Args[0].ToLower()))
                        {
                            output += $"Quote[{i}]:\n{info.quotes[i]}\n\n";
                        }
                    }

                    await e.Channel.SendMessage(output);
                });

                group.CreateCommand("add")
                .Description("Adds a Quote at the end of the List")
                .Parameter("Quote", ParameterType.Unparsed)
                .Do(async e =>
                {
                    info.quotes.Add($"{e.Args[0]}");
                    info.writeInformation();
                    await e.Channel.SendMessage($"Added Quote[{info.quotes.Count - 1}]");
                });

                group.CreateCommand("de")
                .Description("Removes Quote at Index")
                .Parameter("Index")
                .Do(async e =>
                {
                    info.quotes.RemoveAt(int.Parse(e.Args[0]));
                    info.writeInformation();
                    await e.Channel.SendMessage($"Removed Quote[{e.Args[0]}]");
                });
            });

            manager.CreateCommands("", group =>
            {
                group.CreateCommand("giveCookie")
                .Description("You make me survive for a few minutes longer!")
                .Do(async e =>
                {
                    info.cookies++;
                    info.writeInformation();
                    await e.Channel.SendMessage($"Up to now, I have been fed {info.cookies} cookies!");
                });
            });

            manager.CreateCommands("osu", group =>
            {
                group.CreateCommand("user")
                .Description("test")
                .Parameter("name")
                .Do(async e =>
                {
                    var dict = Module.Data.osuUser.userStats(e.GetArg("name"));

                    try { await e.Channel.SendMessage($"User: {dict["username"]} \nPP: {dict["pp_raw"]}\n\nhttps://osu.ppy.sh/u/{dict["user_id"]}"); } catch (Exception ex) { await e.Channel.SendMessage(ex.Message); }
                });

                group.CreateCommand("signup")
                .Description("Signs you up into the Osu! Database")
                .Parameter("name")
                .Do(async e =>
                {
                    if (osuInfo.osuUsers.Find(x => x.discordID == e.User.Id) != null)
                    {
                        return;
                    }

                    var dict = Module.Data.osuUser.userStats(e.GetArg("name"));

                    osuInfo.osuUsers.Add(new Data.osuUser(e.User.Id, dict["user_id"]));

                    osuInfo.writeInformation();

                    await e.Channel.SendMessage("Signed you up, " + dict["username"] + ".");
                });

                group.CreateCommand("setMainMode")
                .Description("0 = Standard, 1 = Taiko, 2 = CtB, 3 = Mania")
                .Parameter("Mode")
                .Do(async e =>
                {
                    if (osuInfo.osuUsers.Find(x => x.discordID == e.User.Id) == null)
                    {
                        return;
                    }

                    osuInfo.osuUsers.Find(x => x.discordID == e.User.Id).mainMode = "m=" + e.GetArg("Mode");
                    osuInfo.osuUsers.Find(x => x.discordID == e.User.Id).updateStats();

                    osuInfo.writeInformation();

                    await e.Channel.SendMessage("Set mode to " + e.GetArg("Mode"));
                });

                group.CreateCommand("getStats")
                .Description("Fetches and updates your Data from the DataBase")
                .Do(async e =>
                {
                    Data.osuUser OUser = osuInfo.osuUsers.Find(x => x.discordID == e.User.Id);
                    OUser.updateStats();

                    await e.Channel.SendMessage($"Name: {OUser.username}\nScore: {OUser.score} ({Math.Round(OUser.accuracy, 2)}%)\nPP: {OUser.pp}  {OUser.mainMode}\n\nhttps://osu.ppy.sh/u/{OUser.ident}");
                });

                group.CreateGroup("ranking", RankingGroup =>
                {
                    RankingGroup.CreateCommand("pp")
                    .Do(async e =>
                    {
                        osuInfo.osuUsers.Sort((y, x) => x.pp.CompareTo(y.pp));
                        string output = "";

                        int count = 0;

                        foreach (Data.osuUser curUser in osuInfo.osuUsers)
                        {
                            count++;
                            try
                            {
                                output += $"#{count} ``PP: {curUser.pp}`` by **{e.Server.GetUser(curUser.discordID).Name}** ({curUser.username})\n";
                            }
                            catch (NullReferenceException ex)
                            {
                                count--;
                            }
                        }

                        await e.Channel.SendMessage(output);
                    });

                    RankingGroup.CreateCommand("acc")
                    .Do(async e =>
                    {
                        osuInfo.osuUsers.Sort((y, x) => x.accuracy.CompareTo(y.accuracy));
                        string output = "";

                        int count = 0;

                        foreach (Data.osuUser curUser in osuInfo.osuUsers)
                        {
                            count++;
                            try
                            {
                                output += $"#{count} ``{Math.Round(curUser.accuracy, 2)}%`` by **{e.Server.GetUser(curUser.discordID).Name}** ({curUser.username})\n";
                            }
                            catch (NullReferenceException ex)
                            {
                                count--;
                            }
                        }

                        await e.Channel.SendMessage(output);
                    });

                    RankingGroup.CreateCommand("score")
                    .Do(async e =>
                    {
                        osuInfo.osuUsers.Sort((y, x) => x.score.CompareTo(y.score));
                        string output = "";

                        int count = 0;

                        foreach (Data.osuUser curUser in osuInfo.osuUsers)
                        {
                            count++;
                            try
                            {
                                output += $"#{count} ``{curUser.score}`` by **{e.Server.GetUser(curUser.discordID).Name}** ({curUser.username})\n";
                            }
                            catch (NullReferenceException ex)
                            {
                                count--;
                            }
                        }

                        await e.Channel.SendMessage(output);
                    });

                    RankingGroup.CreateCommand("playcount")
                    .Do(async e =>
                    {
                        osuInfo.osuUsers.Sort((y, x) => x.playcount.CompareTo(y.playcount));
                        string output = "";

                        int count = 0;

                        foreach (Data.osuUser curUser in osuInfo.osuUsers)
                        {
                            count++;
                            try
                            {
                                output += $"#{count} ``{curUser.playcount}`` by **{e.Server.GetUser(curUser.discordID).Name}** ({curUser.username})\n";
                            }
                            catch (NullReferenceException ex)
                            {
                                count--;
                            }
                        }

                        await e.Channel.SendMessage(output);
                    });
                });
            });
        }