Skip to main content

A tool to delete Discord messages.

Project description

Delete Me Discord

PyPI Latest Release Pepy Total Downloads GitHub License

Delete Me Discord is a command-line tool designed to help Discord users delete their messages across multiple channels based on time or message count criteria.

⚠️Use at Your Own Risk: Using automated tools on Discord, may violate Discord's Terms of Service and could result in account suspension or termination. Please use this tool responsibly and understand the potential risks involved.

Features

  • Time-Based Deletion: Delete messages and reactions older than a specified time delta.
  • Count-Based Preservation: Preserve a certain number of recent messages regardless of their age.
  • Selective Channel Processing: Include or exclude specific channels, guilds, or parent categories.
  • Dry Run Mode: Simulate deletions without actually removing any messages.
  • Robust Logging: Track the script's actions and troubleshoot issues effectively.
  • Rate Limit Handling: Automatically handles Discord API rate limits with customizable retry strategies.

Table of Contents

Installation

You can install delete-me-discord using pip. Ensure you have Python 3.6 or higher installed.

Using pip

pip install delete-me-discord

Usage

After installation, you can execute the script directly from the command line using the delete-me-discord command.

Basic Command

delete-me-discord --preserve-n 10 --preserve-last "weeks=1,days=3"

This command will delete messages older than 1 week and 3 days while preserving at least 10 messages in each channel.

Command-Line Options

  • --version: Description: Show the version number and exit.

  • --include-ids: Type: str Description: List of channel/guild/parent IDs to include. Usage: --include-ids 123456789012345678 234567890123456789 Note: Channel or category (parent) IDs in --include-ids still run even if their category or guild is excluded, so you can carve out specific paths. If omitted, all IDs are potential candidates (subject to excludes).

  • --exclude-ids: Type: str Description: List of channel/guild/parent IDs to exclude. Usage: --exclude-ids 345678901234567890 456789012345678901

  • --dry-run: Type: flag Description: Perform a dry run without deleting any messages. Useful for testing. Usage: --dry-run

  • --delete-reactions: Type: flag Description: Remove your reactions (emoji) from messages encountered; honors --dry-run. Usage: --delete-reactions

  • --list-guilds: Type: flag Description: List your guild IDs and names, then exit (no deletions). Note: Guilds appear here only if the guild ID itself is not excluded (and matches --include-ids when provided); channel/category includes do not make a guild show up. Usage: --list-guilds

  • --list-channels: Type: flag Description: List channels (grouped by guild and DMs) with IDs and types, then exit (no deletions). Respects --include-ids/--exclude-ids. Usage: --list-channels

  • --log-level: Type: str Choices: DEBUG, INFO, WARNING, ERROR, CRITICAL Description: Set the logging level. Default is INFO. Usage: --log-level DEBUG

  • --max-retries: Type: int Description: Maximum number of retries for API requests in case of rate limiting. Default is 5. Usage: --max-retries 10

  • --retry-time-buffer: Type: float or float float Description: Additional time (in seconds) to wait after rate limit responses. Provide one value or two values for randomness. Default is [25, 35]. Usage:

    • Single value: --retry-time-buffer 30
    • Range: --retry-time-buffer 25 35
  • --fetch-sleep-time: Type: float or float float Description: Sleep time (in seconds) between message fetch requests. Provide one value or two values for randomness. Default is [0.2, 0.4]. Usage:

    • Single value: --fetch-sleep-time 0.3
    • Range: --fetch-sleep-time 0.2 0.4
  • --delete-sleep-time: Type: float or float float Description: Sleep time (in seconds) between message deletion attempts. Provide one value or two values for randomness. Default is [1.5, 2]. Usage:

    • Single value: --delete-sleep-time 1.75
    • Range: --delete-sleep-time 1.5 2
  • --preserve-n: Type: int Description: Number of recent messages to preserve in each channel regardless of --preserve-last. Default is 12. Usage: --preserve-n 15

  • --preserve-last: Type: str Description: Preserves recent messages (and reactions) within the last given delta time (e.g., "weeks=2,days=3") regardless of --preserve-n. Default is weeks=2. Usage: --preserve-last "weeks=1,days=3"

  • --fetch-max-age: Type: str Description: Only fetch messages newer than the given time delta from now (e.g., "weeks=1,days=2"). Speeds up recurring purges by skipping older history. If you have never purged a channel before, older messages will remain untouched. Default is no max age. Usage: --fetch-max-age "weeks=1"

  • --max-messages: Type: int Description: Maximum number of messages to fetch per channel. Defaults to no limit. Usage: --max-messages 5000

Examples

1. Delete Messages Older Than 2 Weeks and Preserve at least Last 10 Messages

delete-me-discord --preserve-n 10 --preserve-last "weeks=2"

2. Perform a Dry Run to See Which Messages Would Be Deleted

delete-me-discord --dry-run

3. Delete Messages in Specific Channels Only

delete-me-discord --include-ids 123456789012345678 234567890123456789 --preserve-last "weeks=1"

4. Exclude Specific Guilds from Deletion

delete-me-discord --exclude-ids 345678901234567890 --preserve-n 5

5. Increase Retry Attempts and Adjust Rate Limit Buffer

delete-me-discord --max-retries 10 --retry-time-buffer 30 40 --preserve-n 20

6. Speed up recurring purges by skipping older history

delete-me-discord --fetch-max-age "weeks=2" --max-messages 5000 --preserve-last "weeks=1"

Configuration

Before using delete-me-discord, you need to set up your Discord credentials by defining the following environment variables:

  • DISCORD_TOKEN: Your Discord authorization token. See this guide to obtain your token.
  • DISCORD_USER_ID (optional): Your Discord user ID. This ID is used to target messages authored by you. If not provided, the tool will resolve it automatically using your token. You can obtain it by enabling Developer Mode in Discord and right-clicking your username to copy the ID.

Security Note: Never share your authorization token. Sharing it will allow others to access your account and perform actions on your behalf.

Contributing

Contributions are welcome! If you'd like to improve delete-me-discord, please follow these steps:

  1. Fork the Repository: Click the "Fork" button on the repository page to create your own fork.

  2. Clone Your Fork:

    git clone https://github.com/janthmueller/delete-me-discord.git
    cd delete-me-discord
    
  3. Create a New Branch:

    git checkout -b feature/YourFeatureName
    
  4. Make Your Changes: Implement your feature or fix bugs.

  5. Commit Your Changes:

    git commit -m "Add feature: YourFeatureName"
    
  6. Push to Your Fork:

    git push origin feature/YourFeatureName
    
  7. Open a Pull Request: Navigate to the original repository and click "New Pull Request."

Reporting Issues

If you encounter any bugs or have suggestions for improvements, please open an issue in the Issues section of the repository.

License

This project is licensed under the MIT License. You are free to use, modify, and distribute this software as per the terms of the license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

delete_me_discord-1.1.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

delete_me_discord-1.1.0-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file delete_me_discord-1.1.0.tar.gz.

File metadata

  • Download URL: delete_me_discord-1.1.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for delete_me_discord-1.1.0.tar.gz
Algorithm Hash digest
SHA256 aa8b022baabaa5ee54d52cfe6cd39948c987d1cfe24357051f0f84855a205096
MD5 1c6c9f5f04321f0cb2c1053e7a54f3e8
BLAKE2b-256 f73727c5d570c07a0cbce940abd69d954cd96af9b6a3155edd2ea734c02c638c

See more details on using hashes here.

File details

Details for the file delete_me_discord-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for delete_me_discord-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be3f7d2260e756a54603c87670a4c3819f6ef5a3591c3b2a347338a63490b0a4
MD5 cefaf8b6b78fb5fbe8c40a2f4e8d4e47
BLAKE2b-256 c1879ba688b25ee583f5e20771f5305ac5307e6d2ef5df89824efcb6e3abbfa6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page