示例#1
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.Send(runningTrivias[e.Server].GetLeaderboard());
                    else
                        await e.Send("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.Send("No trivia is running on this server.");
                });
        }
示例#2
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Prefix + "memelist")
                .Description($"Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ | `{Prefix}memelist`")
                .Do(async e =>
                {
                    int i = 0;
                    await e.Channel.SendMessage("`List Of Commands:`\n```xl\n" +
                                string.Join("\n", JsonConvert.DeserializeObject<Dictionary<string, string>>(await SearchHelper.GetResponseStringAsync("http://memegen.link/templates/"))
                                      .Select(kvp => Path.GetFileName(kvp.Value))
                                      .GroupBy(item => (i++) / 4)
                                      .Select(ig => string.Concat(ig.Select(el => $"{el,-17}"))))
                                      + $"\n```").ConfigureAwait(false);
                });

            cgb.CreateCommand(Prefix + "memegen")
                .Description($"Generates a meme from memelist with top and bottom text. | `{Prefix}memegen biw \"gets iced coffee\" \"in the winter\"`")
                .Parameter("meme", ParameterType.Required)
                .Parameter("toptext", ParameterType.Required)
                .Parameter("bottext", ParameterType.Required)
                .Do(async e =>
                {
                    var meme = e.GetArg("meme");
                    var top = Uri.EscapeDataString(e.GetArg("toptext").Replace(' ', '-'));
                    var bot = Uri.EscapeDataString(e.GetArg("bottext").Replace(' ', '-'));
                    await e.Channel.SendMessage($"http://memegen.link/{meme}/{top}/{bot}.jpg");
                });
        }
示例#3
0
        public override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("-h")
                .Alias(new string[] { "-help", NadekoBot.botMention + " help", NadekoBot.botMention + " h", "~h" })
                .Description("Help command")
                .Do(DoFunc());
            cgb.CreateCommand("-hgit")
                .Description("Help command stylized for github readme")
                .Do(DoGitFunc());
            cgb.CreateCommand("-readme")
                .Alias("-guide")
                .Description("Sends a readme and a guide links to the channel.")
                .Do(async e =>
                    await e.Send("**FULL README**: <https://github.com/Kwoth/NadekoBot/blob/master/readme.md>\n\n**GUIDE ONLY**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md>"));
            cgb.CreateCommand("-donate")
                .Description("Instructions for helping the project!")
                .Do(async e => {
                    await e.Send(
@"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 simply private messaging NadekoBot, and you will get an invite.

*If you want to support in some other way or on a different platform, please message me there*"
                    );
                });
        }
示例#4
0
文件: PollCommand.cs 项目: ZR2/l
        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);
                  });
        }
示例#5
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "listincidents")
                .Alias(Prefix + "lin")
                .Description($"List all UNREAD incidents and flags them as read. **Needs Manage Server Permissions.**| `{Prefix}lin`")
                .AddCheck(SimpleCheckers.ManageServer())
                .Do(async e =>
                {
                    var sid = (long)e.Server.Id;
                    var incs = DbHandler.Instance.FindAll<Incident>(i => i.ServerId == sid && i.Read == false);
                    DbHandler.Instance.Connection.UpdateAll(incs.Select(i => { i.Read = true; return i; }));

                    await e.User.SendMessage(string.Join("\n----------------------", incs.Select(i => i.Text)));
                });

            cgb.CreateCommand(Module.Prefix + "listallincidents")
                .Alias(Prefix + "lain")
                .Description($"Sends you a file containing all incidents and flags them as read. **Needs Manage Server Permissions.**| `{Prefix}lain`")
                .AddCheck(SimpleCheckers.ManageServer())
                .Do(async e =>
                {
                    var sid = (long)e.Server.Id;
                    var incs = DbHandler.Instance.FindAll<Incident>(i => i.ServerId == sid);
                    DbHandler.Instance.Connection.UpdateAll(incs.Select(i => { i.Read = true; return i; }));
                    var data = string.Join("\n----------------------\n", incs.Select(i => i.Text));
                    MemoryStream ms = new MemoryStream();
                    var sw = new StreamWriter(ms);
                    sw.WriteLine(data);
                    sw.Flush();
                    sw.BaseStream.Position = 0;
                    await e.User.SendFile("incidents.txt", sw.BaseStream);
                });
        }
示例#6
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "t")
                .Description($"Starts a game of trivia. You can add nohint to prevent hints." +
                              "First player to get to 10 points wins by default. You can specify a different number. 30 seconds per question." +
                              $" |`{Module.Prefix}t nohint` or `{Module.Prefix}t 5 nohint`")
                .Parameter("args", ParameterType.Multiple)
                .Do(async e =>
                {
                    TriviaGame trivia;
                    if (!RunningTrivias.TryGetValue(e.Server.Id, out trivia))
                    {
                        var showHints = !e.Args.Contains("nohint");
                        var number = e.Args.Select(s =>
                        {
                            int num;
                            return new Tuple<bool, int>(int.TryParse(s, out num), num);
                        }).Where(t => t.Item1).Select(t => t.Item2).FirstOrDefault();
                        if (number < 3)
                        {
                            await e.Channel.SendMessage("Number too small.");
                            return;
                        }
                        var triviaGame = new TriviaGame(e, showHints, number == 0 ? 10 : number);
                        if (RunningTrivias.TryAdd(e.Server.Id, triviaGame))
                            await e.Channel.SendMessage($"**Trivia game started! {triviaGame.WinRequirement} points needed to win.**").ConfigureAwait(false);
                        else
                            await triviaGame.StopGame().ConfigureAwait(false);
                    }
                    else
                        await e.Channel.SendMessage("Trivia game is already running on this server.\n" + trivia.CurrentQuestion).ConfigureAwait(false);
                });

            cgb.CreateCommand(Module.Prefix + "tl")
                .Description($"Shows a current trivia leaderboard. | `{Prefix}tl`")
                .Do(async e =>
                {
                    TriviaGame trivia;
                    if (RunningTrivias.TryGetValue(e.Server.Id, out trivia))
                        await e.Channel.SendMessage(trivia.GetLeaderboard()).ConfigureAwait(false);
                    else
                        await e.Channel.SendMessage("No trivia is running on this server.").ConfigureAwait(false);
                });

            cgb.CreateCommand(Module.Prefix + "tq")
                .Description($"Quits current trivia after current question. | `{Prefix}tq`")
                .Do(async e =>
                {
                    TriviaGame trivia;
                    if (RunningTrivias.TryGetValue(e.Server.Id, out trivia))
                    {
                        await trivia.StopGame().ConfigureAwait(false);
                    }
                    else
                        await e.Channel.SendMessage("No trivia is running on this server.").ConfigureAwait(false);
                });
        }
示例#7
0
文件: DiceRollCommand.cs 项目: ZR2/l
 public override void Init(CommandGroupBuilder cgb) {
     cgb.CreateCommand("$roll")
         .Description("Rolls 2 dice from 0-10. If you supply a number [x] it rolls up to 30 normal dice.\n**Usage**: $roll [x]")
         .Parameter("num", ParameterType.Optional)
         .Do(DoFunc());
     cgb.CreateCommand("$nroll")
         .Description("Rolls in a given range.\n**Usage**: `$nroll 5` (rolls 0-5) or `$nroll 5-15`")
         .Parameter("range", ParameterType.Required)
         .Do(NDoFunc());
 }
示例#8
0
 public override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand("-h")
         .Alias(new string[] { "-help", NadekoBot.botMention + " help", NadekoBot.botMention + " h", "~h" })
         .Description("Help command")
         .Do(DoFunc());
     cgb.CreateCommand("-hgit")
         .Description("Help command stylized for github readme")
         .Do(DoGitFunc());
 }
示例#9
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "convert")
         .Description("Convert quantities from>to. Like `~convert m>km 1000`")
         .Parameter("from-to", ParameterType.Required)
         .Parameter("quantity", ParameterType.Optional)
         .Do(ConvertFunc());
     cgb.CreateCommand(Module.Prefix + "convertlist")
         .Description("List of the convertable dimensions and currencies.")
         .Do(ConvertListFunc());
 }
示例#10
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.\n**Usage**: $roll or $roll 7 or $roll 3d5")
         .Parameter("num", ParameterType.Optional)
         .Do(RollFunc());
     cgb.CreateCommand(Module.Prefix + "nroll")
         .Description("Rolls in a given range.\n**Usage**: `$nroll 5` (rolls 0-5) or `$nroll 5-15`")
         .Parameter("range", ParameterType.Required)
         .Do(NRollFunc());
 }
示例#11
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "pick")
                .Description("Picks a flower planted in this channel.")
                .Do(async e =>
                {
                    Message msg;

                    await e.Message.Delete().ConfigureAwait(false);
                    if (!plantedFlowerChannels.TryRemove(e.Channel.Id, out msg))
                        return;

                    await msg.Delete().ConfigureAwait(false);
                    await FlowersHandler.AddFlowersAsync(e.User, "Picked a flower.", 1, true).ConfigureAwait(false);
                    msg = await e.Channel.SendMessage($"**{e.User.Name}** picked a {NadekoBot.Config.CurrencyName}!").ConfigureAwait(false);
                    await Task.Delay(10000).ConfigureAwait(false);
                    await msg.Delete().ConfigureAwait(false);
                });

            cgb.CreateCommand(Module.Prefix + "plant")
                .Description("Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost)")
                .Do(async e =>
                {
                    lock (locker)
                    {
                        if (plantedFlowerChannels.ContainsKey(e.Channel.Id))
                        {
                            e.Channel.SendMessage($"There is already a {NadekoBot.Config.CurrencyName} in this channel.");
                            return;
                        }
                        var removed = FlowersHandler.RemoveFlowers(e.User, "Planted a flower.", 1);
                        if (!removed)
                        {
                            e.Channel.SendMessage($"You don't have any {NadekoBot.Config.CurrencyName}s.").Wait();
                            return;
                        }

                        var rng = new Random();
                        var file = Directory.GetFiles("data/currency_images").OrderBy(s => rng.Next()).FirstOrDefault();
                        Message msg;
                        //todo send message after, not in lock
                        if (file == null)
                            msg = e.Channel.SendMessage(NadekoBot.Config.CurrencySign).GetAwaiter().GetResult();
                        else
                            msg = e.Channel.SendFile(file).GetAwaiter().GetResult();
                        plantedFlowerChannels.TryAdd(e.Channel.Id, msg);
                    }
                    var vowelFirst = new[] { 'a', 'e', 'i', 'o', 'u' }.Contains(NadekoBot.Config.CurrencyName[0]);
                    var msg2 = await e.Channel.SendMessage($"Oh how Nice! **{e.User.Name}** planted {(vowelFirst ? "an" : "a")} {NadekoBot.Config.CurrencyName}. Pick it using {Module.Prefix}pick");
                    await Task.Delay(20000).ConfigureAwait(false);
                    await msg2.Delete().ConfigureAwait(false);
                });
        }
示例#12
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "draw")
                .Description($"Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck. | `{Prefix}draw [x]`")
                .Parameter("count", ParameterType.Optional)
                .Do(DrawCardFunc());

            cgb.CreateCommand(Module.Prefix + "shuffle")
                .Alias(Module.Prefix + "sh")
                .Description($"Reshuffles all cards back into the deck.|`{Prefix}shuffle`")
                .Do(ReshuffleTask());
        }
示例#13
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand("copyme")
                .Alias("cm")
                .Description("Nadeko starts copying everything you say. Disable with cs")
                .Do(DoFunc());

            cgb.CreateCommand("cs")
                .Alias("copystop")
                .Description("Nadeko stops copying you")
                .Do(StopCopy());
        }
示例#14
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "flip")
                .Description($"Flips coin(s) - heads or tails, and shows an image. | `{Prefix}flip` or `{Prefix}flip 3`")
                .Parameter("count", ParameterType.Optional)
                .Do(FlipCoinFunc());

            cgb.CreateCommand(Module.Prefix + "betflip")
                .Alias(Prefix+"bf")
                .Description($"Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. | `{Prefix}bf 5 heads` or `{Prefix}bf 3 t`")
                .Parameter("amount", ParameterType.Required)
                .Parameter("guess", ParameterType.Required)
                .Do(BetFlipCoinFunc());
        }
示例#15
0
文件: HelpCommand.cs 项目: ZR2/l
 public override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand("-h")
         .Alias(new string[] { "-help", NadekoBot.botMention + " help", NadekoBot.botMention + " h", "~h" })
         .Description("Help command")
         .Do(DoFunc());
     cgb.CreateCommand("-hgit")
         .Description("Help command stylized for github readme")
         .Do(DoGitFunc());
     cgb.CreateCommand("-readme")
         .Alias("-guide")
         .Description("Sends a readme and a guide links to the channel.")
         .Do(async e =>
             await e.Send("**FULL README**: <https://github.com/Kwoth/NadekoBot/blob/master/readme.md>\n\n**GUIDE ONLY**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md>"));
 }
示例#16
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "flip")
         .Description("Flips coin(s) - heads or tails, and shows an image.\n**Usage**: `$flip` or `$flip 3`")
         .Parameter("count", ParameterType.Optional)
         .Do(FlipCoinFunc());
 }
示例#17
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "leave")
         .Description("Makes Nadeko leave the server. Either name or id required.\n**Usage**: `.leave 123123123331`")
         .Parameter("arg", ParameterType.Required)
         .AddCheck(SimpleCheckers.OwnerOnly())
         .Do(async e =>
         {
             var arg = e.GetArg("arg").Trim();
             var server = NadekoBot.Client.Servers.FirstOrDefault(s => s.Id.ToString() == arg) ??
                          NadekoBot.Client.FindServers(arg).FirstOrDefault();
             if (server == null)
             {
                 await e.Channel.SendMessage("Cannot find that server").ConfigureAwait(false);
                 return;
             }
             if (!server.IsOwner)
             {
                 await server.Leave().ConfigureAwait(false);
             }
             else
             {
                 await server.Delete().ConfigureAwait(false);
             }
             await NadekoBot.SendMessageToOwner("Left server " + server.Name).ConfigureAwait(false);
         });
 }
示例#18
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());
 }
示例#19
0
文件: DrawCommand.cs 项目: ZR2/l
        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.Send("Deck reshuffled.");
                });
        }
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "translangs")
         .Description("List the valid languages for translation.")
         .Parameter("search", ParameterType.Optional)
         .Do(ListLanguagesFunc());
 }
示例#21
0
文件: RipCommand.cs 项目: Ryonez/Lucy
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand("rip")
             .Description("Shows a grave image of someone with a start year | `@NadekoBot rip @Someone 2000`")
             .Parameter("user", ParameterType.Required)
             .Parameter("year", ParameterType.Optional)
             .Do(async e =>
             {
                 if (string.IsNullOrWhiteSpace(e.GetArg("user")))
                     return;
                 var usr = e.Channel.FindUsers(e.GetArg("user")).FirstOrDefault();
                 var text = "";
                 Stream file;
                 if (usr == null)
                 {
                     text = e.GetArg("user");
                     file = RipName(text, string.IsNullOrWhiteSpace(e.GetArg("year"))
                             ? null
                             : e.GetArg("year"));
                 }
                 else
                 {
                     var avatar = await GetAvatar(usr.AvatarUrl);
                     text = usr.Name;
                     file = RipUser(text, avatar, string.IsNullOrWhiteSpace(e.GetArg("year"))
                             ? null
                             : e.GetArg("year"));
                 }
                 await e.Channel.SendFile("ripzor_m8.png",
                                     file);
             });
 }
示例#22
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.")
         .Parameter("minutes", ParameterType.Optional)
         .AddCheck(SimpleCheckers.ManageMessages())
         .Do(async e =>
         {
             //var minutesStr = e.GetArg("minutes");
             //if (string.IsNullOrWhiteSpace(minutesStr)) {
             //    RatelimitingChannels.Remove(e.Channel.Id);
             //    return;
             //}
             ConcurrentDictionary<ulong, DateTime> throwaway;
             if (RatelimitingChannels.TryRemove(e.Channel.Id, out throwaway))
             {
                 await e.Channel.SendMessage("Slow mode disabled.");
                 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.");
             }
         });
 }
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "voicenotif")
           .Description("Enables notifications on who joined/left the voice channel.\n**Usage**:.voicenotif Karaoke club")
           .Parameter("voice_name", ParameterType.Unparsed)
           .Do(DoFunc());
 }
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "cfi")
                .Alias(Module.Prefix + "channelfilterinvites")
                .Description("Enables or disables automatic deleting of invites on the channel." +
                             "If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once." +
                             "\n**Usage**: ;cfi enable #general-chat")
                .Parameter("bool")
                .Parameter("channel", ParameterType.Optional)
                .Do(async e =>
                {
                    try
                    {
                        var state = PermissionHelper.ValidateBool(e.GetArg("bool"));
                        var chanStr = e.GetArg("channel");

                        if (chanStr?.ToLowerInvariant().Trim() != "all")
                        {

                            var chan = string.IsNullOrWhiteSpace(chanStr)
                                ? e.Channel
                                : PermissionHelper.ValidateChannel(e.Server, chanStr);
                            PermissionsHandler.SetChannelFilterInvitesPermission(chan, state);
                            await e.Channel.SendMessage($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for **{chan.Name}** channel.");
                            return;
                        }
                        //all channels

                        foreach (var curChannel in e.Server.TextChannels)
                        {
                            PermissionsHandler.SetChannelFilterInvitesPermission(curChannel, state);
                        }
                        await e.Channel.SendMessage($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for **ALL** channels.");

                    }
                    catch (Exception ex)
                    {
                        await e.Channel.SendMessage($"💢 Error: {ex.Message}");
                    }
                });

            cgb.CreateCommand(Module.Prefix + "sfi")
                .Alias(Module.Prefix + "serverfilterinvites")
                .Description("Enables or disables automatic deleting of invites on the server.\n**Usage**: ;sfi disable")
                .Parameter("bool")
                .Do(async e =>
                {
                    try
                    {
                        var state = PermissionHelper.ValidateBool(e.GetArg("bool"));
                        PermissionsHandler.SetServerFilterInvitesPermission(e.Server, state);
                        await e.Channel.SendMessage($"Invite Filter has been **{(state ? "enabled" : "disabled")}** for this server.");

                    }
                    catch (Exception ex)
                    {
                        await e.Channel.SendMessage($"💢 Error: {ex.Message}");
                    }
                });
        }
示例#25
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "t")
                .Description($"Starts a game of trivia. You can add nohint to prevent hints." +
                              "First player to get to 10 points wins. 30 seconds per question." +
                              $"\n**Usage**:`{Module.Prefix}t nohint`")
                .Parameter("args", ParameterType.Multiple)
                .Do(async e =>
                {
                    TriviaGame trivia;
                    if (!RunningTrivias.TryGetValue(e.Server.Id, out trivia))
                    {
                        var showHints = !e.Args.Contains("nohint");
                        var triviaGame = new TriviaGame(e, showHints);
                        if (RunningTrivias.TryAdd(e.Server.Id, triviaGame))
                            await e.Channel.SendMessage("**Trivia game started!**");
                        else
                            await triviaGame.StopGame();
                    }
                    else
                        await e.Channel.SendMessage("Trivia game is already running on this server.\n" + trivia.CurrentQuestion);
                });

            cgb.CreateCommand(Module.Prefix + "tl")
                .Description("Shows a current trivia leaderboard.")
                .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(Module.Prefix + "tq")
                .Description("Quits current trivia after current question.")
                .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.");
                });
        }
示例#26
0
 public override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand("-h")
         .Alias(new string[] { "-help", NadekoBot.botMention + " help", NadekoBot.botMention + " h" })
         .Description("Help command")
         .Do(DoFunc());
     
 }
示例#27
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "trans")
         .Description("Translates from>to text. From the given language to the destiation language.")
         .Parameter("langs", ParameterType.Required)
         .Parameter("text", ParameterType.Unparsed)
         .Do(TranslateFunc());
 }
示例#28
0
 internal override void Init(CommandGroupBuilder cgb)
 {
     cgb.CreateCommand(Module.Prefix + "calculate")
         .Alias(Module.Prefix + "calc")
         .Description("Evaluate a mathematical expression.\n**Usage**: ~calc 1+1")
         .Parameter("expression", ParameterType.Unparsed)
         .Do(EvalFunc());
 }
示例#29
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Prefix + "race")
                .Description($"Starts a new animal race. | `{Prefix}race`")
                .Do(e =>
                {
                    var ar = new AnimalRace(e.Server.Id, e.Channel);
                    if (ar.Fail)
                    {
                        return;
                    }
                });


            cgb.CreateCommand(Prefix + "joinrace")
                .Alias(Prefix + "jr")
                .Description($"Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. | `{Prefix}jr` or `{Prefix}jr 5`")
                .Parameter("amount", ParameterType.Optional)
                .Do(async e =>
                {

                    int amount;
                    if (!int.TryParse(e.GetArg("amount"), out amount) || amount < 0)
                        amount = 0;

                    var userFlowers = GamblingModule.GetUserFlowers(e.User.Id);

                    if (userFlowers < amount)
                    {
                        await e.Channel.SendMessage($"{e.User.Mention} You don't have enough {NadekoBot.Config.CurrencyName}s. You only have {userFlowers}{NadekoBot.Config.CurrencySign}.").ConfigureAwait(false);
                        return;
                    }

                    if (amount > 0)
                        await FlowersHandler.RemoveFlowers(e.User, "BetRace", (int)amount, true).ConfigureAwait(false);

                    AnimalRace ar;
                    if (!AnimalRaces.TryGetValue(e.Server.Id, out ar))
                    {
                        await e.Channel.SendMessage("No race exists on this server");
                        return;
                    }
                    await ar.JoinRace(e.User, amount);

                });
        }
示例#30
0
        internal override void Init(CommandGroupBuilder cgb)
        {
            cgb.CreateCommand(Module.Prefix + "scsc")
                .Description("Starts an instance of cross server channel. You will get a token as a DM " +
                             $"that other people will use to tune in to the same instance. **Bot Owner Only.** | `{Prefix}scsc`")
                .AddCheck(SimpleCheckers.OwnerOnly())
                .Do(async e =>
                {
                    var token = new Random().Next();
                    var set = new HashSet<Channel>();
                    if (Subscribers.TryAdd(token, set))
                    {
                        set.Add(e.Channel);
                        await e.User.SendMessage("This is your CSC token:" + token.ToString()).ConfigureAwait(false);
                    }
                });

            cgb.CreateCommand(Module.Prefix + "jcsc")
                .Description($"Joins current channel to an instance of cross server channel using the token. **Needs Manage Server Permissions.**| `{Prefix}jcsc`")
                .Parameter("token")
                .AddCheck(SimpleCheckers.ManageServer())
                .Do(async e =>
                {
                    int token;
                    if (!int.TryParse(e.GetArg("token"), out token))
                        return;
                    HashSet<Channel> set;
                    if (!Subscribers.TryGetValue(token, out set))
                        return;
                    set.Add(e.Channel);
                    await e.Channel.SendMessage(":ok:").ConfigureAwait(false);
                });

            cgb.CreateCommand(Module.Prefix + "lcsc")
                .Description($"Leaves Cross server channel instance from this channel. **Needs Manage Server Permissions.**| `{Prefix}lcsc`")
                .AddCheck(SimpleCheckers.ManageServer())
                .Do(async e =>
                {
                    foreach (var subscriber in Subscribers)
                    {
                        subscriber.Value.Remove(e.Channel);
                    }
                    await e.Channel.SendMessage(":ok:").ConfigureAwait(false);
                });
        }