From a95d2ef298d5c7d2184370228d8ed8a87d87fd39 Mon Sep 17 00:00:00 2001 From: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:03:30 +0200 Subject: [PATCH] Reimplement previous changes using message flags --- .../Discord/Data/Message.cs | 3 +++ .../Discord/Data/MessageFlags.cs | 18 ++++++++++++++++++ .../Exporting/MessageGroupTemplate.cshtml | 4 ++-- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 DiscordChatExporter.Core/Discord/Data/MessageFlags.cs diff --git a/DiscordChatExporter.Core/Discord/Data/Message.cs b/DiscordChatExporter.Core/Discord/Data/Message.cs index e0fee0a3..330c5686 100644 --- a/DiscordChatExporter.Core/Discord/Data/Message.cs +++ b/DiscordChatExporter.Core/Discord/Data/Message.cs @@ -13,6 +13,7 @@ namespace DiscordChatExporter.Core.Discord.Data; public record Message( Snowflake Id, MessageKind Kind, + MessageFlags Flags, User Author, DateTimeOffset Timestamp, DateTimeOffset? EditedTimestamp, @@ -87,6 +88,7 @@ public record Message( { var id = json.GetProperty("id").GetNonWhiteSpaceString().Pipe(Snowflake.Parse); var kind = (MessageKind)json.GetProperty("type").GetInt32(); + var flags = (MessageFlags?)json.GetPropertyOrNull("flags")?.GetInt32() ?? MessageFlags.None; var author = json.GetProperty("author").Pipe(User.Parse); var timestamp = json.GetProperty("timestamp").GetDateTimeOffset(); @@ -139,6 +141,7 @@ public record Message( return new Message( id, kind, + flags, author, timestamp, editedTimestamp, diff --git a/DiscordChatExporter.Core/Discord/Data/MessageFlags.cs b/DiscordChatExporter.Core/Discord/Data/MessageFlags.cs new file mode 100644 index 00000000..69461f6f --- /dev/null +++ b/DiscordChatExporter.Core/Discord/Data/MessageFlags.cs @@ -0,0 +1,18 @@ +using System; + +namespace DiscordChatExporter.Core.Discord.Data; + +// https://discord.com/developers/docs/resources/channel#message-object-message-flags +[Flags] +public enum MessageFlags +{ + None = 0, + CrossPosted = 1, + CrossPost = 2, + SuppressEmbeds = 4, + SourceMessageDeleted = 8, + Urgent = 16, + HasThread = 32, + Ephemeral = 64, + Loading = 128 +} \ No newline at end of file diff --git a/DiscordChatExporter.Core/Exporting/MessageGroupTemplate.cshtml b/DiscordChatExporter.Core/Exporting/MessageGroupTemplate.cshtml index 47b44028..5bd3f682 100644 --- a/DiscordChatExporter.Core/Exporting/MessageGroupTemplate.cshtml +++ b/DiscordChatExporter.Core/Exporting/MessageGroupTemplate.cshtml @@ -167,11 +167,11 @@ @{/* Author name */} @userNick - @{/* Bot label */} + @{/* Bot tag */} @if (message.Author.IsBot) { // For cross-posts, the BOT tag is replaced with the SERVER tag - if (message.Kind != MessageKind.Reply && message.Reference is not null && message.Reference.GuildId != ExportContext.Request.Guild.Id) + if (message.Flags.HasFlag(MessageFlags.CrossPost)) { SERVER }