From 547bf0a463c8f210d1cb943fb41fc00fe5a1facd Mon Sep 17 00:00:00 2001 From: Andrew Kolos Date: Sun, 25 Oct 2020 17:00:30 -0400 Subject: [PATCH] [JSON] Add core user mentions to output (#416) --- .../Exporting/Writers/JsonMessageWriter.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/DiscordChatExporter.Domain/Exporting/Writers/JsonMessageWriter.cs b/DiscordChatExporter.Domain/Exporting/Writers/JsonMessageWriter.cs index de67503..6e61180 100644 --- a/DiscordChatExporter.Domain/Exporting/Writers/JsonMessageWriter.cs +++ b/DiscordChatExporter.Domain/Exporting/Writers/JsonMessageWriter.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using DiscordChatExporter.Domain.Discord.Models; using DiscordChatExporter.Domain.Exporting.Writers.MarkdownVisitors; using DiscordChatExporter.Domain.Internal.Extensions; +using DiscordChatExporter.Domain.Markdown.Ast; namespace DiscordChatExporter.Domain.Exporting.Writers { @@ -159,6 +160,20 @@ namespace DiscordChatExporter.Domain.Exporting.Writers await _writer.FlushAsync(); } + private async ValueTask WriteMentionAsync(User mentionedUser) + { + _writer.WriteStartObject(); + + _writer.WriteString("id", mentionedUser.Id); + _writer.WriteString("name", mentionedUser.Name); + _writer.WriteNumber("discriminator", mentionedUser.Discriminator); + _writer.WriteString("nickname", Context.TryGetMember(mentionedUser.Id)?.Nick ?? mentionedUser.Name); + _writer.WriteBoolean("isBot", mentionedUser.IsBot); + + _writer.WriteEndObject(); + await _writer.FlushAsync(); + } + public override async ValueTask WritePreambleAsync() { // Root object (start) @@ -239,6 +254,13 @@ namespace DiscordChatExporter.Domain.Exporting.Writers _writer.WriteEndArray(); + // Mentions + _writer.WriteStartArray("mentions"); + foreach (var mention in message.MentionedUsers) + await WriteMentionAsync(mention); + + _writer.WriteEndArray(); + _writer.WriteEndObject(); await _writer.FlushAsync();