public async Task <FormattedEmbedBuilder> BuildForRoleAsync(LeagueRole role) { FormattedEmbedBuilder message = new FormattedEmbedBuilder(); try { await this.LoadFromApi(); if (LeagueRole.All.Equals(role)) { foreach (LeagueRole leagueRole in LeagueRole.Values()) { this.AppendStatsOfRole(leagueRole, 3, message); } } else { this.AppendStatsOfRole(role, 6, message); } message.AppendTitle($"{XayahReaction.Clipboard} Winrates"); ChampionStatsDto first = this._championStats.ElementAtOrDefault(0); if (first != null) { message.AppendTitle($" for Patch {first.Patch}"); } message.AppendDescription("Short explanation of the table: `Position - Win % - Play %` - Name", AppendOption.Italic); } catch (NoApiResultException) { message = new FormattedEmbedBuilder() .AppendTitle($"{XayahReaction.Error} This didn't work") .AppendDescription("Apparently some random API refuses cooperation. Have some patience while I convince them again..."); } return(message); }
public override bool Equals(object obj) { if (obj != null && obj is LeagueRole) { LeagueRole compObj = obj as LeagueRole; return(this.ApiRole.Equals(compObj.ApiRole)); } return(false); }
public static LeagueRole GetByApiRole(string role) { if (!string.IsNullOrWhiteSpace(role)) { role = role.ToUpper(); LeagueRole match = Values().FirstOrDefault(x => x.ApiRole.Equals(role)); if (match != null) { return(match); } } throw new NotExistingException(); }
public static LeagueRole Get(string role) { if (!string.IsNullOrWhiteSpace(role)) { role = role.ToLower(); LeagueRole match = Values().FirstOrDefault(x => x._matches.Contains(role)); if (match != null) { return(match); } } throw new NotExistingException(); }
private async Task ProcessWinrate(LeagueRole role) { try { if (role == null) { role = LeagueRole.All; } ChampionStatsBuilder statsBuilder = new ChampionStatsBuilder(); FormattedEmbedBuilder message = await statsBuilder.BuildForRoleAsync(role); message.CreateFooterIfNotDM(this.Context); await this.ReplyAsync(message); } catch (Exception ex) { Logger.Error(ex); } }
private void AppendStatsOfRole(LeagueRole role, int entryCount, FormattedEmbedBuilder message) { List <ChampionStatsDto> roleStats = this._championStats.Where(x => x.Role.Equals(role.ApiRole)).ToList(); if (entryCount * 2 > roleStats.Count) { entryCount = (int)Math.Truncate(roleStats.Count / (decimal)2); } FormattedTextBuilder winrates = new FormattedTextBuilder(); for (int i = 0; i < entryCount && i < roleStats.Count; i++) { ChampionStatsDto topX = roleStats.ElementAt(i); string championLine = this.BuildChampionStats(topX, i + 1); if (i > 0) { winrates.AppendNewLine(); } winrates.Append(championLine); } if (roleStats.Count > entryCount * 2) { winrates.AppendNewLine(); } for (int i = roleStats.Count - entryCount; i >= 0 && i < roleStats.Count; i++) { ChampionStatsDto bottomX = roleStats.ElementAt(i); string championLine = this.BuildChampionStats(bottomX, i + 1); winrates.AppendNewLine().Append(championLine); } string resultText = winrates.ToString(); if (string.IsNullOrWhiteSpace(resultText)) { resultText = ". . ."; } message.AddField(role.Name, resultText, new AppendOption[] { AppendOption.Underscore }); }
//[Command("stats")] public Task Stats([OverrideTypeReader(typeof(LeagueRoleTypeReader))] LeagueRole role, [Remainder] string name) { //Task.Run(() => this.ProcessStats()); return(Task.CompletedTask); }
//[Command("winrate")] public Task Winrate([OverrideTypeReader(typeof(LeagueRoleTypeReader))] LeagueRole role = null) { Task.Run(() => this.ProcessWinrate(role)); return(Task.CompletedTask); }