Ejemplo n.º 1
0
        public async Task Gtn(CommandContext ctx, int number)
        {
            int computer = ThreadLocalRandom.Instance.Next(100);
            int guesses  = 0;

            await ctx.RespondAsync(computer.ToString());

            if (computer == number)
            {
                await ctx.RespondAsync("You guesses it! Nice Job");
            }
            else
            {
                while ((computer != number) || (guesses < 5))
                {
                    if (computer < number)
                    {
                        await ctx.RespondAsync("Go lower. " + (5 - guesses) + " guesses remaining.");
                    }
                    else if (computer > number)
                    {
                        await ctx.RespondAsync("Go higher. " + (5 - guesses) + " guesses remaining.");
                    }

                    string num = Console.ReadLine();
                    number = Int32.Parse(num);

                    guesses++;
                }

                if ((guesses < 5) && (computer == number))
                {
                    await ctx.RespondAsync("You guesses it! Nice Job");
                }
                else if (guesses >= 10)
                {
                    await ctx.RespondAsync("Bad Luck :( Try again later");
                }
            }

            await ctx.RespondAsync("The Number was " + computer.ToString());
        }
            public async Task DefaultHelpAsync(CommandContext ctx, [Description("Command to provide help for.")] params string[] command)
            {
                var topLevel    = ctx.CommandsNext.TopLevelCommands.Values.Distinct();
                var helpBuilder = ctx.CommandsNext.HelpFormatter.Create(ctx);

                if (command != null && command.Any())
                {
                    Command cmd      = null;
                    var     searchIn = topLevel;
                    foreach (var c in command)
                    {
                        if (searchIn == null)
                        {
                            cmd = null;
                            break;
                        }

                        if (ctx.Config.CaseSensitive)
                        {
                            cmd = searchIn.FirstOrDefault(xc => xc.Name == c || (xc.Aliases != null && xc.Aliases.Contains(c)));
                        }
                        else
                        {
                            cmd = searchIn.FirstOrDefault(xc => xc.Name.ToLowerInvariant() == c.ToLowerInvariant() || (xc.Aliases != null && xc.Aliases.Select(xs => xs.ToLowerInvariant()).Contains(c.ToLowerInvariant())));
                        }

                        if (cmd == null)
                        {
                            break;
                        }

                        var failedChecks = await cmd.RunChecksAsync(ctx, true).ConfigureAwait(false);

                        if (failedChecks.Any())
                        {
                            throw new ChecksFailedException(cmd, ctx, failedChecks);
                        }

                        if (cmd is CommandGroup)
                        {
                            searchIn = (cmd as CommandGroup).Children;
                        }
                        else
                        {
                            searchIn = null;
                        }
                    }

                    if (cmd == null)
                    {
                        throw new CommandNotFoundException(string.Join(" ", command));
                    }

                    helpBuilder.WithCommand(cmd);

                    if (cmd is CommandGroup group)
                    {
                        var commandsToSearch = group.Children.Where(xc => !xc.IsHidden);
                        var eligibleCommands = new List <Command>();
                        foreach (var candidateCommand in commandsToSearch)
                        {
                            if (candidateCommand.ExecutionChecks == null || !candidateCommand.ExecutionChecks.Any())
                            {
                                eligibleCommands.Add(candidateCommand);
                                continue;
                            }

                            var candidateFailedChecks = await candidateCommand.RunChecksAsync(ctx, true).ConfigureAwait(false);

                            if (!candidateFailedChecks.Any())
                            {
                                eligibleCommands.Add(candidateCommand);
                            }
                        }

                        if (eligibleCommands.Any())
                        {
                            helpBuilder.WithSubcommands(eligibleCommands.OrderBy(xc => xc.Name));
                        }
                    }
                }
                else
                {
                    var commandsToSearch = topLevel.Where(xc => !xc.IsHidden);
                    var eligibleCommands = new List <Command>();
                    foreach (var sc in commandsToSearch)
                    {
                        if (sc.ExecutionChecks == null || !sc.ExecutionChecks.Any())
                        {
                            eligibleCommands.Add(sc);
                            continue;
                        }

                        var candidateFailedChecks = await sc.RunChecksAsync(ctx, true).ConfigureAwait(false);

                        if (!candidateFailedChecks.Any())
                        {
                            eligibleCommands.Add(sc);
                        }
                    }

                    if (eligibleCommands.Any())
                    {
                        helpBuilder.WithSubcommands(eligibleCommands.OrderBy(xc => xc.Name));
                    }
                }

                var helpMessage = helpBuilder.Build();

                if (!ctx.Config.DmHelp || ctx.Channel is DiscordDmChannel || ctx.Guild == null)
                {
                    await ctx.RespondAsync(helpMessage.Content, embed : helpMessage.Embed).ConfigureAwait(false);
                }
                else
                {
                    await ctx.Member.SendMessageAsync(helpMessage.Content, embed : helpMessage.Embed).ConfigureAwait(false);
                }
            }
Ejemplo n.º 3
0
            public async Task DefaultHelpAsync(CommandContext ctx, [Description("Command to provide help for.")] params string[] command)
            {
                var toplevel    = ctx.CommandsNext.TopLevelCommands.Values.Distinct();
                var helpbuilder = ctx.CommandsNext.HelpFormatter.Create(ctx.Services, ctx.CommandsNext);

                if (command != null && command.Any())
                {
                    Command cmd       = null;
                    var     search_in = toplevel;
                    foreach (var c in command)
                    {
                        if (search_in == null)
                        {
                            cmd = null;
                            break;
                        }

                        if (ctx.Config.CaseSensitive)
                        {
                            cmd = search_in.FirstOrDefault(xc => xc.Name == c || (xc.Aliases != null && xc.Aliases.Contains(c)));
                        }
                        else
                        {
                            cmd = search_in.FirstOrDefault(xc => xc.Name.ToLowerInvariant() == c.ToLowerInvariant() || (xc.Aliases != null && xc.Aliases.Select(xs => xs.ToLowerInvariant()).Contains(c.ToLowerInvariant())));
                        }

                        if (cmd == null)
                        {
                            break;
                        }

                        var cfl = await cmd.RunChecksAsync(ctx, true).ConfigureAwait(false);

                        if (cfl.Any())
                        {
                            throw new ChecksFailedException(cmd, ctx, cfl);
                        }

                        if (cmd is CommandGroup)
                        {
                            search_in = (cmd as CommandGroup).Children;
                        }
                        else
                        {
                            search_in = null;
                        }
                    }

                    if (cmd == null)
                    {
                        throw new CommandNotFoundException(string.Join(" ", command));
                    }

                    helpbuilder.WithCommand(cmd);

                    if (cmd is CommandGroup gx)
                    {
                        var sxs = gx.Children.Where(xc => !xc.IsHidden);
                        var scs = new List <Command>();
                        foreach (var sc in sxs)
                        {
                            if (sc.ExecutionChecks == null || !sc.ExecutionChecks.Any())
                            {
                                scs.Add(sc);
                                continue;
                            }

                            var cfl = await sc.RunChecksAsync(ctx, true).ConfigureAwait(false);

                            if (!cfl.Any())
                            {
                                scs.Add(sc);
                            }
                        }

                        if (scs.Any())
                        {
                            helpbuilder.WithSubcommands(scs.OrderBy(xc => xc.Name));
                        }
                    }
                }
                else
                {
                    var sxs = toplevel.Where(xc => !xc.IsHidden);
                    var scs = new List <Command>();
                    foreach (var sc in sxs)
                    {
                        if (sc.ExecutionChecks == null || !sc.ExecutionChecks.Any())
                        {
                            scs.Add(sc);
                            continue;
                        }

                        var cfl = await sc.RunChecksAsync(ctx, true).ConfigureAwait(false);

                        if (!cfl.Any())
                        {
                            scs.Add(sc);
                        }
                    }

                    if (scs.Any())
                    {
                        helpbuilder.WithSubcommands(scs.OrderBy(xc => xc.Name));
                    }
                }

                var hmsg = helpbuilder.Build();
                await ctx.RespondAsync(hmsg.Content, embed : hmsg.Embed).ConfigureAwait(false);
            }