Hacker Newsnew | past | comments | ask | show | jobs | submit | DatCodeMania's commentslogin

Hi HN. I built this because I tried to get Discord to delete my messages the official way first, and it went nowhere.

I filed a GDPR Article 17 erasure request. After a long email battle, Discord did offer to delete the messages I no longer had access to (if I provided them with IDs from my data package), but wouldn't go further, citing other users' interest in the conversation. They said I could either delete all my other messages manually, one at a time, or delete my whole account (which merely anonymizes them to "Deleted User"). I wasn't particularly inclined to click delete hundreds of thousands of times, so I built this.

How it works: your export already lists the exact channel and message IDs for everything you've posted, so discord-delete sends one DELETE per message against the same REST endpoint the client uses. The search API is never used. Pacing is adaptive: AIMD off a floor, plus obeying Discord's rate-limit headers, so it settles near the fastest rate Discord tolerates. It runs as a TUI/headless, is open source (MIT), and is packaged as a single Go binary. Requests are made to Discord, plus ntfy for progress updates if you opt in and a once-a-day version check against GitHub releases (opt out with an env var). Token storage is opt-in to the OS keyring.

The two caveats are that automating a user account is against Discord's ToS and can get it banned, and a large account will take days, which is a limit set by Discord.

I've been thinking about a similar tool for Reddit next, working from their data export the same way, since a quick search didn't turn up anything up to my standards. Please do point me towards anything good that exists. The scripts I found on GitHub either didn't handle rate limits well or required you to go through Reddit's whole API signup process.


Hi HN. I built this because I tried to get Discord to delete my messages the official way first, and it went nowhere.

I filed a GDPR Article 17 erasure request. After a long email battle, Discord did offer to delete the messages I no longer had access to (if I provided them with IDs from my data package), but wouldn't go further, citing other users' interest in the conversation. They said I could either delete all my other messages manually, one at a time, or delete my whole account (which merely anonymizes them to "Deleted User"). I wasn't particularly inclined to click delete hundreds of thousands of times, so I built this.

How it works: your export already lists the exact channel and message IDs for everything you've posted, so discord-delete sends one DELETE per message against the same REST endpoint the client uses. The search API is never used. Pacing is adaptive: AIMD off a floor, plus obeying Discord's rate-limit headers, so it settles near the fastest rate Discord tolerates. It runs as a TUI/headless, is open source (MIT), and is packaged as a single Go binary. Requests are made to Discord, plus ntfy for progress updates if you opt in and a once-a-day version check against GitHub releases (opt out with an env var). Token storage is opt-in to the OS keyring.

The two caveats are that automating a user account is against Discord's ToS and can get it banned, and a large account will take days, which is a limit set by Discord.

I've been thinking about a similar tool for Reddit next, working from their data export the same way, since a quick search didn't turn up anything up to my standards. Please do point me towards anything good that exists. The scripts I found on GitHub either didn't handle rate limits well or required you to go through Reddit's whole API signup process.


Not OP, but thanks for the very detailed response.


Is the source of yours public anywhere? I'd like to take a look.


That would open him up to lots of abuse


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: