Fix grammar

This commit is contained in:
tyrrrz
2026-07-25 20:28:26 +03:00
parent 91a8daf3a7
commit 427c6021ac
17 changed files with 36 additions and 36 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ $ docker pull tyrrrz/discordchatexporter:stable
Note the `:stable` tag. DiscordChatExporter images are tagged according to the following patterns: Note the `:stable` tag. DiscordChatExporter images are tagged according to the following patterns:
- `stable` — latest stable version release. This tag is updated with each release of a new project version. Recommended for personal use. - `stable` — latest stable version release. This tag is updated with each release of a new project version. Recommended for personal use.
- `x.y.z` (e.g. `2.30.1`) — specific stable version release. This tag is pushed when the corresponding version is released and never updated thereafter. Recommended for use in automation scenarios. - `x.y.z` (e.g., `2.30.1`) — specific stable version release. This tag is pushed when the corresponding version is released and never updated thereafter. Recommended for use in automation scenarios.
- `latest` — latest (potentially unstable) build. This tag is updated with each new commit to the `prime` branch. Not recommended, unless you want to test a new feature that has not been released in a stable version yet. - `latest` — latest (potentially unstable) build. This tag is updated with each new commit to the `prime` branch. Not recommended, unless you want to test a new feature that has not been released in a stable version yet.
You can see all available tags [here](https://hub.docker.com/r/tyrrrz/discordchatexporter/tags?ordering=name). You can see all available tags [here](https://hub.docker.com/r/tyrrrz/discordchatexporter/tags?ordering=name).
+2 -2
View File
@@ -64,9 +64,9 @@ exit 0
- `tokenhere` with your [Token](Token-and-IDs.md). - `tokenhere` with your [Token](Token-and-IDs.md).
- `channelhere` with a [Channel ID](Token-and-IDs.md). - `channelhere` with a [Channel ID](Token-and-IDs.md).
- `dceFOLDERpathhere` with DCE's **directory path** (e.g. `/path/to/folder`, NOT `/path/to/folder/DiscordChatExporter.dll`). - `dceFOLDERpathhere` with DCE's **directory path** (e.g., `/path/to/folder`, NOT `/path/to/folder/DiscordChatExporter.dll`).
- `filenamehere` with the exported channel's filename, without spaces. - `filenamehere` with the exported channel's filename, without spaces.
- `dirhere` with the export directory (e.g. /home/user/Documents/Discord\ Exports). - `dirhere` with the export directory (e.g., /home/user/Documents/Discord\ Exports).
- `formathere` with one of the available export formats. - `formathere` with one of the available export formats.
> **Note**: > **Note**:
+2 -2
View File
@@ -68,9 +68,9 @@ exit 0
- `tokenhere` with your [Token](Token-and-IDs.md) - `tokenhere` with your [Token](Token-and-IDs.md)
- `channelhere` with a [Channel ID](Token-and-IDs.md) - `channelhere` with a [Channel ID](Token-and-IDs.md)
- `dceFOLDERpathhere` with DCE's **directory's path** (e.g. `/Users/user/Desktop/DiscordChatExporterFolder`, NOT `/Users/user/Desktop/DiscordChatExporterFolder/DiscordChatExporter.DLL`) - `dceFOLDERpathhere` with DCE's **directory's path** (e.g., `/Users/user/Desktop/DiscordChatExporterFolder`, NOT `/Users/user/Desktop/DiscordChatExporterFolder/DiscordChatExporter.DLL`)
- `filenamehere` with the exported channel's filename, without spaces - `filenamehere` with the exported channel's filename, without spaces
- `dirhere` with the directory you want the files to be saved at (e.g. `/Users/user/Documents/Discord\ Exports`) - `dirhere` with the directory you want the files to be saved at (e.g., `/Users/user/Documents/Discord\ Exports`)
- `formathere` with one of the available export formats - `formathere` with one of the available export formats
To quickly get file or folder paths, select the file/folder, then hit Command+I (⌘I) and copy what's after `Where:`. To quickly get file or folder paths, select the file/folder, then hit Command+I (⌘I) and copy what's after `Where:`.
+2 -2
View File
@@ -33,9 +33,9 @@ exit
- `tokenhere` with your [Token](Token-and-IDs.md) - `tokenhere` with your [Token](Token-and-IDs.md)
- `channelhere` with a [Channel ID](Token-and-IDs.md) - `channelhere` with a [Channel ID](Token-and-IDs.md)
- `exefolderhere` with the .exe **directory's path** (e.g. C:\Users\User\Desktop\DiscordChatExporter) - `exefolderhere` with the .exe **directory's path** (e.g., C:\Users\User\Desktop\DiscordChatExporter)
- `filenamehere` with a filename without spaces - `filenamehere` with a filename without spaces
- `dirhere` with the export directory (e.g. C:\Users\User\Documents\Exports) - `dirhere` with the export directory (e.g., C:\Users\User\Documents\Exports)
- `formathere` with one of the available export formats - `formathere` with one of the available export formats
Make sure not to delete the quotes (") Make sure not to delete the quotes (")
+4 -4
View File
@@ -77,7 +77,7 @@ format is `HtmlDark`.
#### Changing the output filename #### Changing the output filename
You can change the filename by using `-o name.ext`. e.g. for the `HTML` format: You can change the filename by using `-o name.ext`. e.g., for the `HTML` format:
```console ```console
./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o myserver.html ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o myserver.html
@@ -186,21 +186,21 @@ locales. The default locale is `en-US`.
#### Date ranges #### Date ranges
**Messages sent before a date** **Messages sent before a date**
Use `--before` to export messages sent before the provided date. E.g. messages sent before September 18th, 2019: Use `--before` to export messages sent before the provided date. e.g., messages sent before September 18th, 2019:
```console ```console
./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --before 2019-09-18 ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --before 2019-09-18
``` ```
**Messages sent after a date** **Messages sent after a date**
Use `--after` to export messages sent after the provided date. E.g. messages sent after September 17th, 2019 11:34 PM: Use `--after` to export messages sent after the provided date. e.g., messages sent after September 17th, 2019 11:34 PM:
```console ```console
./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34" ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34"
``` ```
**Messages sent in a date range** **Messages sent in a date range**
Use `--before` and `--after` to export messages sent during the provided date range. E.g. messages sent between Use `--before` and `--after` to export messages sent during the provided date range. e.g., messages sent between
September 17th, 2019 11:34 PM and September 18th: September 17th, 2019 11:34 PM and September 18th:
```console ```console
+8 -8
View File
@@ -12,7 +12,7 @@
After extracting the `.zip`, run `DiscordChatExporter.exe` **(Windows)**, or `DiscordChatExporter` **(Linux)**. After extracting the `.zip`, run `DiscordChatExporter.exe` **(Windows)**, or `DiscordChatExporter` **(Linux)**.
If you're using **macOS**, you'll need to manually grant permission for the app to run. If you're using **macOS**, you'll need to manually grant permission for the app to run.
If you skip these steps, the "DiscordChatExporter is damaged and cant be opened" error will be shown. If you skip these steps, the "DiscordChatExporter is damaged and cant be opened" error will be shown.
1. Open Terminal.app. You can search for it in Spotlight (press <kbd>⌘</kbd> + <kbd>Space</kbd> and type "Terminal"). 1. Open Terminal.app. You can search for it in Spotlight (press <kbd>⌘</kbd> + <kbd>Space</kbd> and type "Terminal").
@@ -56,10 +56,11 @@ In this screen you can customize the following:
- **Export format** - HTML (Dark), HTML (Light), TXT, CSV and JSON - **Export format** - HTML (Dark), HTML (Light), TXT, CSV and JSON
- **Date range (after/before)** (Optional) - If set, only messages sent in the provided date range will be exported. Only one value (either after or before) is required if you want to use this option. - **Date range (after/before)** (Optional) - If set, only messages sent in the provided date range will be exported. Only one value (either after or before) is required if you want to use this option.
> **Note**: > **Note**:
> Please note that the time defaults to **12:00 AM** (midnight/00:00). This means that if you choose to export between Sep 17th and Sep 18th, messages from Sep 18th won't be exported. > Please note that the time defaults to **12:00 AM** (midnight/00:00). This means that if you choose to export between Sep 17th and Sep 18th, messages from Sep 18th won't be exported.
- **Partition limit** (Optional) - Split output into partitions, each limited to this number of messages (e.g. 100) or file size (e.g. 10mb). For example, a channel with 36 messages set to be partitioned every 10 messages will output 4 files. - **Partition limit** (Optional) - Split output into partitions, each limited to this number of messages (e.g., 100) or file size (e.g., 10mb). For example, a channel with 36 messages set to be partitioned every 10 messages will output 4 files.
- **Message Filter** (Optional) - Special notation for filtering the messages that get included in the export. See [Message filters](Message-filters.md) for more info. - **Message Filter** (Optional) - Special notation for filtering the messages that get included in the export. See [Message filters](Message-filters.md) for more info.
@@ -77,29 +78,28 @@ In this screen you can customize the following:
## Settings ## Settings
- **Auto-update** - Perform automatic updates on every launch. - **Auto-update** - Perform automatic updates on every launch.
Default: Enabled Default: Enabled
> **Note**: > **Note**:
> Keep this option enabled to receive the latest features and bug fixes! > Keep this option enabled to receive the latest features and bug fixes!
- **Dark mode** - Use darker colors in the UI (User Interface). - **Dark mode** - Use darker colors in the UI (User Interface).
Default: Disabled Default: Disabled
- **Persist token** - Persist last used token between sessions. - **Persist token** - Persist last used token between sessions.
Default: Enabled Default: Enabled
- **Show threads** - Controls whether threads are shown in the channel list. - **Show threads** - Controls whether threads are shown in the channel list.
Default: none Default: none
- **Locale** - Customize how dates are formatted in the exported files. - **Locale** - Customize how dates are formatted in the exported files.
- **Date format** - Customize how dates are formatted in the exported files in the settings menu (). - **Date format** - Customize how dates are formatted in the exported files in the settings menu ().
- **Parallel limit** - The number of channels that will be exported at the same time. - **Parallel limit** - The number of channels that will be exported at the same time.
Default: 1 Default: 1
> **Note**: > **Note**:
> Try to keep this number low so that your account doesn't get flagged. > Try to keep this number low so that your account doesn't get flagged.
- **Normalize to UTC** - Convert all dates to UTC before exporting. - **Normalize to UTC** - Convert all dates to UTC before exporting.
@@ -30,7 +30,7 @@ public abstract class DiscordCommandBase : ICommand
[CommandOption( [CommandOption(
"respect-rate-limits", "respect-rate-limits",
Description = "Whether to respect advisory rate limits. " Description = "Whether to respect advisory rate limits. "
+ "If disabled, only hard rate limits (i.e. 429 responses) will be respected." + "If disabled, only hard rate limits (i.e., 429 responses) will be respected."
)] )]
public bool ShouldRespectRateLimits { get; set; } = true; public bool ShouldRespectRateLimits { get; set; } = true;
@@ -59,7 +59,7 @@ public abstract class ExportCommandBase : DiscordCommandBase
"partition", "partition",
'p', 'p',
Description = "Split the output into partitions, each limited to the specified " Description = "Split the output into partitions, each limited to the specified "
+ "number of messages (e.g. '100') or file size (e.g. '10mb')." + "number of messages (e.g., '100') or file size (e.g., '10mb')."
)] )]
public PartitionLimit PartitionLimit { get; set; } = PartitionLimit.Null; public PartitionLimit PartitionLimit { get; set; } = PartitionLimit.Null;
@@ -72,7 +72,7 @@ public partial record Embed
// Under the Discord API model, embeds can only have at most one image. // Under the Discord API model, embeds can only have at most one image.
// Because of that, embeds that are rendered with multiple images on the client // Because of that, embeds that are rendered with multiple images on the client
// (e.g. tweet embeds), are exposed from the API as multiple separate embeds. // (e.g., tweet embeds), are exposed from the API as multiple separate embeds.
// Our embed model is consistent with the user-facing side of Discord, so images // Our embed model is consistent with the user-facing side of Discord, so images
// are stored as an array. The API will only ever return one image, but we deal // are stored as an array. The API will only ever return one image, but we deal
// with this by merging related embeds at the end of the message parsing process. // with this by merging related embeds at the end of the message parsing process.
@@ -10,14 +10,14 @@ namespace DiscordChatExporter.Core.Discord.Data;
public partial record Emoji( public partial record Emoji(
// Only present on custom emoji // Only present on custom emoji
Snowflake? Id, Snowflake? Id,
// Name of a custom emoji (e.g. LUL) or actual representation of a standard emoji (e.g. 🙂) // Name of a custom emoji (e.g., LUL) or actual representation of a standard emoji (e.g., 🙂)
string Name, string Name,
bool IsAnimated bool IsAnimated
) )
{ {
public bool IsCustomEmoji { get; } = Id is not null; public bool IsCustomEmoji { get; } = Id is not null;
// Name of a custom emoji (e.g. LUL) or name of a standard emoji (e.g. slight_smile) // Name of a custom emoji (e.g., LUL) or name of a standard emoji (e.g., slight_smile)
public string Code { get; } = Id is not null ? Name : EmojiIndex.TryGetCode(Name) ?? Name; public string Code { get; } = Id is not null ? Name : EmojiIndex.TryGetCode(Name) ?? Name;
public string ImageUrl { get; } = public string ImageUrl { get; } =
@@ -208,7 +208,7 @@ public partial class ExportRequest
// Determine whether the output path refers to a directory or a file. // Determine whether the output path refers to a directory or a file.
// The extension-based heuristic is evaluated on the original, unsubstituted path, // The extension-based heuristic is evaluated on the original, unsubstituted path,
// because the value of a template token (e.g. a guild or channel name) may contain // because the value of a template token (e.g., a guild or channel name) may contain
// a period that would otherwise be mistaken for a file extension, incorrectly causing // a period that would otherwise be mistaken for a file extension, incorrectly causing
// a directory path to be treated as a file. // a directory path to be treated as a file.
// https://github.com/Tyrrrz/DiscordChatExporter/issues/1502 // https://github.com/Tyrrrz/DiscordChatExporter/issues/1502
@@ -6,7 +6,7 @@ namespace DiscordChatExporter.Core.Markdown;
internal record EmojiNode( internal record EmojiNode(
// Only present on custom emoji // Only present on custom emoji
Snowflake? Id, Snowflake? Id,
// Name of a custom emoji (e.g. LUL) or actual representation of a standard emoji (e.g. 🙂) // Name of a custom emoji (e.g., LUL) or actual representation of a standard emoji (e.g., 🙂)
string Name, string Name,
bool IsAnimated bool IsAnimated
) : MarkdownNode ) : MarkdownNode
@@ -20,7 +20,7 @@ internal record EmojiNode(
public bool IsCustomEmoji => _emoji.IsCustomEmoji; public bool IsCustomEmoji => _emoji.IsCustomEmoji;
// Name of a custom emoji (e.g. LUL) or name of a standard emoji (e.g. slight_smile) // Name of a custom emoji (e.g., LUL) or name of a standard emoji (e.g., slight_smile)
public string Code => _emoji.Code; public string Code => _emoji.Code;
public string ImageUrl => _emoji.ImageUrl; public string ImageUrl => _emoji.ImageUrl;
@@ -2,7 +2,7 @@ using System.Collections.Generic;
namespace DiscordChatExporter.Core.Markdown; namespace DiscordChatExporter.Core.Markdown;
// Named links can contain child nodes (e.g. [**bold URL**](https://test.com)) // Named links can contain child nodes (e.g., [**bold URL**](https://test.com))
internal record LinkNode(string Url, IReadOnlyList<MarkdownNode> Children) internal record LinkNode(string Url, IReadOnlyList<MarkdownNode> Children)
: MarkdownNode, : MarkdownNode,
IContainerNode IContainerNode
@@ -209,7 +209,7 @@ internal static partial class MarkdownParser
new RegexMatcher<MarkdownContext, MarkdownNode>( new RegexMatcher<MarkdownContext, MarkdownNode>(
new Regex( new Regex(
// Build a pattern from all known emoji, sorted longest-first so that compound // Build a pattern from all known emoji, sorted longest-first so that compound
// emoji (e.g. sequences with ZWJ or skin-tone modifiers) are matched before // emoji (e.g., sequences with ZWJ or skin-tone modifiers) are matched before
// their individual components. // their individual components.
"(" "("
+ string.Join( + string.Join(
@@ -408,7 +408,7 @@ internal static partial class MarkdownParser
TimestampNodeMatcher TimestampNodeMatcher
); );
// Minimal set of matchers for non-multimedia formats (e.g. plain text) // Minimal set of matchers for non-multimedia formats (e.g., plain text)
private static readonly IMatcher<MarkdownContext, MarkdownNode> MinimalNodeMatcher = private static readonly IMatcher<MarkdownContext, MarkdownNode> MinimalNodeMatcher =
new AggregateMatcher<MarkdownContext, MarkdownNode>( new AggregateMatcher<MarkdownContext, MarkdownNode>(
// Mentions // Mentions
@@ -40,7 +40,7 @@ public class DialogManager : IDisposable
); );
// Yield to allow DialogHost to fully reset its state before // Yield to allow DialogHost to fully reset its state before
// another dialog is shown (e.g. when dialogs are shown sequentially). // another dialog is shown (e.g., when dialogs are shown sequentially).
await Task.Yield(); await Task.Yield();
return dialog.DialogResult; return dialog.DialogResult;
@@ -58,7 +58,7 @@ public partial class LocalizationManager
""", """,
[nameof(RateLimitPreferenceLabel)] = "Rate limit preference", [nameof(RateLimitPreferenceLabel)] = "Rate limit preference",
[nameof(RateLimitPreferenceTooltip)] = [nameof(RateLimitPreferenceTooltip)] =
"Whether to respect advisory rate limits. If disabled, only hard rate limits (i.e. 429 responses) will be respected.", "Whether to respect advisory rate limits. If disabled, only hard rate limits (i.e., 429 responses) will be respected.",
[nameof(ShowThreadsLabel)] = "Show threads", [nameof(ShowThreadsLabel)] = "Show threads",
[nameof(ShowThreadsTooltip)] = "Which types of threads to show in the channel list", [nameof(ShowThreadsTooltip)] = "Which types of threads to show in the channel list",
[nameof(LocaleLabel)] = "Locale", [nameof(LocaleLabel)] = "Locale",
@@ -102,10 +102,10 @@ public partial class LocalizationManager
[nameof(BeforeTimeTooltip)] = "Only include messages sent before this time", [nameof(BeforeTimeTooltip)] = "Only include messages sent before this time",
[nameof(PartitionLimitLabel)] = "Partition limit", [nameof(PartitionLimitLabel)] = "Partition limit",
[nameof(PartitionLimitTooltip)] = [nameof(PartitionLimitTooltip)] =
"Split the output into partitions, each limited to the specified number of messages (e.g. '100') or file size (e.g. '10mb')", "Split the output into partitions, each limited to the specified number of messages (e.g., '100') or file size (e.g., '10mb')",
[nameof(MessageFilterLabel)] = "Message filter", [nameof(MessageFilterLabel)] = "Message filter",
[nameof(MessageFilterTooltip)] = [nameof(MessageFilterTooltip)] =
"Only include messages that satisfy this filter (e.g. 'from:foo#1234' or 'has:image'). See the documentation for more info.", "Only include messages that satisfy this filter (e.g., 'from:foo#1234' or 'has:image'). See the documentation for more info.",
[nameof(ReverseMessageOrderLabel)] = "Reverse messages", [nameof(ReverseMessageOrderLabel)] = "Reverse messages",
[nameof(ReverseMessageOrderTooltip)] = [nameof(ReverseMessageOrderTooltip)] =
"Export messages in reverse chronological order (newest first)", "Export messages in reverse chronological order (newest first)",
@@ -21,10 +21,10 @@ public partial class PublishMacOSBundleCommand : ICommand
[CommandOption("icons-file", Description = "Path to the .icns icons file.")] [CommandOption("icons-file", Description = "Path to the .icns icons file.")]
public required string IconsFilePath { get; set; } public required string IconsFilePath { get; set; }
[CommandOption("full-version", Description = "Full version string (e.g. '1.2.3.4').")] [CommandOption("full-version", Description = "Full version string (e.g., '1.2.3.4').")]
public required string FullVersion { get; set; } public required string FullVersion { get; set; }
[CommandOption("short-version", Description = "Short version string (e.g. '1.2.3').")] [CommandOption("short-version", Description = "Short version string (e.g., '1.2.3').")]
public required string ShortVersion { get; set; } public required string ShortVersion { get; set; }
public async ValueTask ExecuteAsync(IConsole console) public async ValueTask ExecuteAsync(IConsole console)