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")]
|
[Command("lodestone character")]
|
||||||
|
[Alias("lodestone c")]
|
||||||
public async Task GetCharacterById(long id)
|
public async Task GetCharacterById(long id)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
await Context.Channel.TriggerTypingAsync();
|
||||||
CharacterDetailed character = LodestoneManager.GetCharacter(id);
|
CharacterDetailed character = LodestoneManager.GetCharacter(id);
|
||||||
|
|
||||||
var embed = BuildEmbedFromCharacter(character);
|
var embed = BuildEmbedFromCharacter(character);
|
||||||
@ -39,10 +41,12 @@ namespace ChaosBot.Discord.Modules
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Command("lodestone character")]
|
[Command("lodestone character")]
|
||||||
|
[Alias("lodestone c")]
|
||||||
public async Task GetCharacter(string server, params string[] name)
|
public async Task GetCharacter(string server, params string[] name)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
await Context.Channel.TriggerTypingAsync();
|
||||||
CharacterDetailed character = LodestoneManager.GetCharacter(server, string.Join(" ", name));
|
CharacterDetailed character = LodestoneManager.GetCharacter(server, string.Join(" ", name));
|
||||||
|
|
||||||
var embed = BuildEmbedFromCharacter(character);
|
var embed = BuildEmbedFromCharacter(character);
|
||||||
@ -64,38 +68,10 @@ namespace ChaosBot.Discord.Modules
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
await Context.Channel.TriggerTypingAsync();
|
||||||
FreeCompanyDetailed freeCompany = LodestoneManager.GetFreeCompanyById(id.ToString());
|
FreeCompanyDetailed freeCompany = LodestoneManager.GetFreeCompanyById(id.ToString());
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var embed = BuildEmbedFromFreeCompany(freeCompany);
|
||||||
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();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reply with the Embed created above
|
* Reply with the Embed created above
|
||||||
@ -114,8 +90,24 @@ namespace ChaosBot.Discord.Modules
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
await Context.Channel.TriggerTypingAsync();
|
||||||
FreeCompanyDetailed freeCompany = LodestoneManager.GetFreeCompany(server, name);
|
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 sb = new StringBuilder();
|
||||||
var embed = new EmbedBuilder();
|
var embed = new EmbedBuilder();
|
||||||
|
|
||||||
@ -125,7 +117,8 @@ namespace ChaosBot.Discord.Modules
|
|||||||
embed.ImageUrl = freeCompany.FreeCompany.Crest.First();
|
embed.ImageUrl = freeCompany.FreeCompany.Crest.First();
|
||||||
embed.Footer = new EmbedFooterBuilder().WithText($"Lodestone ID {freeCompany.FreeCompany.ID}");
|
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($"{freeCompany.FreeCompany.Slogan}");
|
||||||
sb.AppendLine();
|
sb.AppendLine();
|
||||||
sb.AppendLine($"{freeCompany.FreeCompany.ActiveMemberCount} active members.");
|
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($"Pledged to Grand Company {freeCompany.FreeCompany.GrandCompany}");
|
||||||
sb.AppendLine();
|
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);
|
.OrderBy(x => x.Rank);
|
||||||
|
|
||||||
foreach (string rank in new List<string> {"Council", "Mentor", "Member", "Initiate"})
|
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
|
* Add the string to the Embed
|
||||||
*/
|
*/
|
||||||
embed.Description = sb.ToString();
|
embed.Description = sb.ToString();
|
||||||
|
return embed;
|
||||||
/*
|
|
||||||
* 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 BuildEmbedFromCharacter(CharacterDetailed character)
|
private static EmbedBuilder BuildEmbedFromCharacter(CharacterDetailed character)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user