diff --git a/ChaosBot/Discord/Modules/LodestoneCommands.cs b/ChaosBot/Discord/Modules/LodestoneCommands.cs index 1845133..25b76bb 100644 --- a/ChaosBot/Discord/Modules/LodestoneCommands.cs +++ b/ChaosBot/Discord/Modules/LodestoneCommands.cs @@ -19,10 +19,12 @@ namespace ChaosBot.Discord.Modules [Command("lodestone character")] + [Alias("lodestone c")] public async Task GetCharacterById(long id) { try { + await Context.Channel.TriggerTypingAsync(); CharacterDetailed character = LodestoneManager.GetCharacter(id); var embed = BuildEmbedFromCharacter(character); @@ -39,10 +41,12 @@ namespace ChaosBot.Discord.Modules } [Command("lodestone character")] + [Alias("lodestone c")] public async Task GetCharacter(string server, params string[] name) { try { + await Context.Channel.TriggerTypingAsync(); CharacterDetailed character = LodestoneManager.GetCharacter(server, string.Join(" ", name)); var embed = BuildEmbedFromCharacter(character); @@ -64,38 +68,10 @@ namespace ChaosBot.Discord.Modules { try { + await Context.Channel.TriggerTypingAsync(); FreeCompanyDetailed freeCompany = LodestoneManager.GetFreeCompanyById(id.ToString()); - var sb = new StringBuilder(); - var embed = new EmbedBuilder(); - - embed.WithColor(new Color(255, 255,0)); - embed.Title = $"Free Company Information"; - embed.Url = $"https://na.finalfantasyxiv.com/lodestone/freecompany/{freeCompany.FreeCompany.ID}/"; - embed.ImageUrl = freeCompany.FreeCompany.Crest.First(); - embed.Footer = new EmbedFooterBuilder().WithText($"Lodestone ID {freeCompany.FreeCompany.ID}"); - - sb.AppendLine($"{freeCompany.FreeCompany.Name} ({freeCompany.FreeCompany.Server}, rank {freeCompany.FreeCompany.Rank})"); - sb.AppendLine($"{freeCompany.FreeCompany.Slogan}"); - sb.AppendLine(); - sb.AppendLine($"{freeCompany.FreeCompany.ActiveMemberCount} active members."); - sb.AppendLine($"Company estate {freeCompany.FreeCompany.Estate.Plot}"); - sb.AppendLine($"Pledged to Grand Company {freeCompany.FreeCompany.GrandCompany}"); - sb.AppendLine(); - - var rankCounts = freeCompany.FreeCompanyMembers.GroupBy(m => m.Rank).Select(g => new {Rank = g.Key, Count = g.Count()}) - .OrderBy(x => x.Rank); - - foreach (string rank in new List{"Council", "Mentor", "Member", "Initiate"}) - { - var rankCount = rankCounts.First(e => e.Rank == rank); - sb.AppendLine($"{rankCount.Count} members are of rank {rankCount.Rank} "); - } - - /* - * Add the string to the Embed - */ - embed.Description = sb.ToString(); + var embed = BuildEmbedFromFreeCompany(freeCompany); /* * Reply with the Embed created above @@ -114,38 +90,10 @@ namespace ChaosBot.Discord.Modules { try { + await Context.Channel.TriggerTypingAsync(); FreeCompanyDetailed freeCompany = LodestoneManager.GetFreeCompany(server, name); - var sb = new StringBuilder(); - var embed = new EmbedBuilder(); - - embed.WithColor(new Color(255, 255,0)); - embed.Title = $"Free Company Information"; - embed.Url = $"https://na.finalfantasyxiv.com/lodestone/freecompany/{freeCompany.FreeCompany.ID}/"; - embed.ImageUrl = freeCompany.FreeCompany.Crest.First(); - embed.Footer = new EmbedFooterBuilder().WithText($"Lodestone ID {freeCompany.FreeCompany.ID}"); - - sb.AppendLine($"{freeCompany.FreeCompany.Name} ({freeCompany.FreeCompany.Server}, rank {freeCompany.FreeCompany.Rank})"); - sb.AppendLine($"{freeCompany.FreeCompany.Slogan}"); - sb.AppendLine(); - sb.AppendLine($"{freeCompany.FreeCompany.ActiveMemberCount} active members."); - sb.AppendLine($"Company estate {freeCompany.FreeCompany.Estate.Plot}"); - sb.AppendLine($"Pledged to Grand Company {freeCompany.FreeCompany.GrandCompany}"); - sb.AppendLine(); - - var rankCounts = freeCompany.FreeCompanyMembers.GroupBy(m => m.Rank).Select(g => new {Rank = g.Key, Count = g.Count()}) - .OrderBy(x => x.Rank); - - foreach (string rank in new List{"Council", "Mentor", "Member", "Initiate"}) - { - var rankCount = rankCounts.First(e => e.Rank == rank); - sb.AppendLine($"{rankCount.Count} members are of rank {rankCount.Rank} "); - } - - /* - * Add the string to the Embed - */ - embed.Description = sb.ToString(); + var embed = BuildEmbedFromFreeCompany(freeCompany); /* * Reply with the Embed created above @@ -158,6 +106,43 @@ namespace ChaosBot.Discord.Modules } } + private static EmbedBuilder BuildEmbedFromFreeCompany(FreeCompanyDetailed freeCompany) + { + var sb = new StringBuilder(); + var embed = new EmbedBuilder(); + + embed.WithColor(new Color(255, 255, 0)); + embed.Title = $"Free Company Information"; + embed.Url = $"https://na.finalfantasyxiv.com/lodestone/freecompany/{freeCompany.FreeCompany.ID}/"; + embed.ImageUrl = freeCompany.FreeCompany.Crest.First(); + embed.Footer = new EmbedFooterBuilder().WithText($"Lodestone ID {freeCompany.FreeCompany.ID}"); + + sb.AppendLine( + $"{freeCompany.FreeCompany.Name} ({freeCompany.FreeCompany.Server}, rank {freeCompany.FreeCompany.Rank})"); + sb.AppendLine($"{freeCompany.FreeCompany.Slogan}"); + sb.AppendLine(); + sb.AppendLine($"{freeCompany.FreeCompany.ActiveMemberCount} active members."); + sb.AppendLine($"Company estate {freeCompany.FreeCompany.Estate.Plot}"); + sb.AppendLine($"Pledged to Grand Company {freeCompany.FreeCompany.GrandCompany}"); + sb.AppendLine(); + + var rankCounts = freeCompany.FreeCompanyMembers.GroupBy(m => m.Rank) + .Select(g => new {Rank = g.Key, Count = g.Count()}) + .OrderBy(x => x.Rank); + + foreach (string rank in new List {"Council", "Mentor", "Member", "Initiate"}) + { + var rankCount = rankCounts.First(e => e.Rank == rank); + sb.AppendLine($"{rankCount.Count} members are of rank {rankCount.Rank} "); + } + + /* + * Add the string to the Embed + */ + embed.Description = sb.ToString(); + return embed; + } + private static EmbedBuilder BuildEmbedFromCharacter(CharacterDetailed character) { var sb = new StringBuilder();