gitextract_vxgw9uzg/ ├── .docs/ │ ├── Docker.md │ ├── Getting-started.md │ ├── Message-filters.md │ ├── Readme.md │ ├── Scheduling-Linux.md │ ├── Scheduling-MacOS.md │ ├── Scheduling-Windows.md │ ├── Token-and-IDs.md │ ├── Troubleshooting.md │ ├── Using-the-CLI.md │ └── Using-the-GUI.md ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ └── config.yml │ ├── dependabot.yml │ └── workflows/ │ ├── docker.yml │ └── main.yml ├── .gitignore ├── Directory.Build.props ├── Directory.Packages.props ├── DiscordChatExporter.Cli/ │ ├── Commands/ │ │ ├── Base/ │ │ │ ├── DiscordCommandBase.cs │ │ │ └── ExportCommandBase.cs │ │ ├── Converters/ │ │ │ ├── ThreadInclusionModeBindingConverter.cs │ │ │ └── TruthyBooleanBindingConverter.cs │ │ ├── ExportAllCommand.cs │ │ ├── ExportChannelsCommand.cs │ │ ├── ExportDirectMessagesCommand.cs │ │ ├── ExportGuildCommand.cs │ │ ├── GetChannelsCommand.cs │ │ ├── GetDirectChannelsCommand.cs │ │ ├── GetGuildsCommand.cs │ │ ├── GuideCommand.cs │ │ └── Shared/ │ │ └── ThreadInclusionMode.cs │ ├── DiscordChatExporter.Cli.csproj │ ├── Program.cs │ └── Utils/ │ └── Extensions/ │ └── ConsoleExtensions.cs ├── DiscordChatExporter.Cli.Tests/ │ ├── DiscordChatExporter.Cli.Tests.csproj │ ├── Infra/ │ │ ├── ChannelIds.cs │ │ ├── ExportWrapper.cs │ │ └── Secrets.cs │ ├── Readme.md │ ├── Specs/ │ │ ├── CsvContentSpecs.cs │ │ ├── DateRangeSpecs.cs │ │ ├── FilterSpecs.cs │ │ ├── HtmlAttachmentSpecs.cs │ │ ├── HtmlContentSpecs.cs │ │ ├── HtmlEmbedSpecs.cs │ │ ├── HtmlForwardSpecs.cs │ │ ├── HtmlGroupingSpecs.cs │ │ ├── HtmlMarkdownSpecs.cs │ │ ├── HtmlMentionSpecs.cs │ │ ├── HtmlReplySpecs.cs │ │ ├── HtmlStickerSpecs.cs │ │ ├── JsonAttachmentSpecs.cs │ │ ├── JsonContentSpecs.cs │ │ ├── JsonEmbedSpecs.cs │ │ ├── JsonEmojiSpecs.cs │ │ ├── JsonForwardSpecs.cs │ │ ├── JsonMentionSpecs.cs │ │ ├── JsonStickerSpecs.cs │ │ ├── PartitioningSpecs.cs │ │ ├── PlainTextContentSpecs.cs │ │ ├── PlainTextForwardSpecs.cs │ │ └── SelfContainedSpecs.cs │ ├── Utils/ │ │ ├── Extensions/ │ │ │ └── StringExtensions.cs │ │ ├── Html.cs │ │ ├── TempDir.cs │ │ └── TempFile.cs │ └── xunit.runner.json ├── DiscordChatExporter.Cli.dockerfile ├── DiscordChatExporter.Core/ │ ├── Discord/ │ │ ├── Data/ │ │ │ ├── Application.cs │ │ │ ├── ApplicationFlags.cs │ │ │ ├── Attachment.cs │ │ │ ├── Channel.cs │ │ │ ├── ChannelConnection.cs │ │ │ ├── ChannelKind.cs │ │ │ ├── Common/ │ │ │ │ ├── FileSize.cs │ │ │ │ ├── IHasId.cs │ │ │ │ └── ImageCdn.cs │ │ │ ├── Embeds/ │ │ │ │ ├── Embed.cs │ │ │ │ ├── EmbedAuthor.cs │ │ │ │ ├── EmbedField.cs │ │ │ │ ├── EmbedFooter.cs │ │ │ │ ├── EmbedImage.cs │ │ │ │ ├── EmbedKind.cs │ │ │ │ ├── EmbedVideo.cs │ │ │ │ ├── SpotifyTrackEmbedProjection.cs │ │ │ │ ├── TwitchClipEmbedProjection.cs │ │ │ │ └── YouTubeVideoEmbedProjection.cs │ │ │ ├── Emoji.cs │ │ │ ├── EmojiIndex.cs │ │ │ ├── Guild.cs │ │ │ ├── Interaction.cs │ │ │ ├── Invite.cs │ │ │ ├── Member.cs │ │ │ ├── Message.cs │ │ │ ├── MessageFlags.cs │ │ │ ├── MessageKind.cs │ │ │ ├── MessageReference.cs │ │ │ ├── MessageReferenceKind.cs │ │ │ ├── MessageSnapshot.cs │ │ │ ├── Reaction.cs │ │ │ ├── Role.cs │ │ │ ├── Sticker.cs │ │ │ ├── StickerFormat.cs │ │ │ └── User.cs │ │ ├── DiscordClient.cs │ │ ├── Dump/ │ │ │ ├── DataDump.cs │ │ │ └── DataDumpChannel.cs │ │ ├── RateLimitPreference.cs │ │ ├── Snowflake.cs │ │ └── TokenKind.cs │ ├── DiscordChatExporter.Core.csproj │ ├── Exceptions/ │ │ ├── ChannelEmptyException.cs │ │ └── DiscordChatExporterException.cs │ ├── Exporting/ │ │ ├── ChannelExporter.cs │ │ ├── CsvMessageWriter.cs │ │ ├── ExportAssetDownloader.cs │ │ ├── ExportContext.cs │ │ ├── ExportFormat.cs │ │ ├── ExportRequest.cs │ │ ├── Filtering/ │ │ │ ├── BinaryExpressionKind.cs │ │ │ ├── BinaryExpressionMessageFilter.cs │ │ │ ├── ContainsMessageFilter.cs │ │ │ ├── FromMessageFilter.cs │ │ │ ├── HasMessageFilter.cs │ │ │ ├── MentionsMessageFilter.cs │ │ │ ├── MessageContentMatchKind.cs │ │ │ ├── MessageFilter.cs │ │ │ ├── NegatedMessageFilter.cs │ │ │ ├── NullMessageFilter.cs │ │ │ ├── Parsing/ │ │ │ │ └── FilterGrammar.cs │ │ │ └── ReactionMessageFilter.cs │ │ ├── HtmlMarkdownVisitor.cs │ │ ├── HtmlMessageExtensions.cs │ │ ├── HtmlMessageWriter.cs │ │ ├── JsonMessageWriter.cs │ │ ├── MessageExporter.cs │ │ ├── MessageGroupTemplate.cshtml │ │ ├── MessageWriter.cs │ │ ├── Partitioning/ │ │ │ ├── FileSizePartitionLimit.cs │ │ │ ├── MessageCountPartitionLimit.cs │ │ │ ├── NullPartitionLimit.cs │ │ │ └── PartitionLimit.cs │ │ ├── PlainTextMarkdownVisitor.cs │ │ ├── PlainTextMessageExtensions.cs │ │ ├── PlainTextMessageWriter.cs │ │ ├── PostambleTemplate.cshtml │ │ └── PreambleTemplate.cshtml │ ├── Markdown/ │ │ ├── EmojiNode.cs │ │ ├── FormattingKind.cs │ │ ├── FormattingNode.cs │ │ ├── HeadingNode.cs │ │ ├── IContainerNode.cs │ │ ├── InlineCodeBlockNode.cs │ │ ├── LinkNode.cs │ │ ├── ListItemNode.cs │ │ ├── ListNode.cs │ │ ├── MarkdownNode.cs │ │ ├── MentionKind.cs │ │ ├── MentionNode.cs │ │ ├── MultiLineCodeBlockNode.cs │ │ ├── Parsing/ │ │ │ ├── AggregateMatcher.cs │ │ │ ├── IMatcher.cs │ │ │ ├── MarkdownContext.cs │ │ │ ├── MarkdownParser.cs │ │ │ ├── MarkdownVisitor.cs │ │ │ ├── ParsedMatch.cs │ │ │ ├── RegexMatcher.cs │ │ │ ├── StringMatcher.cs │ │ │ └── StringSegment.cs │ │ ├── TextNode.cs │ │ └── TimestampNode.cs │ └── Utils/ │ ├── Docker.cs │ ├── Extensions/ │ │ ├── AsyncCollectionExtensions.cs │ │ ├── CollectionExtensions.cs │ │ ├── ColorExtensions.cs │ │ ├── ExceptionExtensions.cs │ │ ├── GenericExtensions.cs │ │ ├── HttpExtensions.cs │ │ ├── PathExtensions.cs │ │ ├── StringExtensions.cs │ │ ├── SuperpowerExtensions.cs │ │ └── TimeSpanExtensions.cs │ ├── Http.cs │ ├── Url.cs │ └── UrlBuilder.cs ├── DiscordChatExporter.Gui/ │ ├── App.axaml │ ├── App.axaml.cs │ ├── Converters/ │ │ ├── ChannelToHierarchicalNameStringConverter.cs │ │ ├── ExportFormatToStringConverter.cs │ │ ├── LocaleToDisplayNameStringConverter.cs │ │ ├── MarkdownToInlinesConverter.cs │ │ ├── RateLimitPreferenceToStringConverter.cs │ │ └── SnowflakeToTimestampStringConverter.cs │ ├── DiscordChatExporter.Gui.csproj │ ├── Framework/ │ │ ├── DialogManager.cs │ │ ├── DialogViewModelBase.cs │ │ ├── SnackbarManager.cs │ │ ├── ThemeVariant.cs │ │ ├── UserControl.cs │ │ ├── ViewManager.cs │ │ ├── ViewModelBase.cs │ │ ├── ViewModelManager.cs │ │ └── Window.cs │ ├── Localization/ │ │ ├── Language.cs │ │ ├── LocalizationManager.English.cs │ │ ├── LocalizationManager.French.cs │ │ ├── LocalizationManager.German.cs │ │ ├── LocalizationManager.Spanish.cs │ │ ├── LocalizationManager.Ukrainian.cs │ │ └── LocalizationManager.cs │ ├── Models/ │ │ └── ThreadInclusionMode.cs │ ├── Program.cs │ ├── Publish-MacOSBundle.ps1 │ ├── Services/ │ │ ├── SettingsService.TokenEncryptionConverter.cs │ │ ├── SettingsService.cs │ │ └── UpdateService.cs │ ├── StartOptions.cs │ ├── Utils/ │ │ ├── Disposable.cs │ │ ├── DisposableCollector.cs │ │ ├── Extensions/ │ │ │ ├── AvaloniaExtensions.cs │ │ │ ├── DisposableExtensions.cs │ │ │ ├── EnvironmentExtensions.cs │ │ │ ├── MarkdigExtensions.cs │ │ │ ├── NotifyPropertyChangedExtensions.cs │ │ │ └── ProcessExtensions.cs │ │ ├── Internationalization.cs │ │ └── NativeMethods.cs │ ├── ViewModels/ │ │ ├── Components/ │ │ │ └── DashboardViewModel.cs │ │ ├── Dialogs/ │ │ │ ├── ExportSetupViewModel.cs │ │ │ ├── MessageBoxViewModel.cs │ │ │ └── SettingsViewModel.cs │ │ └── MainViewModel.cs │ └── Views/ │ ├── Components/ │ │ ├── DashboardView.axaml │ │ └── DashboardView.axaml.cs │ ├── Controls/ │ │ ├── HyperLink.axaml │ │ └── HyperLink.axaml.cs │ ├── Dialogs/ │ │ ├── ExportSetupView.axaml │ │ ├── ExportSetupView.axaml.cs │ │ ├── MessageBoxView.axaml │ │ ├── MessageBoxView.axaml.cs │ │ ├── SettingsView.axaml │ │ └── SettingsView.axaml.cs │ ├── MainView.axaml │ └── MainView.axaml.cs ├── DiscordChatExporter.sln ├── License.txt ├── NuGet.config ├── Readme.md ├── docker-entrypoint.sh ├── favicon.icns └── global.json