예제 #1
0
        public async Task Execute(object arguments, Message message)
        {
            var    a     = (Arguments)arguments;
            var    table = new Table();
            var    temp  = a.OSRS ? "OLDSCHOOL" : "RS3";
            string m;

            // Getting user's stats
            var stats = a.OSRS
                ? (object)await OSRSUtil.GetStatsForUser(a.Username)
                : (object)await RSUtil.GetStatsForUser(a.Username);

            // Table making
            table.SetTitle($"VIEWING {temp} STATS FOR {a.Username.ToUpper()}");
            table.SetHeadings("Skill", "Level", "Experience", "Rank");
            stats.GetType().GetProperties().ForEach(p =>
            {
                var stat = (Stat)p.GetMethod.Invoke(stats, null);

                table.AddRow(
                    p.Name,
                    new Table.Column(stat.Level, Table.Column.Alignment.Right),
                    new Table.Column(stat.Exp.ToString("#,##0"), Table.Column.Alignment.Right),
                    new Table.Column(stat.Rank.ToString("#,##0"), Table.Column.Alignment.Right));
            });

            // Uploading image
            if (a.Image)
            {
                m = await ImageUtil.PostToImgur(ImageUtil.ToImage(table.ToString()));
            }
            else
            {
                m = $"```{table}```";
            }

            await message.Channel.SendMessage(m);
        }
예제 #2
0
        private async Task <object> ParseSearchArguments(string[] args, Message message)
        {
            SearchArguments a = new SearchArguments {
                Orders = new List <SearchArguments.Order>()
            };
            FluentCommandLineParser parser = new FluentCommandLineParser();
            string usernme    = null;
            bool   helpCalled = false;

            parser.Setup <AddArguments.Skill>('s', "skill")
            .Callback(s => a.Skill = s)
            .Required();

            parser.Setup <List <string> >('u', "username")
            .Required()
            .Callback(u => usernme = string.Join(" ", u));

            parser.Setup <bool>('i', "image")
            .Callback(i => a.Image = i);

            parser.Setup <int>('p', "page")
            .SetDefault(1)
            .Callback(p => a.Page = p);

            parser.Setup <int>('l', "limit")
            .SetDefault(10)
            .Callback(l => a.Limit = l);

            parser.Setup <int>('L', "level")
            .Required()
            .Callback(l => a.Level = l);

            parser.Setup <List <SearchArguments.Order> >('o', "order")
            .SetDefault(new List <SearchArguments.Order> {
                SearchArguments.Order.Name
            })
            .Callback(o => a.Orders = o);

            parser.Setup <bool>('?', "help")
            .Callback(h => helpCalled = h);

            var r = parser.Parse(args);

            if (r.HasErrors || helpCalled)
            {
                if (!helpCalled)
                {
                    await message.Channel.SendMessage($"```{r.ErrorText}```");

                    return(false);
                }

                await message.Channel.SendMessage(
                    "**Usage:**\n" +
                    "```!recipe search <-s|skill> <-u|username> <-L|level> [-q|query] [-p|page] [-l|limit] [-o|order]```\n" +
                    "**Options:**\n" +
                    "`-s`, `--skill` **REQUIRED**\n" +
                    "The skill you wish to get methods of training for.\n" +
                    "\n" +
                    "`-u`, `--username` **REQUIRED**\n" +
                    "Your in game name.\n" +
                    "\n" +
                    "`-L`, `--level` **REQUIRED**\n" +
                    "The level you wish to obtain\n" +
                    "\n" +
                    "`-p`, `--page` *OPTIONAL*\n" +
                    "The page of results to show.\n" +
                    "\n" +
                    "`-l`, `--limit` *OPTIONAL*\n" +
                    "Results per page.\n" +
                    "\n" +
                    "`-o`, `--order` *OPTIONAL*\n" +
                    "How the results will be ordered. Values can be Cheap, Expensive, Slow, Fast, Name, Level");

                return(false);
            }

            // Getting username
            a.RS3Stats = await RSUtil.GetStatsForUser(usernme);

            return(a);
        }