All-in-one Discord selfbot — moderation, utility, fun, monitoring.
Hybrid plugin system · Triple distribution (pip · npm · git clone)
🇬🇧 English · 🇮🇩 Bahasa Indonesia
Three ways to install:
npm (easiest — handles venv + deps automatically):
npm install -g dismoy
dmypip:
pip install dismoy
dismoygit clone:
git clone https://github.com/mocasus/dismoy.git
cd dismoy
pip install -r requirements.txt
python main.pyOn first run, an interactive setup wizard guides you through:
- Enter your Discord user token
- Choose command prefix (default
!) - Select which modules to enable
- Configure module-specific settings (optional)
Config is saved to ~/.dismoy/config.yaml.
Dismoy is a Discord selfbot — it automates actions on a Discord user account (not a bot account) by connecting to Discord's gateway using the same protocol as the desktop client.
Why a selfbot? Regular Discord bots require bot tokens from the Developer Portal and have limitations — can't read DM history, can't join servers without permissions, different rate limits. A selfbot operates as your actual user account, bypassing these constraints.
Warning
Selfbots violate Discord's Terms of Service. Using automated tools on your user account can result in account termination. This is an educational project. Use at your own risk.
Four built-in modules + unlimited custom plugins:
Moderation — Keyword filter (auto-delete filtered words), flood guard (5 messages/5s → block), DM privacy (block non-friends)
Utility — AFK auto-reply, trigger-based auto-replies, scheduled messages, DM bulk cleaner, guild backup to JSON
Fun — Auto-react with emoji, nitro gift notifier, giveaway joiner, mass react (last 20 messages)
Monitoring — Message archive to JSONL, user status tracker, server activity feed, guild scraper (members + channels to JSON)
Prefix is configurable (default !).
Core
| Command | Description |
|---|---|
!ping |
Check latency |
!help |
Show all available commands |
!modules |
Show module status |
!reload |
Reload all modules |
Moderation
| Command | Description |
|---|---|
!filter add <word> |
Add a filtered keyword |
!filter remove <word> |
Remove a filtered keyword |
!filter list |
List all filtered keywords |
!antispam |
Toggle flood guard |
!dmguard |
Toggle DM privacy |
Utility
| Command | Description |
|---|---|
!afk [message] |
Set AFK mode (blank to disable) |
!autoreply add <trigger> | <response> |
Add auto-reply rule |
!autoreply remove <trigger> |
Remove auto-reply rule |
!autoreply list |
List all auto-reply rules |
!schedule <HH:MM> <message> |
Schedule a message |
!dmclean <count> |
Delete your last N DM messages |
!backup <guild_id> |
Export guild data to JSON |
Fun
| Command | Description |
|---|---|
!autoreact <emoji> |
Auto-react to all new messages |
!autoreact off |
Disable auto-react |
!massreact <emoji> |
React to last 20 messages |
!sniper |
Toggle gift + giveaway notifier |
!sniper status |
Show sniper status |
Monitoring
| Command | Description |
|---|---|
!log on / !log off |
Toggle message archive |
!track <user_id> |
Track user online status |
!track list |
List tracked users |
!track clear |
Clear tracked users |
!scrape <guild_id> |
Export members + channels to JSON |
!activity |
Show recent activity feed |
Drop a .py file in ~/.dismoy/plugins/ — it's auto-loaded on startup.
"""My custom plugin."""
async def setup(bot):
"""Called when plugin loads."""
print("My plugin loaded!")
async def on_ready(bot):
"""Called when bot connects."""
print(f"Connected as {bot.user}")
async def on_message(bot, message):
"""Called on every message."""
if message.author.id == bot.user.id:
return
# Your logic here| Hook | When | Parameters |
|---|---|---|
setup(bot) |
Plugin loads | bot — DismoyBot instance |
on_ready(bot) |
Discord connection ready | bot |
on_message(bot, message) |
Any message received | bot, message |
Plugins have full access to the discord.py-self client via bot.
dismoy/
├── main.py # git clone entry point
├── pyproject.toml # pip package config
├── dismoy/ # core package
│ ├── cli.py # setup wizard + CLI dispatch
│ ├── bot.py # DismoyBot — gateway, events, modules
│ ├── config.py # YAML config management
│ ├── modules/ # built-in modules
│ │ ├── moderation.py # filter, flood guard, DM privacy
│ │ ├── utility.py # AFK, auto-reply, schedule, backup
│ │ ├── fun.py # auto-react, gift notifier, giveaway
│ │ └── monitoring.py # archive, tracker, scraper, activity
│ ├── plugins/ # plugin system
│ │ ├── loader.py # auto-discovery + load
│ │ └── example_plugin.py # template with all hooks
│ └── utils/ # helpers
│ ├── logger.py # colored console output (rich)
│ └── helpers.py # rate limiter, URL parsers
├── npm/ # npm wrapper package
│ ├── package.json # registers `dmy` command
│ └── cli.js # thin bridge: spawns Python subprocess
├── assets/ # logo + banner
├── docs/ # GitHub Pages landing page
└── .github/workflows/ci.yml # Python 3.9–3.12 syntax checks
How it works: cli.py parses arguments → runs setup wizard if no config exists → bot.py creates a discord.py-self client → loads enabled modules → plugins/loader.py scans ~/.dismoy/plugins/*.py → all modules + plugins receive on_message events via the gateway.
Config file: ~/.dismoy/config.yaml
token: "your_discord_user_token"
prefix: "!"
modules:
moderation:
enabled: true
settings:
filtered_words: ["spam", "scam"]
antispam: false
dmguard: false
utility:
enabled: true
settings:
auto_replies: {}
fun:
enabled: true
settings:
nitro_sniper: true
giveaway_sniper: true
monitoring:
enabled: true
settings:
message_logging: false
tracked_users: []
plugins:
enabled: true
directory: "~/.dismoy/plugins"
logging:
level: "INFO"
file: "~/.dismoy/logs/dismoy.log"| Platform | Command | Entry Point |
|---|---|---|
| npm | npm install -g dismoy → dmy |
npm wrapper spawns Python |
| PyPI | pip install dismoy → dismoy |
Python CLI |
| GitHub | git clone → python main.py |
Direct Python |
| Pages | mocasus.github.io/dismoy | Landing page |
