
Download all the emojis you've ever sent inside messages on Discord. Supports skipping duplicates and resuming downloads.

Usage
These instructions are for building to Go project.
The bash equivalent does not need compiling.
git clone [email protected]:5HT2/discord-emoji-extractor.git
cd discord-emoji-extractor
make
./extract -h # Run the program with help arguments
Running the Go version
- Download your Discord data backup. You can get this by going to Discord Settings > Privacy & safety > Request all of my data
- Extract the data somewhere. Doesn't matter.
- Follow the above usage instructions and run the program from anywhere.
- Follow the interactive instructions. You can use the
-dir $DIR -dirconfirm args with DIR set to a path to skip the prompts.
- At any point you may cancel downloading and re-run the program, and it will resume downloading.
Running the Bash version
- Download your Discord data backup. You can get this by going to Discord Settings > Privacy & safety > Request all of my data
- Extract the data somewhere. Doesn't matter.
cd my_data/messages/
- Download
extract.sh to the messages directory.
wget https://github.com/5HT2/discord-emoji-extractor/raw/master/extract.sh
- Make the script executable.
chmod +x extract.sh
- Run the
extract.sh script. The bash script does not support pausing and resuming downloads.
How it works
I basically just wanted a way to grab old emojis from servers that I'd left, with a picture preview, so the gist of the
script is just reading each messages.csv, grepping for emojis and parsing the required info from each message
(list of emojis, each emoji's name, ID, and type, etc).
The Go version works similarly, but is much faster and supports cancelling and resuming downloading.
Contributing and Improvements
Feature-wise, maybe you could parse the events file to get emojis which you've also used as reactions?
A bot to dynamically upload to a bunch of selected servers (as per the default 50 emoji / server limit) and skip ones with the same name, would be neat. Bots have a stricted upload ratelimit than users, so letting it run in the background to wait out the timeout would be ideal.
Possible command syntax could be
./extract -dir $DIR -dirconfirm -upload -token $TOKEN -serverids 96230004047740928,785362280601616406,343525052332900352