A discord bot to archive the messages in a discord text channel.
- Create a discord application and bot.
- Enable the
Server Members
privileged intent for your bot. Note that this means your bot cannot be in more than 100 servers without verification. For a bot of this type, where the output is saved to the disk of the computer running it, this should not be a problem. - Invite the bot to your server. Make sure to select the
application.commands
scope if you want to use slash commands. - Run the bot, providing the token and application id as command line arguments:
- With nix:
nix run github:Sciencentistguy/discord-channel-archiver -- <token_filename> <application_id_filename> [output_directory]
- With cargo:
cargo run -- <token_filename> <application_id_filename> [output_directory]
- Standalone:
discord-channel-archiver <token_filename> <application_id_filename> [output_directory]
- With nix:
- The commands
/archive
and/archive_emoji
should be available in your guilds. - Alternatively, send a message of the form:
!archive <channel> [mode]
, wherechannel
is the channel you want to archive, andmode
is one of eitherjson
orhtml
. If this is blank, or if is any other value, all output formats will be generated.!archive_emoji
- Sit back and watch the bot export the channel to the file format(s) you requested.
The HTML generated is very messy, but it should be well-formed. This means that an html formatter such as prettier should be used to clean it up. I'd recommend doing this if the resultant HTML is to be stored for archival purposes. The JSON should be clean as it is generated by serde. If prettier fails to parse the output, this is likely a bug, please file an issue.
There is no stability guarantee for the generate files. Discord's API can change, and therefore this program must also allow the outputted data to change.
Inspired by DiscordChatExporter.
The HTML / CSS templates are derived from the ones from DiscordChatExporter, under the terms of the GNU GPL.
For licence information, see licence.md.