diff --git a/.docs/Docker.md b/.docs/Docker.md index ab74868..294e353 100644 --- a/.docs/Docker.md +++ b/.docs/Docker.md @@ -10,7 +10,7 @@ Docker distribution of DiscordChatExporter provides a way to run the app in a vi This will download the [Docker image from the registry](https://hub.docker.com/r/tyrrrz/discordchatexporter) to your computer. You can run this command again to update when a new version is released. ```console -docker pull tyrrrz/discordchatexporter:stable +$ docker pull tyrrrz/discordchatexporter:stable ``` Note the `:stable` tag. DiscordChatExporter images are tagged according to the following patterns: @@ -26,19 +26,19 @@ You can see all available tags [here](https://hub.docker.com/r/tyrrrz/discordcha To run the CLI in Docker and render help text: ```console -docker run --rm tyrrrz/discordchatexporter:stable +$ docker run --rm tyrrrz/discordchatexporter:stable ``` To export a channel: ```console -docker run --rm -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID +$ docker run --rm -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID ``` If you want colored output and real-time progress reporting, pass the `-it` (interactive + pseudo-terminal) option: ```console -docker run --rm -it -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID +$ docker run --rm -it -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID ``` The `-v /path/on/machine:/out` option instructs Docker to bind the `/out` directory inside the container to a path on your host machine. Replace `/path/on/machine` with the directory you want the files to be saved at. @@ -47,7 +47,7 @@ The `-v /path/on/machine:/out` option instructs Docker to bind the `/out` direct > If you are running SELinux, you will need to add the `:z` option after `/out`, e.g.: > > ```console -> docker run --rm -v /path/on/machine:/out:z tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID +> $ docker run --rm -v /path/on/machine:/out:z tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID > ``` > > For more information, refer to the [Docker docs SELinux labels for bind mounts page](https://docs.docker.com/storage/bind-mounts/#configure-the-selinux-label). @@ -68,8 +68,8 @@ This image was designed with a user running as uid:gid of 1000:1000. If your current user has different IDs, and you want to generate files directly editable for your user, you might want to run the container like this: ```console -mkdir data # or chown -R $(id -u):$(id -g) data -docker run -it --rm -v $PWD/data:/out --user $(id -u):$(id -g) tyrrrz/discordchatexporter:stable export -t TOKEN -g CHANNELID +$ mkdir data # or chown -R $(id -u):$(id -g) data +$ docker run -it --rm -v $PWD/data:/out --user $(id -u):$(id -g) tyrrrz/discordchatexporter:stable export -t TOKEN -g CHANNELID ``` ## Environment variables diff --git a/.docs/Dotnet.md b/.docs/Dotnet.md index aebf28b..2555d35 100644 --- a/.docs/Dotnet.md +++ b/.docs/Dotnet.md @@ -43,12 +43,8 @@ For other distros, please check the _'Install on Linux'_ menu on the left of [th You can check which version of **.NET Runtime** is installed by running the following command in a terminal: ```console -dotnet --info -``` - -If the **.NET Runtime** is correctly installed, the command will output something similar to the following: +$ dotnet --info -```console .NET runtimes installed: Microsoft.NETCore.App 7.0.x [C:\path\to\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 7.0.x [C:\path\to\dotnet\shared\Microsoft.WindowsDesktop.App] diff --git a/.docs/Getting-started.md b/.docs/Getting-started.md index a107ada..a5e8d74 100644 --- a/.docs/Getting-started.md +++ b/.docs/Getting-started.md @@ -15,12 +15,9 @@ The information presented on this page is valid for **all** platforms. **DCE** has two different versions: - **Graphical User Interface** (**GUI**) - it's the preferred version for newcomers as it is easy to use. - You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.zip` file. + You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.*.zip` file. - **Command-line Interface** (**CLI**) - offers greater flexibility and more features for advanced users, such as export scheduling, ID lists, and more specific date ranges. - You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.CLI.zip` file. - -If you're not comfortable with **Windows'** Command-line (cmd), please choose the GUI. -[**macOS**](MacOS.md), [**Linux**](Linux.md) and [**Docker**](Docker.md) users can only use the CLI version. + You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.Cli.*.zip` file. There are dedicated guides for each version: diff --git a/.docs/Linux.md b/.docs/Linux.md deleted file mode 100644 index 740b6b1..0000000 --- a/.docs/Linux.md +++ /dev/null @@ -1,32 +0,0 @@ -# Linux usage instructions - -## Installing .NET Runtime - -Please follow the [instructions provided here](Dotnet.md). - -## Downloading and using DiscordChatExporter.Cli - -1. Download [DiscordChatExporter.CLI.zip](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) and extract it to a folder. -2. Open Terminal. -3. Change the working directory into the extracted folder. You can do this in Terminal by typing `cd`, then press the SPACE key, drag and drop the extracted folder into the Terminal window, and press the ENTER key. -4. Replace `TOKEN` and `CHANNEL`, then execute this command to export: - -```console -./DiscordChatExporter.Cli.sh export -t TOKEN -c CHANNEL -``` - -If the above command throws a "Permission denied" error, use `chmod` to fix the permissions: - -```console -chmod +x DiscordChatExporter.Cli.sh -``` - -Alternatively, if the script doesn't work, you can run the following command to run the application directly: - -```console -dotnet DiscordChatExporter.Cli.dll export -t TOKEN -c CHANNEL -``` - -> [How to get Token and Channel IDs](Token-and-IDs.md). - -There's much more you can do with DCE.CLI! Read the [CLI explained](Using-the-CLI.md) page to get started. diff --git a/.docs/MacOS.md b/.docs/MacOS.md deleted file mode 100644 index 56bcd52..0000000 --- a/.docs/MacOS.md +++ /dev/null @@ -1,34 +0,0 @@ -# macOS usage instructions - -![Might look different depending on your macOS version](https://i.imgur.com/gA8jFjJ.png) - -## Installing .NET Runtime - -Please follow the [instructions provided here](Dotnet.md). - -## Downloading and using DiscordChatExporter.Cli - -1. Download [DiscordChatExporter.CLI.zip](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) and extract it to a folder. -2. Search for `Terminal.app` in Spotlight (⌘+SPACE), then open it. -3. In the Terminal window, type `cd` , press the SPACE key, then drag and drop the extracted folder into the window, then press the RETURN key. -4. Execute the following command to export, replacing `TOKEN` and `CHANNEL` with your own values: - -```console -./DiscordChatExporter.Cli.sh export -t TOKEN -c CHANNEL -``` - -If the above command throws a "Permission denied" error, use `chmod` to fix the permissions: - -```console -chmod +x DiscordChatExporter.Cli.sh -``` - -Alternatively, if the script doesn't work, you can run the following command to run the application directly: - -```console -dotnet DiscordChatExporter.Cli.dll export -t TOKEN -c CHANNEL -``` - -> [How to get Token and Channel IDs](Token-and-IDs.md). - -There's much more you can do with DCE.CLI! Read the [CLI explained](Using-the-CLI.md) page to get started. diff --git a/.docs/Message-filters.md b/.docs/Message-filters.md index 4d917d3..c228aa7 100644 --- a/.docs/Message-filters.md +++ b/.docs/Message-filters.md @@ -89,17 +89,17 @@ from:96\-LB In most cases, you will need to enclose your filter in quotes (`"`) to escape characters that may have special meaning in your shell: ```console -DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz has:image" +$ ./DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz has:image" ``` If you need to include quotes inside the filter itself as well, use single quotes (`'`) for those instead: ```console -DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz 'hello world'" +$ ./DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz 'hello world'" ``` Additionally, negated filters (those that start with `-`) may cause parsing issues even when enclosed in quotes. To avoid this, use the tilde (`~`) character instead of the dash (`-`): ```console -DiscordChatExporter.Cli export [...] --filter ~from:Tyrrrz +$ ./DiscordChatExporter.Cli export [...] --filter ~from:Tyrrrz ``` diff --git a/.docs/Readme.md b/.docs/Readme.md index b050817..c26734c 100644 --- a/.docs/Readme.md +++ b/.docs/Readme.md @@ -2,8 +2,7 @@ ## Installation & Usage -- [Get .NET Core Runtime](Dotnet.md) (Required for CLI; Installed automatically for GUI; Not required in Docker) -- [Windows](Getting-started.md#gui-or-cli) | [macOS](MacOS.md) | [Linux](Linux.md) | [Docker](Docker.md) +- [Get .NET Runtime](Dotnet.md) - Getting started: - [Using the GUI](Using-the-GUI.md) - [Using the CLI](Using-the-CLI.md) diff --git a/.docs/Scheduling-Linux.md b/.docs/Scheduling-Linux.md index 63a5bfc..7d1fcbd 100644 --- a/.docs/Scheduling-Linux.md +++ b/.docs/Scheduling-Linux.md @@ -1,6 +1,6 @@ # Scheduling exports with Cron -Make sure you already have **DiscordChatExporter.CLI** and **.NET Core** properly installed ([instructions here](Linux.md)). +Make sure you already have **DiscordChatExporter.CLI** downloaded and **.NET Runtime** installed. ## Creating the script @@ -45,7 +45,7 @@ fi cd $DLLFOLDER || exit 1 # This will export your chat -dotnet DiscordChatExporter.Cli.dll export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp +./DiscordChatExporter.Cli export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp # This sets the current time to a variable CURRENTTIME=$(date +"%Y-%m-%d-%H-%M-%S") diff --git a/.docs/Scheduling-MacOS.md b/.docs/Scheduling-MacOS.md index f2a9a36..b40c2d8 100644 --- a/.docs/Scheduling-MacOS.md +++ b/.docs/Scheduling-MacOS.md @@ -1,8 +1,6 @@ # Scheduling exports on macOS -Scheduling on macOS is a bit tricky, but it should work if you follow the instructions accordingly. - -Make sure you already have **DiscordChatExporter.CLI** and **.NET Core** properly installed ([instructions here](MacOS.md)). +Make sure you already have **DiscordChatExporter.CLI** downloaded and **.NET Runtime** installed. ## Creating the script @@ -51,7 +49,7 @@ fi cd $DLLFOLDER || exit 1 # This will export your chat -dotnet DiscordChatExporter.Cli.dll export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp +./DiscordChatExporter.Cli export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp # This sets the current time to a variable CURRENTTIME=$(date +"%Y-%m-%d-%H-%M-%S") diff --git a/.docs/Scheduling-Windows.md b/.docs/Scheduling-Windows.md index 9cfed26..c7a83c4 100644 --- a/.docs/Scheduling-Windows.md +++ b/.docs/Scheduling-Windows.md @@ -1,6 +1,7 @@ # Scheduling exports on Windows We'll be using [DiscordChatExporter CLI](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest), PowerShell, and Task Scheduler. +Make sure you already have **DiscordChatExporter.CLI** downloaded and **.NET Runtime** installed. ## Creating the script @@ -19,7 +20,7 @@ $EXPORTFORMAT = "formathere" cd $EXEPATH -.\DiscordChatExporter.Cli.exe export -t $TOKEN -c $CHANNEL -f $EXPORTFORMAT -o "$FILENAME.tmp" +./DiscordChatExporter.Cli export -t $TOKEN -c $CHANNEL -f $EXPORTFORMAT -o "$FILENAME.tmp" $Date = Get-Date -Format "yyyy-MM-dd-HH-mm" diff --git a/.docs/Token-and-IDs.md b/.docs/Token-and-IDs.md index 7dbdf15..9374d9f 100644 --- a/.docs/Token-and-IDs.md +++ b/.docs/Token-and-IDs.md @@ -25,7 +25,7 @@ Prerequisite step: Navigate to [discord.com](https://discord.com) and login. 3. Type - ```console + ```js (webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken() ``` @@ -118,7 +118,7 @@ Prerequisite step: Navigate to [discord.com](https://discord.com) and login. 1. Type - ```console + ```js (webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken() ``` diff --git a/.docs/Troubleshooting.md b/.docs/Troubleshooting.md index 7ff700b..079e467 100644 --- a/.docs/Troubleshooting.md +++ b/.docs/Troubleshooting.md @@ -70,14 +70,7 @@ Check the following page: [Obtaining token](Token-and-IDs.md) ### When I open DCE a black window pops up quickly or nothing shows up -If you have [.NET Core Runtime correctly installed](Dotnet.md), you might have downloaded the CLi flavor, try [downloading the GUI](Getting-started.md#gui-or-cli) instead. - -### How do I run DCE on macOS or Linux? - -Check the following pages: - -- [macOS usage instructions](MacOS.md) -- [Linux usage instructions](Linux.md) +If you have [.NET Runtime correctly installed](Dotnet.md), you might have downloaded the CLI flavor, try [downloading the GUI](Getting-started.md#gui-or-cli) instead. ### How can I set DCE to export automatically at certain times? @@ -133,34 +126,26 @@ Make sure you're [copying the DM Channel ID](Token-and-IDs.md#how-to-get-a-direc ## Errors -```console +```yml DiscordChatExporter.Domain.Exceptions.DiscordChatExporterException: Authentication token is invalid. -... ``` ↳ Make sure the provided token is correct. -```console +```yml DiscordChatExporter.Domain.Exceptions.DiscordChatExporterException: Requested resource does not exist. ``` ↳ Check your channel ID, it might be invalid. [Read this if you need help](Token-and-IDs.md). -```console +```yml DiscordChatExporter.Domain.Exceptions.DiscordChatExporterException: Access is forbidden. ``` ↳ This means you don't have access to the channel. -```console -The application to execute does not exist: -``` - -↳ The `DiscordChatExporter.Cli.dll` file is missing. Keep the `.exe` and all the `.dll` files together. If you didn't move the files, try unzipping again. - -```console +```yml System.Net.WebException: Error: TrustFailure ... Invalid certificate received from server. -... ``` ↳ Try running cert-sync. diff --git a/.docs/Using-the-CLI.md b/.docs/Using-the-CLI.md index 79db0d5..457bd8b 100644 --- a/.docs/Using-the-CLI.md +++ b/.docs/Using-the-CLI.md @@ -28,22 +28,10 @@ You can also drag and drop the folder on **every platform**. Now we're ready to run the commands. The examples on this page follow the Windows file path format, change the file paths according to your system. -On **Windows**, type the following command in your terminal of choice, then press ENTER to run it. This will list all available subcommands and options. +Type the following command in your terminal of choice, then press ENTER to run it. This will list all available subcommands and options. ```console -DiscordChatExporter.Cli.exe -``` - -On **macOS** and **Linux**, run the following instead: - -```console -./DiscordChatExporter.Cli.sh -``` - -If either of the above approaches don't work for you, you can also run **DiscordChatExporter** directly like this, regardless of the platform: - -```console -dotnet DiscordChatExporter.Cli.dll +$ ./DiscordChatExporter.Cli ``` > **Docker** users, please refer to the [Docker usage instructions](Docker.md). @@ -61,18 +49,18 @@ dotnet DiscordChatExporter.Cli.dll | guilds | Outputs the list of accessible servers | | guide | Explains how to obtain token, server, and channel ID | -To use the commands, you'll need a token. For the instructions on how to get a token, please refer to [this page](Token-and-IDs.md), or run `dotnet DiscordChatExporter.Cli.dll guide`. +To use the commands, you'll need a token. For the instructions on how to get a token, please refer to [this page](Token-and-IDs.md), or run `./DiscordChatExporter.Cli guide`. To get help with a specific command, run: ```console -dotnet DiscordChatExporter.Cli.dll command --help +$ ./DiscordChatExporter.Cli command --help ``` For example, to figure out how to use the `export` command, run: ```console -dotnet DiscordChatExporter.Cli.dll export --help +$ ./DiscordChatExporter.Cli export --help ``` ## Export a specific channel @@ -80,7 +68,7 @@ dotnet DiscordChatExporter.Cli.dll export --help You can quickly export with DCE's default settings by using just `-t token` and `-c channelid`. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 ``` #### Changing the format @@ -89,7 +77,7 @@ You can change the export format to `HtmlDark`, `HtmlLight`, `PlainText` `Json` format is `HtmlDark`. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -f Json +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -f Json ``` #### Changing the output filename @@ -97,7 +85,7 @@ dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -f Json You can change the filename by using `-o name.ext`. e.g. for the `HTML` format: ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o myserver.html +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o myserver.html ``` #### Changing the output directory @@ -107,7 +95,7 @@ extension. If any of the folders in the path have a space in its name, escape them with quotes ("). ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports" +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports" ``` #### Changing the filename and output directory @@ -117,7 +105,7 @@ Note that the filename must have an extension, otherwise it will be considered a If any of the folders in the path have a space in its name, escape them with quotes ("). ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\myserver.html" +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\myserver.html" ``` #### Generating the filename and output directory dynamically @@ -125,7 +113,7 @@ dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord You can use template tokens to generate the output file path based on the server and channel metadata. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\%G\%T\%C.html" +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\%G\%T\%C.html" ``` Assuming you are exporting a channel named `"my-channel"` in the `"Text channels"` category from a server @@ -152,13 +140,13 @@ You can use partitioning to split files after a given number of messages or file For example, a channel with 36 messages set to be partitioned every 10 messages will output 4 files. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -p 10 +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -p 10 ``` A 45 MB channel set to be partitioned every 20 MB will output 3 files. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -p 20mb +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -p 20mb ``` #### Downloading assets @@ -169,7 +157,7 @@ downloaded when using the plain text (TXT) export format. A folder containing the assets will be created along with the exported chat. They must be kept together. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --media +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --media ``` #### Reusing assets @@ -178,7 +166,7 @@ Previously downloaded assets can be reused to skip redundant downloads as long a same folder. Using this option can speed up future exports. This option requires the `--media` option. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --media --reuse-media +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --media --reuse-media ``` #### Changing the media directory @@ -187,7 +175,7 @@ By default, the media directory is created alongside the exported chat. You can providing a path that ends with a slash. All of the exported media will be stored in this directory. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --media --media-dir "C:\Discord Media" +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --media --media-dir "C:\Discord Media" ``` #### Changing the date format @@ -196,7 +184,7 @@ You can customize how dates are formatted in the exported files by using `--loca locales. The default locale is `en-US`. ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --locale "de-DE" +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --locale "de-DE" ``` #### Date ranges @@ -205,14 +193,14 @@ dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --locale "de-DE Use `--before` to export messages sent before the provided date. E.g. messages sent before September 18th, 2019: ```console -dotnet DiscordChatExporter.Cli.dll 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** Use `--after` to export messages sent after the provided date. E.g. messages sent after September 17th, 2019 11:34 PM: ```console -dotnet DiscordChatExporter.Cli.dll 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** @@ -220,7 +208,7 @@ Use `--before` and `--after` to export messages sent during the provided date ra September 17th, 2019 11:34 PM and September 18th: ```console -dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34" --before "2019-09-18" +$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34" --before "2019-09-18" ``` You can try different formats like `17-SEP-2019 11:34 PM` or even refine your ranges down to @@ -234,7 +222,7 @@ formats [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/custo To export all channels in a specific server, use the `exportguild` command and provide the server ID through the `-g|--guild` option: ```console -dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 +$ ./DiscordChatExporter.Cli exportguild -t "mfa.Ifrn" -g 21814 ``` #### Including threads @@ -244,7 +232,7 @@ specifying which threads should be included. It has possible values of `none`, ` threads should be included. To include both active and archived threads, use `--include-threads all`. ```console -dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 --include-threads all +$ ./DiscordChatExporter.Cli exportguild -t "mfa.Ifrn" -g 21814 --include-threads all ``` #### Including voice channels @@ -254,7 +242,7 @@ specifying whether to include voice channels in the export. It has possible valu voice channels, use `--include-vc false`. ```console -dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 --include-vc false +$ ./DiscordChatExporter.Cli exportguild -t "mfa.Ifrn" -g 21814 --include-vc false ``` ### Export all channels @@ -262,7 +250,7 @@ dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 --include- To export all accessible channels, use the `exportall` command: ```console -dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn" +$ ./DiscordChatExporter.Cli exportall -t "mfa.Ifrn" ``` #### Excluding DMs @@ -270,7 +258,7 @@ dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn" To exclude DMs, add the `--include-dm false` option. ```console -dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn" --include-dm false +$ ./DiscordChatExporter.Cli exportall -t "mfa.Ifrn" --include-dm false ``` ### List channels in a server @@ -278,7 +266,7 @@ dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn" --include-dm false To list the channels available in a specific server, use the `channels` command and provide the server ID through the `-g|--guild` option: ```console -dotnet DiscordChatExporter.Cli.dll channels -t "mfa.Ifrn" -g 21814 +$ ./DiscordChatExporter.Cli channels -t "mfa.Ifrn" -g 21814 ``` ### List direct message channels @@ -286,7 +274,7 @@ dotnet DiscordChatExporter.Cli.dll channels -t "mfa.Ifrn" -g 21814 To list all DM channels accessible to the current account, use the `dm` command: ```console -dotnet DiscordChatExporter.Cli.dll dm -t "mfa.Ifrn" +$ ./DiscordChatExporter.Cli dm -t "mfa.Ifrn" ``` ### List servers @@ -294,5 +282,5 @@ dotnet DiscordChatExporter.Cli.dll dm -t "mfa.Ifrn" To list all servers accessible by the current account, use the `guilds` command: ```console -dotnet DiscordChatExporter.Cli.dll guilds -t "mfa.Ifrn" > C:\path\to\output.txt +$ ./DiscordChatExporter.Cli guilds -t "mfa.Ifrn" > C:\path\to\output.txt ``` \ No newline at end of file diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ceed2cf..d0dfaea 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -12,8 +12,7 @@ on: - master jobs: - # Outputs from this job aren't really used, but it's here to verify that - # the Dockerfile builds correctly on pull requests. + # Outputs from this job aren't really used, but it's here to verify that the Dockerfile builds correctly pack: runs-on: ubuntu-latest timeout-minutes: 10 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5d57fce..e53568d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,7 @@ env: jobs: format: - runs-on: windows-latest + runs-on: ubuntu-latest timeout-minutes: 10 permissions: @@ -43,7 +43,7 @@ jobs: # Tests need access to secrets, so we can't run them against PRs because of limited trust if: ${{ github.event_name != 'pull_request' }} - runs-on: windows-latest + runs-on: ubuntu-latest timeout-minutes: 10 permissions: @@ -82,7 +82,24 @@ jobs: app: - DiscordChatExporter.Cli - DiscordChatExporter.Gui + rid: + - win-arm64 + - win-x86 + - win-x64 + - linux-arm + - linux-arm64 + - linux-musl-x64 + - linux-x64 + - osx-arm64 + - osx-x64 + include: + - app: DiscordChatExporter.Cli + asset: DiscordChatExporter.Cli + - app: DiscordChatExporter.Gui + # GUI assets aren't suffixed, unlike the CLI assets + asset: DiscordChatExporter + # Need to run on Windows because of DotnetRuntimeBootstrapper's dependency on Ressy runs-on: windows-latest timeout-minutes: 10 @@ -106,12 +123,13 @@ jobs: -p:CSharpier_Bypass=true --output ${{ matrix.app }}/bin/publish/ --configuration Release - --use-current-runtime + --runtime ${{ matrix.rid }} + --no-self-contained - name: Upload artifacts uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 with: - name: ${{ matrix.app }} + name: ${{ matrix.asset }}.${{ matrix.rid }} path: ${{ matrix.app }}/bin/publish/ if-no-files-found: error @@ -148,11 +166,21 @@ jobs: app: - DiscordChatExporter.Cli - DiscordChatExporter.Gui + rid: + - win-arm64 + - win-x86 + - win-x64 + - linux-arm + - linux-arm64 + - linux-musl-x64 + - linux-x64 + - osx-arm64 + - osx-x64 include: - app: DiscordChatExporter.Cli asset: DiscordChatExporter.Cli - app: DiscordChatExporter.Gui - # GUI asset isn't suffixed, unlike the CLI asset + # GUI assets aren't suffixed, unlike the CLI assets asset: DiscordChatExporter runs-on: ubuntu-latest @@ -166,25 +194,20 @@ jobs: - name: Download artifacts uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1 with: - name: ${{ matrix.app }} + name: ${{ matrix.asset }}.${{ matrix.rid }} path: ${{ matrix.app }}/ - - name: Configure permissions - # Remove this when the GUI also becomes cross-platform - if: ${{ matrix.app == 'DiscordChatExporter.Cli' }} - run: chmod +x ${{ matrix.app }}/${{ matrix.app }}.sh - - name: Create package # Change into the artifacts directory to avoid including the directory itself in the zip archive working-directory: ${{ matrix.app }}/ - run: zip -rX ../${{ matrix.asset }}.zip . + run: zip -r ../${{ matrix.asset }}.${{ matrix.rid }}.zip . - name: Upload release asset env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: > gh release upload ${{ github.ref_name }} - ${{ matrix.asset }}.zip + ${{ matrix.asset }}.${{ matrix.rid }}.zip --repo ${{ github.event.repository.full_name }} notify: diff --git a/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj b/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj index 95ebf18..938f41b 100644 --- a/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj +++ b/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj @@ -4,16 +4,12 @@ Exe ..\favicon.ico - - - - - + diff --git a/DiscordChatExporter.Cli/DiscordChatExporter.Cli.sh b/DiscordChatExporter.Cli/DiscordChatExporter.Cli.sh deleted file mode 100644 index 4d6611d..0000000 --- a/DiscordChatExporter.Cli/DiscordChatExporter.Cli.sh +++ /dev/null @@ -1 +0,0 @@ -dotnet "$(dirname "$0")/DiscordChatExporter.Cli.dll" "$@" \ No newline at end of file diff --git a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj index 8d32b29..8184c40 100644 --- a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj +++ b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj @@ -20,7 +20,7 @@ - + diff --git a/DiscordChatExporter.Gui/Services/UpdateService.cs b/DiscordChatExporter.Gui/Services/UpdateService.cs index cefb053..ccfd67d 100644 --- a/DiscordChatExporter.Gui/Services/UpdateService.cs +++ b/DiscordChatExporter.Gui/Services/UpdateService.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.InteropServices; using System.Threading.Tasks; using Onova; using Onova.Exceptions; @@ -9,7 +10,15 @@ namespace DiscordChatExporter.Gui.Services; public class UpdateService(SettingsService settingsService) : IDisposable { private readonly IUpdateManager _updateManager = new UpdateManager( - new GithubPackageResolver("Tyrrrz", "DiscordChatExporter", "DiscordChatExporter.zip"), + new GithubPackageResolver( + "Tyrrrz", + "DiscordChatExporter", + // Examples: + // DiscordChatExporter.win-arm64.zip + // DiscordChatExporter.win-x64.zip + // DiscordChatExporter.linux-x64.zip + $"DiscordChatExporter.{RuntimeInformation.RuntimeIdentifier}.zip" + ), new ZipPackageExtractor() ); diff --git a/Readme.md b/Readme.md index 3ab3604..732b9e7 100644 --- a/Readme.md +++ b/Readme.md @@ -41,53 +41,15 @@ To learn more about the war and how you can help, [click here](https://tyrrrz.me ## Download -This application comes in two flavors: graphical user interface (**GUI**) and command-line interface (**CLI**). -The following table lists all available download options: - - - - - - - - - - - - - - - - - - - - - -
DownloadsSupported OS
GUI - - -
    -
  • Windows 7 or higher
  • -
-
CLI -
    -
  • 🟢 Stable release (DiscordChatExporter.Cli.zip
  • -
  • 🟠 CI build (DiscordChatExporter.Cli.zip)
  • -
  • 🐋 Docker (tyrrrz/discordchatexporter)
  • -
  • 📦 AUR (discord-chat-exporter-cli)
  • -
  • 📦 Nix (discordchatexporter-cli)
  • -
-
-
    -
  • Windows 7 or higher
  • -
  • macOS 10.13 (High Sierra) or higher
  • -
  • Linux (multiple distros)
  • -
-
+- **Graphical user interface** (desktop app): + - 🟢 **[Stable release](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest)**: look for `DiscordChatExporter.*.zip` + - 🟠 [CI build](https://github.com/Tyrrrz/DiscordChatExporter/actions/workflows/main.yml): look for `DiscordChatExporter.*.zip` +- **Command-line interface** (terminal app): + - 🟢 **[Stable release](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest)**: look for `DiscordChatExporter.Cli.*.zip` + - 🟠 [CI build](https://github.com/Tyrrrz/DiscordChatExporter/actions/workflows/main.yml): look for `DiscordChatExporter.Cli.*.zip` + - 🐋 [Docker](https://hub.docker.com/r/tyrrrz/discordchatexporter): `docker pull tyrrrz/discordchatexporter` + - 📦 [AUR](https://aur.archlinux.org/packages/discord-chat-exporter-cli): `discord-chat-exporter-cli` + - 📦 [Nix](https://search.nixos.org/packages?query=discordchatexporter-cli): `discordchatexporter-cli` > **Important**: > To run **DiscordChatExporter**, you need to make sure that the **.NET 8.0 Runtime** is installed. @@ -107,8 +69,8 @@ The following table lists all available download options: ## Features -- Graphical user interface (Windows) -- Command-line interface (Windows, Linux, macOS) +- Graphical and command-line interfaces +- Fully cross-platform - Authentication via either a user or a bot token - Multiple output formats: HTML (dark/light), TXT, CSV, JSON - Support for markdown, attachments, embeds, emoji, and other rich media features