private async Task RespondWithRule(CommandContext context, Entry resultEntry) { _logger.LogInformation("Responding to the rule request, {@resultEntry}", resultEntry); var builder = new DiscordEmbedBuilder(); builder.WithColor(GetColor(resultEntry.Type)); builder.WithTitle(resultEntry.Name); builder.WithFooter($"{resultEntry.Source} pg.{resultEntry.Page}"); builder.WithDescription(resultEntry.Description.TruncateForDisplay(2048, "(more)")); if (resultEntry.Examples != null && resultEntry.Examples.Length > 0) { var sb = new StringBuilder(); foreach (string example in resultEntry.Examples) { sb.AppendLine($"> {example}"); } builder.AddField("Examples", sb.ToString()); } if (!string.IsNullOrWhiteSpace(resultEntry.Note)) { builder.AddField("Note", resultEntry.Note); } if (!string.IsNullOrWhiteSpace(resultEntry.Calling)) { builder.AddField("Calling", resultEntry.Calling); } if (!string.IsNullOrWhiteSpace(resultEntry.InnatePower)) { builder.AddField("Innate Power", resultEntry.InnatePower); } DiscordEmbed response = builder.Build(); await context.RespondAsync(embed : response); _logger.LogInformation("Building tables"); foreach (Table table in resultEntry.Tables) { var tableBuilder = new StringBuilder(); var renderer = new TableRenderer(); if (table.Headers != null) { renderer.SetHeader(table.Headers); } foreach (Row row in table.Rows) { renderer.AddRow(row.Columns); } tableBuilder.AppendLine(); tableBuilder.AppendLine(Formatter.BlockCode(renderer.Build())); await context.RespondAsync(tableBuilder.ToString()); } }