public static void createCommand(CommandGroupBuilder builder)
 {
     builder.CreateCommand("cookie")
     .Description("Bot answers with :cookie:")
     .Do(async e =>
     {
         Message message = await e.Channel.SendMessage(e.User.Mention + " :cookie::cookie:");
     });
 }
Example #2
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "repeat")
            .Description("Repeat a message every X minutes. If no parameters are specified, " +
                         "repeat is disabled. Requires manage messages.\n**Usage**:`.repeat 5 Hello there`")
            .Parameter("minutes", ParameterType.Optional)
            .Parameter("msg", ParameterType.Unparsed)
            .AddCheck(SimpleCheckers.ManageMessages())
            .Do(async e =>
            {
                var minutesStr = e.GetArg("minutes");
                var msg        = e.GetArg("msg");

                // if both null, disable
                if (string.IsNullOrWhiteSpace(msg) && string.IsNullOrWhiteSpace(minutesStr))
                {
                    await e.Channel.SendMessage("Repeating disabled").ConfigureAwait(false);
                    Repeater rep;
                    if (repeaters.TryRemove(e.Server, out rep))
                    {
                        rep.MessageTimer.Stop();
                    }
                    return;
                }
                int minutes;
                if (!int.TryParse(minutesStr, out minutes) || minutes < 1 || minutes > 1440)
                {
                    await e.Channel.SendMessage("Invalid value").ConfigureAwait(false);
                    return;
                }

                var repeater = repeaters.GetOrAdd(
                    e.Server,
                    s => new Repeater
                {
                    Interval           = minutes * 60 * 1000,
                    RepeatingChannel   = e.Channel,
                    RepeatingChannelId = e.Channel.Id,
                    RepeatingServerId  = e.Server.Id,
                }.Start()
                    );

                if (!string.IsNullOrWhiteSpace(msg))
                {
                    repeater.RepeatingMessage = msg;
                }

                repeater.MessageTimer.Stop();
                repeater.MessageTimer.Start();

                await e.Channel.SendMessage(String.Format("👌 Repeating `{0}` every " +
                                                          "**{1}** minutes on {2} channel.",
                                                          repeater.RepeatingMessage, minutes, repeater.RepeatingChannel))
                .ConfigureAwait(false);
            });
        }
Example #3
0
        public override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("$draw")
            .Description("Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck.\n**Usage**: $draw [x]")
            .Parameter("count", ParameterType.Optional)
            .Do(DoFunc());

            cgb.CreateCommand("$shuffle")
            .Alias("$reshuffle")
            .Description("Reshuffles all cards back into the deck.")
            .Do(async e => {
                if (!AllDecks.ContainsKey(e.Server))
                {
                    AllDecks.TryAdd(e.Server, new Cards());
                }
                AllDecks[e.Server].Restart();
                await e.Channel.SendMessage("Deck reshuffled.");
            });
        }
Example #4
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "roll")
            .Description("Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice." +
                         $" If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `{Prefix}roll` or `{Prefix}roll 7` or `{Prefix}roll 3d5`")
            .Parameter("num", ParameterType.Optional)
            .Do(RollFunc());

            cgb.CreateCommand(Module.Prefix + "rolluo")
            .Description("Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice (unordered)." +
                         $" If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `{Prefix}roll` or `{Prefix}roll` 7 or `{Prefix}roll 3d5`")
            .Parameter("num", ParameterType.Optional)
            .Do(RollFunc(false));

            cgb.CreateCommand(Module.Prefix + "nroll")
            .Description($"Rolls in a given range. | `{Prefix}nroll 5` (rolls 0-5) or `{Prefix}nroll 5-15`")
            .Parameter("range", ParameterType.Required)
            .Do(NRollFunc());
        }
Example #5
0
        public override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("t")
            .Description("Starts a game of trivia.")
            .Alias("-t")
            .Do(DoFunc());

            cgb.CreateCommand("tl")
            .Description("Shows a current trivia leaderboard.")
            .Alias("-tl")
            .Alias("tlb")
            .Alias("-tlb")
            .Do(LbFunc());

            cgb.CreateCommand("tq")
            .Description("Quits current trivia after current question.")
            .Alias("-tq")
            .Do(QuitFunc());
        }
Example #6
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "rank")
            .Description("Zeigt deinen zurzeitigen Rang an.")
            .Parameter("user", ParameterType.Unparsed)
            .Do(e =>
            {
                if (string.IsNullOrWhiteSpace(e.GetArg("user")))
                {
                    long uid = Convert.ToInt64(e.User.Id);

                    LevelData ldm = DbHandler.Instance.FindOne <LevelData>(p => p.UserId == uid);

                    if (ldm != null)
                    {
                        int total = DbHandler.Instance.FindAll <LevelData>(p => true).Count;
                        int rank  = GetRank(ldm);

                        e.Channel.SendMessage($"{ e.User.Mention }: LEVEL { ldm.Level } | XP { ldm.CurrentXP }/{ ldm.XPForNextLevel } | TOTAL XP { ldm.TotalXP } | RANK { rank }/{ total }");
                    }
                    else
                    {
                        e.Channel.SendMessage($"{ e.User.Mention }, dich kenne ich nicht.");
                    }
                }
                else
                {
                    var usr = e.Server.FindUsers(e.GetArg("user")).FirstOrDefault();
                    if (usr == null)
                    {
                        e.Channel.SendMessage($"{ e.User.Mention }, diesen User kenne ich nicht.");
                    }
                    else
                    {
                        long uid = Convert.ToInt64(usr.Id);

                        LevelData ldm = DbHandler.Instance.FindOne <LevelData>(p => p.UserId == uid);



                        if (ldm != null)
                        {
                            int total = DbHandler.Instance.FindAll <LevelData>(p => true).Count;
                            int rank  = GetRank(ldm);

                            e.Channel.SendMessage($"{ e.User.Mention }: **{usr.Name}**\'s Rang > LEVEL { ldm.Level } | XP { ldm.CurrentXP }/{ ldm.XPForNextLevel } | TOTAL XP { ldm.TotalXP } | RANK { rank }/{ total }");
                        }
                        else
                        {
                            e.Channel.SendMessage($"{ e.User.Mention }, dich kenne ich nicht.");
                        }
                    }
                }
            });
        }
Example #7
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "betray")
            .Description($"BETRUGS-SPIEL. Betrüge {BotName} in der nächsten Runde." +
                         $"Wenn {BotName} mit dir zusammenarbeitet - Du bekommst Extra-Punkte, {BotName} verliert eine Menge." +
                         $"Wenn {BotName} betrügt - Beide verlieren ein paar Punkte. | `{Prefix}betray`")
            .Do(async e =>
            {
                await ReceiveAnswer(e, Answers.Betray).ConfigureAwait(false);
            });

            cgb.CreateCommand(Module.Prefix + "cooperate")
            .Description($"BETRUGS-SPIEL. Arbeite mit {BotName} zusammen in der nächsten Runde." +
                         $"When {BotName} mit dir zusammenarbeitet - Ihr beide bekommt Bonus-Punkte." +
                         $"Wenn {BotName} betrügt - Du verlierst eine Menge, {BotName} bekommt Bonus-Punkte. | `{Prefix}cooperater`")
            .Do(async e =>
            {
                await ReceiveAnswer(e, Answers.Cooperate).ConfigureAwait(false);
            });
        }
Example #8
0
        internal static void CreateJsonCommand(CommandGroupBuilder group, string name, JToken val, Action <CommandBuilder> cmd_specific)
        {
            var cmd = group.CreateCommand(name);

            foreach (var alias in val["aliases"])
            {
                cmd.Alias(alias.ToString());
            }
            cmd.Description(val["description"].ToString());
            cmd_specific(cmd);
        }
Example #9
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "betray")
            .Description("BETRAY GAME. Betray Wiz Bot next turn." +
                         "If Wiz Bot cooperates - you get extra points, Wiz Bot loses a LOT." +
                         "If Wiz Bot betrays - you both lose some points.")
            .Do(async e =>
            {
                await ReceiveAnswer(e, Answers.Betray).ConfigureAwait(false);
            });

            cgb.CreateCommand(Module.Prefix + "cooperate")
            .Description("BETRAY GAME. Cooperate with Wiz Bot next turn." +
                         "If Wiz Bot cooperates - you both get bonus points." +
                         "If Wiz Bot betrays - you lose A LOT, Wiz Bot gets extra.")
            .Do(async e =>
            {
                await ReceiveAnswer(e, Answers.Cooperate).ConfigureAwait(false);
            });
        }
Example #10
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "betray")
            .Description("BETRAY GAME. Betray nadeko next turn." +
                         "If Nadeko cooperates - you get extra points, nadeko loses a LOT." +
                         $"If Nadeko betrays - you both lose some points. | `{Prefix}betray`")
            .Do(async e =>
            {
                await ReceiveAnswer(e, Answers.Betray).ConfigureAwait(false);
            });

            cgb.CreateCommand(Module.Prefix + "cooperate")
            .Description("BETRAY GAME. Cooperate with nadeko next turn." +
                         "If Nadeko cooperates - you both get bonus points." +
                         $"If Nadeko betrays - you lose A LOT, nadeko gets extra. | `{Prefix}cooperater`")
            .Do(async e =>
            {
                await ReceiveAnswer(e, Answers.Cooperate).ConfigureAwait(false);
            });
        }
Example #11
0
        public override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(">poll")
            .Description("Creates a poll, only person who has manage server permission can do it.\n**Usage**: >poll Question?;Answer1;Answ 2;A_3")
            .Parameter("allargs", ParameterType.Unparsed)
            .Do(e => {
                if (!e.User.ServerPermissions.ManageChannels)
                {
                    return;
                }
                if (ActivePolls.ContainsKey(e.Server))
                {
                    return;
                }
                var arg = e.GetArg("allargs");
                if (string.IsNullOrWhiteSpace(arg) || !arg.Contains(";"))
                {
                    return;
                }
                var data = arg.Split(';');
                if (data.Length < 3)
                {
                    return;
                }

                new Poll(e, data[0], data.Skip(1));
            });
            cgb.CreateCommand(">pollend")
            .Description("Stops active poll on this server and prints the results in this channel.")
            .Do(async e => {
                if (!e.User.ServerPermissions.ManageChannels)
                {
                    return;
                }
                if (!ActivePolls.ContainsKey(e.Server))
                {
                    return;
                }
                await ActivePolls[e.Server].StopPoll(e.Channel);
            });
        }
Example #12
0
        public void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("$draw")
            .Description("Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck.\n**Usage**: $draw [x]")
            .Parameter("count", ParameterType.Optional)
            .Do(DoFunc());

            cgb.CreateCommand("$shuffle")
            .Alias("$reshuffle")
            .Description("Reshuffles all cards back into the deck.")
            .Do(async e => {
                AllDecks.AddOrUpdate(e.Server,
                                     (s) => new Cards(),
                                     (s, c) => {
                    c.Restart();
                    return(c);
                });

                await e.Channel.SendMessage("Deck reshuffled.");
            });
        }
Example #13
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "test")
            .Alias(Module.Prefix + "guide")
            .Description($"Sends a readme and a guide links to the channel. | `{Prefix}readme` or `{Prefix}guide`")
            .Do(async e =>
                await e.Channel.SendMessage("Test Successful").ConfigureAwait(false));

            cgb.CreateCommand(Module.Prefix + "setrealname")
            .Alias(Module.Prefix + "iam")
            .Description($"Sets your real life name. | `{Prefix}setrealname` or `{Prefix}iam`")
            .Parameter("realname", ParameterType.Unparsed)
            .Do(async e =>
            {
                User user     = new User();
                user.uid      = e.User.Id;
                user.username = e.User.Name;
                user.realname = e.GetArg("realname");

                var result = await SerializeUserDataAsync(user);

                await e.Channel.SendMessage(result).ConfigureAwait(false);
            });

            cgb.CreateCommand(Module.Prefix + "realname")
            .Alias(Module.Prefix + "whois")
            .Description($"Displays the real name of a mentioned user. | `{Prefix}realname` or `{Prefix}whois`")
            .Parameter("username", ParameterType.Required)
            .Do(async e =>
            {
                string resp = "Could not find the real name of that user.";
                User user   = await DeserializeUserDataAsync(e.GetArg("username"));
                if (!string.IsNullOrWhiteSpace(user.realname))
                {
                    resp = $"Real name of {user.username} is {user.realname}.";
                }
                await e.Channel.SendMessage(resp).ConfigureAwait(false);
            });
        }
Example #14
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "h")
            .Alias(Module.Prefix + "help", MidnightBot.BotMention + " help", MidnightBot.BotMention + " h", "~h")
            .Description("Hilfe-Befehl. | `-h !m q` oder einfach `-h`")
            .Parameter("module", ParameterType.Unparsed)
            .Do(HelpFunc());
            cgb.CreateCommand(Module.Prefix + "hh")
            .Description("Hilfe-Befehl. | `-hh !m q` or just `-h` ")
            .Parameter("command", ParameterType.Unparsed)
            .Do(NewHelpFunc());
            cgb.CreateCommand(Module.Prefix + "hgit")
            .Description($"commandlist.md Datei erstellung. **Bot Owner Only!** | `{Prefix}hgit`")
            .AddCheck(SimpleCheckers.OwnerOnly())
            .Do(DoGitFunc());
            cgb.CreateCommand(Module.Prefix + "readme")
            .Alias(Module.Prefix + "guide")
            .Description($"Sendet eine readme und ein Guide verlinkt zum Channel. | `{Prefix}readme` or `{Prefix}guide`")
            .AddCheck(SimpleCheckers.OwnerOnly())
            .Do(async e =>
                await e.Channel.SendMessage(
                    @"**Wiki with all info**: <https://github.com/Midnight-Myth/MidnightBot/wiki>

 **WINDOWS SETUP GUIDE**: <https://github.com/Midnight-Myth/MidnightBot/blob/master/ComprehensiveGuide.md>
  
 **LINUX SETUP GUIDE**: <https://github.com/Midnight-Myth/MidnightBot/blob/master/LinuxSetup.md>

**LIST OF COMMANDS**: <https://github.com/Midnight-Myth/MidnightBot/blob/master/commandlist.md>").ConfigureAwait(false));

            cgb.CreateCommand(Module.Prefix + "donate")
            .Alias("~donate")
            .Description($"Informationen um das Projekt zu unterstützen! | `{Prefix}donate` or `{Prefix}donate`")
            .Do(async e =>
            {
                await e.Channel.SendMessage(
                    @"Habt Spaß"
                    ).ConfigureAwait(false);
            });
        }
Example #15
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "wowjoke")
     .Description("Get one of Kwoth's penultimate WoW jokes.")
     .Do(async e =>
     {
         if (!jokes.Any())
         {
             jokes = JsonConvert.DeserializeObject <List <WoWJoke> >(File.ReadAllText("data/wowjokes.json"));
         }
         await e.Channel.SendMessage(jokes[new Random().Next(0, jokes.Count)].ToString());
     });
 }
Example #16
0
        public void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("t")
            .Description("Starts a game of trivia.")
            .Alias("-t")
            .Do(DoFunc());

            cgb.CreateCommand("tl")
            .Description("Shows a current trivia leaderboard.")
            .Alias("-tl")
            .Alias("tlb")
            .Alias("-tlb")
            .Do(async e => {
                TriviaGame trivia;
                if (RunningTrivias.TryGetValue(e.Server.Id, out trivia))
                {
                    await e.Channel.SendMessage(trivia.GetLeaderboard());
                }
                else
                {
                    await e.Channel.SendMessage("No trivia is running on this server.");
                }
            });

            cgb.CreateCommand("tq")
            .Description("Quits current trivia after current question.")
            .Alias("-tq")
            .Do(async e => {
                TriviaGame trivia;
                if (RunningTrivias.TryGetValue(e.Server.Id, out trivia))
                {
                    await trivia.StopGame();
                }
                else
                {
                    await e.Channel.SendMessage("No trivia is running on this server.");
                }
            });
        }
Example #17
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "h")
            .Alias(Module.Prefix + "help", NadekoBot.BotMention + " help", NadekoBot.BotMention + " h", "~h")
            .Description("Either shows a help for a single command, or PMs you help link if no arguments are specified.\n**Usage**: '-h !m q' or just '-h' ")
            .Parameter("command", ParameterType.Unparsed)
            .Do(HelpFunc());
            cgb.CreateCommand(Module.Prefix + "hgit")
            .Description("Generates the commandlist.md file. **Owner Only!**")
            .AddCheck(SimpleCheckers.OwnerOnly())
            .Do(DoGitFunc());
            cgb.CreateCommand(Module.Prefix + "readme")
            .Alias(Module.Prefix + "guide")
            .Description("Sends a readme and a guide links to the channel.")
            .Do(async e =>
                await e.Channel.SendMessage(
                    @"**FULL README**: <https://github.com/Kwoth/NadekoBot/blob/master/README.md>

**WINDOWS SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md>

**LINUX SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/LinuxSetup.md>

**LIST OF COMMANDS**: <https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>").ConfigureAwait(false));

            cgb.CreateCommand(Module.Prefix + "donate")
            .Alias("~donate")
            .Description("Instructions for helping the project!")
            .Do(async e =>
            {
                await e.Channel.SendMessage(
                    $@"I've created a **paypal** email for nadeko, so if you wish to support the project, you can send your donations to `[email protected]`
Don't forget to leave your discord name or id in the message, so that I can reward people who help out.
You can join nadekobot server by typing {Module.Prefix}h and you will get an invite in a private message.

*If you want to support in some other way or on a different platform, please message me*"
                    ).ConfigureAwait(false);
            });
        }
Example #18
0
        public override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("t")
            .Description("Starts a game of trivia.")
            .Alias("-t")
            .Do(DoFunc());

            cgb.CreateCommand("tl")
            .Description("Shows a current trivia leaderboard.")
            .Alias("-tl")
            .Alias("tlb")
            .Alias("-tlb")
            .Do(async e => {
                if (runningTrivias.ContainsKey(e.Server))
                {
                    await e.Channel.SendMessage(runningTrivias[e.Server].GetLeaderboard());
                }
                else
                {
                    await e.Channel.SendMessage("No trivia is running on this server.");
                }
            });

            cgb.CreateCommand("tq")
            .Description("Quits current trivia after current question.")
            .Alias("-tq")
            .Do(async e => {
                if (runningTrivias.ContainsKey(e.Server))
                {
                    runningTrivias[e.Server].StopGame();
                }
                else
                {
                    await e.Channel.SendMessage("No trivia is running on this server.");
                }
            });
        }
Example #19
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "h")
            .Alias(Module.Prefix + "help", NadekoBot.BotMention + " help", NadekoBot.BotMention + " h", "~h")
            .Description($"Either shows a help for a single command, or PMs you help link if no arguments are specified. | `{Prefix}h !m q` or just `{Prefix}h` ")
            .Parameter("command", ParameterType.Unparsed)
            .Do(HelpFunc());
            cgb.CreateCommand(Module.Prefix + "hgit")
            .Description($"Generates the commandlist.md file. **Bot Owner Only!** | `{Prefix}hgit`")
            .AddCheck(SimpleCheckers.OwnerOnly())
            .Do(DoGitFunc());
            cgb.CreateCommand(Module.Prefix + "readme")
            .Alias(Module.Prefix + "guide")
            .Description($"Sends a readme and a guide links to the channel. | `{Prefix}readme` or `{Prefix}guide`")
            .Do(async e =>
                await e.Channel.SendMessage(
                    @"**Wiki with all info**: <https://github.com/Kwoth/NadekoBot/wiki>

**WINDOWS SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md>

**LINUX SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/LinuxSetup.md>

**LIST OF COMMANDS**: <https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>").ConfigureAwait(false));

            cgb.CreateCommand(Module.Prefix + "donate")
            .Alias("~donate")
            .Description($"Instructions for helping the project! | `{Prefix}donate` or `~donate`")
            .Do(async e =>
            {
                await e.Channel.SendMessage(
                    $@"You can support the project on patreon. <https://patreon.com/nadekobot> or
You can send donations to `[email protected]`
Don't forget to leave your discord name or id in the message.

**Thank you** ♥️").ConfigureAwait(false);
            });
        }
Example #20
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Prefix + "londonNextMeetup").Alias(NadekoBot.BotMention + " when is the next london meetup?", NadekoBot.BotMention + " when is the next London meetup?", NadekoBot.BotMention + " When is the next London meetup?")
     .Description("Have de")
     .Do(e =>
     {
         var uri = "https://api.meetup.com/London-Deviant-Robot-Comics-movie-games-and-geeks/events?page=1&fields=plain_text_description";
         postNextEventToChannel(e, uri);
     });
     cgb.CreateCommand(Prefix + "leedsNextMeetup").Alias(NadekoBot.BotMention + " when is the next leeds meetup?", NadekoBot.BotMention + " when is the next Leeds meetup?", NadekoBot.BotMention + " When is the next Leeds meetup?")
     .Description("Is deviant test")
     .Do(e =>
     {
         var uri = "https://api.meetup.com/Leeds-Deviant-Robot-Comics-movies-games-and-geeks/events?page=1&fields=plain_text_description";
         postNextEventToChannel(e, uri);
     });
     cgb.CreateCommand(Prefix + "cambridgeNextMeetup").Alias(NadekoBot.BotMention + " when is the next cambridge meetup?", NadekoBot.BotMention + " when is the next Cambridge meetup?", NadekoBot.BotMention + " When is the next Cambridge meetup?")
     .Description("Is deviant test")
     .Do(e =>
     {
         var uri = "https://api.meetup.com/Cambridge-Deviant-Robot-Comics-movie-games-and-geeks/events?page=1&fields=plain_text_description";
         postNextEventToChannel(e, uri);
     });
 }
Example #21
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "hs")
            .Description("Executes a haskell express with LAMBDABOT")
            .Parameter("command", ParameterType.Unparsed)
            .Do(e =>
            {
                var com = e.GetArg("command")?.Trim();
                if (string.IsNullOrWhiteSpace(com))
                {
                    return;
                }

                //send a command and a channel to the queue
                commandQueue.Enqueue(new KeyValuePair <string, Channel>(com, e.Channel));
            });
        }
Example #22
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            apiconfigs = JsonConvert.DeserializeObject <List <APIConfig> > (File.ReadAllText("data/apis.json"));

            foreach (var config in apiconfigs)
            {
                var cmd     = cgb.CreateCommand(Module.Prefix + config.Names.FirstOrDefault());
                var aliases = config.Names.Skip(1);
                if (aliases.Any())
                {
                    cmd.Alias(aliases.Select(x => Module.Prefix + x).ToArray());
                }
                cmd.Parameter("query", ParameterType.Unparsed);
                cmd.Description($"Queries {config.URL}.");
                cmd.Do(APIQuery(config));
            }
        }
Example #23
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "v+t")
     .Alias(Module.Prefix + "voice+text")
     .Description("Creates a text channel for each voice channel only users in that voice channel can see." +
                  "If you are server owner, keep in mind you will see them all the time regardless.")
     .AddCheck(SimpleCheckers.ManageChannels())
     .AddCheck(SimpleCheckers.CanManageRoles)
     .Do(async e =>
     {
         try
         {
             var config = SpecificConfigurations.Default.Of(e.Server.Id);
             if (config.VoicePlusTextEnabled == true)
             {
                 config.VoicePlusTextEnabled = false;
                 foreach (var textChannel in e.Server.TextChannels.Where(c => c.Name.EndsWith("-voice")))
                 {
                     try
                     {
                         await textChannel.Delete().ConfigureAwait(false);
                     }
                     catch
                     {
                         await e.Channel.SendMessage(
                             ":anger: Error: Most likely i don't have permissions to do this.")
                         .ConfigureAwait(false);
                         return;
                     }
                 }
                 await e.Channel.SendMessage("Successfuly removed voice + text feature.").ConfigureAwait(false);
                 return;
             }
             config.VoicePlusTextEnabled = true;
             await e.Channel.SendMessage("Successfuly enabled voice + text feature. " +
                                         "**Make sure the bot has manage roles and manage channels permissions**")
             .ConfigureAwait(false);
         }
         catch (Exception ex)
         {
             await e.Channel.SendMessage(ex.ToString()).ConfigureAwait(false);
         }
     });
 }
Example #24
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "slowmode")
     .Description($"Schaltet Slow Mode um. Wenn AN, Benutzer können nur alle 5 Sekunden eine Nachricht schicken. | `{Prefix}slowmode`")
     .AddCheck(SimpleCheckers.ManageMessages())
     .Do(async e =>
     {
         ConcurrentDictionary <ulong, DateTime> throwaway;
         if (RatelimitingChannels.TryRemove(e.Channel.Id, out throwaway))
         {
             await e.Channel.SendMessage("Slow Mode deaktiviert.").ConfigureAwait(false);
             return;
         }
         if (RatelimitingChannels.TryAdd(e.Channel.Id, new ConcurrentDictionary <ulong, DateTime> ()))
         {
             await e.Channel.SendMessage("Slow Mode aktivier. " +
                                         "Benutzer können nicht mehr als 1 Nachricht, alle 5 Sekunden schicken.")
             .ConfigureAwait(false);
         }
     });
 }
Example #25
0
        public void CreateCommandBasedOnCommandInfo(CommandGroupBuilder cgb, CommandInfo commandInfo)
        {
            CommandBuilder command = cgb.CreateCommand(commandInfo.GetSubCommand())
                                     .Description(commandInfo.GetDescription());
            List <CommandParam> paramStrings = commandInfo.GetParams();

            if (paramStrings == null)
            {
                command.Do(commandInfo.GetAction()); return;
            }

            foreach (var param in commandInfo.GetParams())
            {
                if (param.IsRequired())
                {
                    command.Parameter(param.GetParamName(), ParameterType.Required); continue;
                }
                command.Parameter(param.GetParamName());
            }
            command.Do(commandInfo.GetAction());
        }
Example #26
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "slowmode")
     .Description($"Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. **Needs Manage Messages Permissions.**| `{Prefix}slowmode`")
     .AddCheck(SimpleCheckers.ManageMessages())
     .Do(async e =>
     {
         ConcurrentDictionary <ulong, DateTime> throwaway;
         if (RatelimitingChannels.TryRemove(e.Channel.Id, out throwaway))
         {
             await e.Channel.SendMessage("Slow mode disabled.").ConfigureAwait(false);
             return;
         }
         if (RatelimitingChannels.TryAdd(e.Channel.Id, new ConcurrentDictionary <ulong, DateTime>()))
         {
             await e.Channel.SendMessage("Slow mode initiated. " +
                                         "Users can't send more than 1 message every 5 seconds.")
             .ConfigureAwait(false);
         }
     });
 }
Example #27
0
        internal static void CreateJsonCommand(CommandGroupBuilder group, KeyValuePair <string, JToken> cmdjson, Action <CommandBuilder, JToken> cmd_specific)
        {
            var cmd = group.CreateCommand(cmdjson.Key);
            var val = cmdjson.Value;

            if (FieldExists(val, "aliases"))
            {
                foreach (var alias in val["aliases"])
                {
                    cmd.Alias(alias.ToString());
                }
            }
            if (FieldExists(val, "description"))
            {
                cmd.Description(val["description"].ToString());
            }
            if (FieldExists(val, "permissions"))
            {
                cmd.MinPermissions(val["permissions"].ToObject <int>());
            }
            cmd_specific(cmd, val);
        }
Example #28
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "leet")
     .Description($"Converts a text to leetspeak with 6 (1-6) severity levels | `{Module.Prefix}leet 3 Hello`")
     .Parameter("level", ParameterType.Required)
     .Parameter("text", ParameterType.Unparsed)
     .Do(async e =>
     {
         var text     = e.GetArg("text")?.Trim();
         var levelStr = e.GetArg("level")?.Trim();
         int level;
         if (!int.TryParse(levelStr, out level))
         {
             return;
         }
         if (string.IsNullOrWhiteSpace(text))
         {
             return;
         }
         await e.Channel.SendMessage(ToLeet(text, level)).ConfigureAwait(false);
     });
 }
Example #29
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand($"{Module.Prefix}bmb")
     .Description("Creates a bomberman game for this channel or join existing one." +
                  " If you are 4th player - Game will start. After game starts " +
                  " everything written in the channel will be autodeleted and treated as a bomberman command." +
                  " only one bomberman game can run at any one time per bot. Game will run at 1FPS." +
                  " You must have manage messages permissions in order to create the game.")
     .Do(e =>
     {
         lock (locker)
         {
             if (bombGame == null || bombGame.Ended)
             {
                 if (!e.User.ServerPermissions.ManageMessages ||
                     !e.Server.GetUser(NadekoBot.Client.CurrentUser.Id).ServerPermissions.ManageMessages)
                 {
                     e.Channel.SendMessage("Both you and Nadeko need manage messages permissions to start a new bomberman game.").Wait();
                 }
             }
         }
     });
 }
Example #30
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "autoassignrole")
            .Alias(Module.Prefix + "aar")
            .Description($"Automaticaly assigns a specified role to every user who joins the server. **Needs Manage Roles Permissions.** |`{Prefix}aar` to disable, `{Prefix}aar Role Name` to enable")
            .Parameter("role", ParameterType.Unparsed)
            .AddCheck(new SimpleCheckers.ManageRoles())
            .Do(async e =>
            {
                if (!e.Server.CurrentUser.ServerPermissions.ManageRoles)
                {
                    await e.Channel.SendMessage("I do not have the permission to manage roles.").ConfigureAwait(false);
                    return;
                }
                var r = e.GetArg("role")?.Trim();

                var config = SpecificConfigurations.Default.Of(e.Server.Id);

                if (string.IsNullOrWhiteSpace(r))     //if role is not specified, disable
                {
                    config.AutoAssignedRole = 0;

                    await e.Channel.SendMessage("`Auto assign role on user join is now disabled.`").ConfigureAwait(false);
                    return;
                }
                var role = e.Server.FindRoles(r).FirstOrDefault();

                if (role == null)
                {
                    await e.Channel.SendMessage("💢 `Role not found.`").ConfigureAwait(false);
                    return;
                }

                config.AutoAssignedRole = role.Id;
                await e.Channel.SendMessage("`Auto assigned role is set.`").ConfigureAwait(false);
            });
        }