Clean up duplicate code and add typing triggers
This commit is contained in:
parent
588093bef6
commit
afafe1f61c
@ -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<string>{"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,8 +90,24 @@ namespace ChaosBot.Discord.Modules
|
||||
{
|
||||
try
|
||||
{
|
||||
await Context.Channel.TriggerTypingAsync();
|
||||
FreeCompanyDetailed freeCompany = LodestoneManager.GetFreeCompany(server, name);
|
||||
|
||||
var embed = BuildEmbedFromFreeCompany(freeCompany);
|
||||
|
||||
/*
|
||||
* Reply with the Embed created above
|
||||
*/
|
||||
await ReplyAsync(null, false, embed.Build());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error($"InfoCommands.InfoCommand: Exception [{ex}] thrown, <[{ex.Message}]>.");
|
||||
}
|
||||
}
|
||||
|
||||
private static EmbedBuilder BuildEmbedFromFreeCompany(FreeCompanyDetailed freeCompany)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
var embed = new EmbedBuilder();
|
||||
|
||||
@ -125,7 +117,8 @@ namespace ChaosBot.Discord.Modules
|
||||
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.Name} ({freeCompany.FreeCompany.Server}, rank {freeCompany.FreeCompany.Rank})");
|
||||
sb.AppendLine($"{freeCompany.FreeCompany.Slogan}");
|
||||
sb.AppendLine();
|
||||
sb.AppendLine($"{freeCompany.FreeCompany.ActiveMemberCount} active members.");
|
||||
@ -133,7 +126,8 @@ namespace ChaosBot.Discord.Modules
|
||||
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()})
|
||||
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<string> {"Council", "Mentor", "Member", "Initiate"})
|
||||
@ -146,16 +140,7 @@ namespace ChaosBot.Discord.Modules
|
||||
* Add the string to the Embed
|
||||
*/
|
||||
embed.Description = sb.ToString();
|
||||
|
||||
/*
|
||||
* Reply with the Embed created above
|
||||
*/
|
||||
await ReplyAsync(null, false, embed.Build());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error($"InfoCommands.InfoCommand: Exception [{ex}] thrown, <[{ex.Message}]>.");
|
||||
}
|
||||
return embed;
|
||||
}
|
||||
|
||||
private static EmbedBuilder BuildEmbedFromCharacter(CharacterDetailed character)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user