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); }
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); }