From 20eeaa58e9ce4e5ed31aed215f5041ae4be14dd6 Mon Sep 17 00:00:00 2001 From: Andrew Kolos Date: Wed, 18 May 2022 13:11:50 -0400 Subject: [PATCH] Add has:pin filter (#853) Adds a new `has:*` filter. Specifically, `has:pin`. The filter filters for messages that are pinned. --- .../Exporting/Filtering/HasMessageFilter.cs | 1 + .../Exporting/Filtering/MessageContentMatchKind.cs | 3 ++- .../Exporting/Filtering/Parsing/FilterGrammar.cs | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/DiscordChatExporter.Core/Exporting/Filtering/HasMessageFilter.cs b/DiscordChatExporter.Core/Exporting/Filtering/HasMessageFilter.cs index 451869f..8233e6a 100644 --- a/DiscordChatExporter.Core/Exporting/Filtering/HasMessageFilter.cs +++ b/DiscordChatExporter.Core/Exporting/Filtering/HasMessageFilter.cs @@ -19,6 +19,7 @@ internal class HasMessageFilter : MessageFilter MessageContentMatchKind.Video => message.Attachments.Any(file => file.IsVideo), MessageContentMatchKind.Image => message.Attachments.Any(file => file.IsImage), MessageContentMatchKind.Sound => message.Attachments.Any(file => file.IsAudio), + MessageContentMatchKind.Pin => message.IsPinned, _ => throw new InvalidOperationException($"Unknown message content match kind '{_kind}'.") }; } \ No newline at end of file diff --git a/DiscordChatExporter.Core/Exporting/Filtering/MessageContentMatchKind.cs b/DiscordChatExporter.Core/Exporting/Filtering/MessageContentMatchKind.cs index d38287e..285e565 100644 --- a/DiscordChatExporter.Core/Exporting/Filtering/MessageContentMatchKind.cs +++ b/DiscordChatExporter.Core/Exporting/Filtering/MessageContentMatchKind.cs @@ -7,5 +7,6 @@ internal enum MessageContentMatchKind File, Video, Image, - Sound + Sound, + Pin } \ No newline at end of file diff --git a/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs b/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs index 34c4bda..82ea69a 100644 --- a/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs +++ b/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs @@ -58,7 +58,8 @@ internal static class FilterGrammar Span.EqualToIgnoreCase("file").IgnoreThen(Parse.Return(MessageContentMatchKind.File)), Span.EqualToIgnoreCase("video").IgnoreThen(Parse.Return(MessageContentMatchKind.Video)), Span.EqualToIgnoreCase("image").IgnoreThen(Parse.Return(MessageContentMatchKind.Image)), - Span.EqualToIgnoreCase("sound").IgnoreThen(Parse.Return(MessageContentMatchKind.Sound)) + Span.EqualToIgnoreCase("sound").IgnoreThen(Parse.Return(MessageContentMatchKind.Sound)), + Span.EqualToIgnoreCase("pin").IgnoreThen(Parse.Return(MessageContentMatchKind.Pin)) )) .Select(k => (MessageFilter) new HasMessageFilter(k)) .Named("has:");