DisStore is a free, open-source file storage system that encrypts your files and stores them on Discord servers using end-to-end encryption. You're the only one who can access your files.
Advantages:
- Free tier - Unlimited message storage in servers
- Reliable - Discord's infrastructure is enterprise-grade
- Decentralized - Files stored across Discord's redundant servers
- No third-party trust - You control encryption keys
Disadvantages:
- Depends on Discord staying operational
- May violate Discord Terms of Service
- Not intended for production use
- Performance limited by API rate limits
Yes, absolutely. All files are encrypted on your computer before being sent to Discord using AES-256-GCM (same encryption used by banks). Discord never sees unencrypted files.
No. The author and contributors have no access to encryption keys or passwords. You're the only one who can decrypt your files.
Yes! Licensed under GPL-3.0-or-later. See LICENSE for details.
- Python 3.10+
- A Discord account (free)
- A Discord server you own/control
- A Discord bot token
- ~30 minutes for setup
Yes! Two interfaces:
- CLI (Terminal) - keyboard-driven
- GUI (Qt) - graphical interface with mouse support
Technically yes, but not recommended:
- Requires exposing credentials on server
- Higher security risk
- Discord API works better locally
- Better to run on your personal machine
Completely free:
- Python (free, open source)
- Discord bot (free)
- DisStore (free, open source)
- No premium features
- Login to DisStore (CLI or GUI)
- Select "Upload"
- Choose file from your computer
- Enter encryption password (remember this!)
- File encrypts and uploads to Discord
- Done! You'll get a file ID for downloading
Time estimate: 1-5 minutes depending on file size
- Login to DisStore
- Select "Download"
- Choose file from your stored list
- Enter the encryption password (same one used at upload)
- File downloads and decrypts
- Saved to
downloaded/folder
Not in the current version. Files are encrypted to your account. Future versions may support multi-user sharing.
Workaround: Manually share unencrypted file with others through other means (email, cloud drive, etc.)
Account password: Create new account with different username
File encryption password: File cannot be recovered. File will be permanently inaccessible.
Prevent this: Use a password manager like 1Password or Bitwarden
Theoretically:
- Discord limit: ~100 million messages per channel
- At 1500 bytes/message: ~150 GB per channel
- At 1GB file: ~150 files possible
Practical limit: 100-500 files recommended (Discord rate limits)
No hard limit, but:
- Recommended: < 100 MB per file
- Safe: < 1 GB per file
- Possible: Up to 10+ GB (but very slow)
Upload time: 1MB file ≈ 2-5 seconds
Yes. Files encrypted on your computer, Discord never sees unencrypted data, decrypted only when you download.
Encryption chain:
Your Computer:
plaintext → encrypt → send to Discord
Discord:
[encrypted] (cannot read)
Your Computer (download):
receive encrypted → decrypt → plaintext
Your files are still encrypted. Attacker would need:
- Your file ID
- Your encryption password
- Your account password
Even with all three, they still need your encryption key (derived from password using PBKDF2 with 200,000 iterations).
Your stored files are still safe (encrypted with your master key). Attacker could:
- Delete your files
- Read your account metadata (usernames, hashes)
- But NOT decrypt your file contents
Mitigation:
- Regenerate bot token immediately
- Change master key
- Create new accounts
AES-256-GCM is:
- ✅ Approved by NIST
- ✅ Used by governments and banks
- ✅ Unbroken since 2001
- ✅ Considered quantum-resistant (so far)
Password strength matters more than algorithm strength. Weak password = weak security.
PBKDF2 is Password-Based Key Derivation Function:
Why: Prevents dictionary attacks
How: Apply hash function 200,000 times
Result: Brute-forcing password takes ~hours instead of ~seconds
Without PBKDF2:
Attacker: 1 billion guesses/sec → cracks in 2 min
With PBKDF2 (200k iter):
Attacker: 10 guesses/sec → cracks in ~3 years
Core:
discord.py- Discord APIcryptography- AES-256-GCMpydantic- Data validation
UI:
rich- Terminal formattingPySide6- Graphical interface (Qt)
Utilities:
requests- HTTPpython-dotenv- Configuration
Account passwords:
- Hashed with PBKDF2 (not reversible)
- Stored on Discord
- Not stored locally
File encryption passwords:
- Never stored
- Must remember or write down securely
Session credentials:
- Encrypted locally in
.state/session.enc - Protected by machine lock
Yes! Import the Python modules:
from src.app import AppDis
from src.cfg import Cfg
cfg = Cfg()
app = AppDis(cfg)
auth = app.auth_svc()
stoc = app.stoc_svc()
# Use services...See API Reference and Examples
Locally: Not recommended (session conflicts)
Different machines:
- Each can login with same account
- But coordinating file uploads risky
- Better to upload from one machine
No, Discord API requires internet. Local-only operation is not supported.
CLI requires a real terminal. Try:
- Use GUI instead:
python gui/main.py - Run from native terminal (not IDE)
- SSH into machine for remote access
Causes: Network issues, Discord rate limit, large file
Solutions:
# Reduce chunk size for unstable networks
DISSTORE_CHUNK_SIZE=500
# Try smaller file first
# Wait 60 seconds (Discord rate limit)
# Try uploading againCause: File corrupted during upload/download
Solutions:
- Re-download (different attempt)
- Re-upload file (delete old version first)
- Verify original file is not corrupted
- Check internet stability
Cause: Token incorrect, expired, or revoked
Solutions:
# 1. Go to Discord Developer Portal
# 2. Regenerate bot token
# 3. Copy immediately and paste in .env
# 4. Restart DisStoreYes, in .env:
DISSTORE_CHUNK_SIZE=1800 # Larger (faster but more messages)
DISSTORE_CHUNK_SIZE=500 # Smaller (slower but fewer messages)Tradeoff:
- Larger = faster, but uses more Discord messages
- Smaller = slower, but fewer Discord messages
Yes! Each file upload asks for encryption password independently.
Good practice:
Account Password: "MyMainPassword123!"
File 1 Password: "DocumentPassword456"
File 2 Password: "PhotoPassword789"
Not recommended - renders all existing data inaccessible.
If you must:
- Download all files
- Change
DISSTORE_MASTER_KEYin.env - Create new accounts
- Re-upload files
See Contributing Guide for:
- Development setup
- Code standards
- Testing requirements
- Pull request process
See GitHub Issues for feature requests and planned improvements.
Current priorities:
- Batch operations
- File sharing
- Better error messages
- Performance optimization
Yes, the code is legal. Using Discord for storage may violate their Terms of Service. Use at your own risk.
GPL-3.0-or-later. You can:
- ✅ Use privately
- ✅ Modify code
- ✅ Redistribute (must include license)
You must:
- ❌ Keep license with distributions
- ❌ Don't hold author liable
Created and maintained by xynnpg. Community contributions welcome.
Please report responsibly:
- Don't post publicly
- Email maintainer privately
- Allow time for patch before disclosure
- 📖 Full Documentation
- 🚀 Installation Guide
- 📚 User Guide
- 🔧 Troubleshooting
- 💻 API Reference
- 🤝 Contributing
Last Updated: May 2026