public override async Task WriteMessageAsync(Message message) { await Writer.WriteLineAsync(PlainTextRenderingLogic.FormatMessage(Context, message)); await Writer.WriteLineAsync(); _messageCount++; }
public override async Task RenderMessageAsync(Message message) { // Render preamble if it's the first entry if (!_isPreambleRendered) { await Writer.WriteLineAsync(PlainTextRenderingLogic.FormatPreamble(Context)); _isPreambleRendered = true; } await Writer.WriteLineAsync(PlainTextRenderingLogic.FormatMessage(Context, message)); await Writer.WriteLineAsync(); }
public override async Task WritePreambleAsync() { await Writer.WriteLineAsync(PlainTextRenderingLogic.FormatPreamble(Context)); }
public override async Task WritePostambleAsync() { await Writer.WriteLineAsync(); await Writer.WriteLineAsync(PlainTextRenderingLogic.FormatPostamble(_messageCount)); }
public override async Task WriteMessageAsync(Message message) { _writer.WriteStartObject(); // Metadata _writer.WriteString("id", message.Id); _writer.WriteString("type", message.Type.ToString()); _writer.WriteString("timestamp", message.Timestamp); _writer.WriteString("timestampEdited", message.EditedTimestamp); _writer.WriteBoolean("isPinned", message.IsPinned); // Content var content = PlainTextRenderingLogic.FormatMessageContent(Context, message); _writer.WriteString("content", content); // Author _writer.WriteStartObject("author"); _writer.WriteString("id", message.Author.Id); _writer.WriteString("name", message.Author.Name); _writer.WriteString("discriminator", $"{message.Author.Discriminator:0000}"); _writer.WriteBoolean("isBot", message.Author.IsBot); _writer.WriteString("avatarUrl", message.Author.AvatarUrl); _writer.WriteEndObject(); // Attachments _writer.WriteStartArray("attachments"); foreach (var attachment in message.Attachments) { _writer.WriteStartObject(); _writer.WriteString("id", attachment.Id); _writer.WriteString("url", attachment.Url); _writer.WriteString("fileName", attachment.FileName); _writer.WriteNumber("fileSizeBytes", (long)attachment.FileSize.Bytes); _writer.WriteEndObject(); } _writer.WriteEndArray(); // Embeds _writer.WriteStartArray("embeds"); foreach (var embed in message.Embeds) { _writer.WriteStartObject(); _writer.WriteString("title", embed.Title); _writer.WriteString("url", embed.Url); _writer.WriteString("timestamp", embed.Timestamp); _writer.WriteString("description", embed.Description); // Author if (embed.Author != null) { _writer.WriteStartObject("author"); _writer.WriteString("name", embed.Author.Name); _writer.WriteString("url", embed.Author.Url); _writer.WriteString("iconUrl", embed.Author.IconUrl); _writer.WriteEndObject(); } // Thumbnail if (embed.Thumbnail != null) { _writer.WriteStartObject("thumbnail"); _writer.WriteString("url", embed.Thumbnail.Url); _writer.WriteNumber("width", embed.Thumbnail.Width); _writer.WriteNumber("height", embed.Thumbnail.Height); _writer.WriteEndObject(); } // Image if (embed.Image != null) { _writer.WriteStartObject("image"); _writer.WriteString("url", embed.Image.Url); _writer.WriteNumber("width", embed.Image.Width); _writer.WriteNumber("height", embed.Image.Height); _writer.WriteEndObject(); } // Footer if (embed.Footer != null) { _writer.WriteStartObject("footer"); _writer.WriteString("text", embed.Footer.Text); _writer.WriteString("iconUrl", embed.Footer.IconUrl); _writer.WriteEndObject(); } // Fields _writer.WriteStartArray("fields"); foreach (var field in embed.Fields) { _writer.WriteStartObject(); _writer.WriteString("name", field.Name); _writer.WriteString("value", field.Value); _writer.WriteBoolean("isInline", field.IsInline); _writer.WriteEndObject(); } _writer.WriteEndArray(); _writer.WriteEndObject(); } _writer.WriteEndArray(); // Reactions _writer.WriteStartArray("reactions"); foreach (var reaction in message.Reactions) { _writer.WriteStartObject(); // Emoji _writer.WriteStartObject("emoji"); _writer.WriteString("id", reaction.Emoji.Id); _writer.WriteString("name", reaction.Emoji.Name); _writer.WriteBoolean("isAnimated", reaction.Emoji.IsAnimated); _writer.WriteString("imageUrl", reaction.Emoji.ImageUrl); _writer.WriteEndObject(); // Count _writer.WriteNumber("count", reaction.Count); _writer.WriteEndObject(); } _writer.WriteEndArray(); _writer.WriteEndObject(); _messageCount++; // Flush every 100 messages if (_messageCount % 100 == 0) { await _writer.FlushAsync(); } }