Most Discord bots are configured.
This one is programmed.
Every bot below is good at what it was built for. The difference is where the ceiling is — with a settings page, it is whatever that page happens to expose.
| Capability | Custom Commands | MEE6 | Dyno | Carl-bot | ProBot | YAGPDB |
|---|---|---|---|---|---|---|
| 01Write command logic in real Python | Go templates | |||||
| 02Per-server custom database | key–value | |||||
| 03Image template editor with variable slots | rank cards | welcome only | ||||
| 04Buttons, menus and modals handled in your code | role buttons | menus only | ||||
| 05Scheduled jobs that run your own code | scheduled CC | |||||
| 06Upload and serve your own files | ||||||
| And the features everyone has | ||||||
| 07Welcome DM with its own embed and buttons | basic | basic | basic | images | basic | |
| 08Restore a returning member's old roles | ||||||
| 09One reaction that adds and removes roles | add only | add only | add only | add only | ||
| 10Reusable embed library, used by id anywhere | per message | per message | per message | per message | per message | |
| 11Text command that runs code, not a canned reply | static | static | tags | static | scripted | |
| 12Scheduled post that decides its own content | timed | timed | timed | timed | scripted | |
A dash means the feature is not offered as described, not that the bot is weak. Rows are scoped narrowly on purpose and reflect each product's own public documentation — competitors ship changes, so verify before relying on any row.
vs MEE6
The levelling bot: rank cards, XP roles, a polished dashboard.
You can set how much XP a message is worth, but not how levelling works. XP for voice minutes weighted by channel, or a rank card showing a member's most-used commands, has nowhere to live.
Levelling lives in your own database and the rank card is a template you design — XP per voice minute, weighted by channel, is a few lines of code instead of a feature request.
vs Dyno
The moderation bot: automod, mod log, mutes, a long-standing free tier.
Its custom commands are text responders — a trigger and a canned reply with variables. The gap shows the moment a command has to decide something.
A command can branch, read and write your database, open a modal and post a button that runs more code — because it is code, not a canned reply.
vs Carl-bot
The reaction-role and logging bot, and the best of them at both. Its tags system is the closest thing here to programmable behaviour.
Tags are string substitution, not a runtime: no data structures, no persistent per-server database, no async calls. And its buttons hand out roles — you cannot build an arbitrary button, menu or modal and run your own code on the click.
Reactions add and remove roles, hand the role back on unreact, and preview the real message before you save. Any button, menu or modal you build runs your own code on the click.
vs ProBot
Presentation: welcome images, embeds, strong multi-language support.
Its welcome images are one layout with your text and background dropped in, and they are welcome images only — nothing renders a shop receipt or a tournament bracket.
The image editor is not welcome-only. The same canvas renders shop receipts, tournament brackets, profile cards and certificates, from any command, with your data in the slots.
vs YAGPDB
The honest hard case. Genuinely scriptable commands, a database, scheduled execution and deep control.
Go templates instead of Python, a key–value store instead of a real SQL database, and control-panel forms instead of a visual editor with live preview.
Python instead of Go templates, a real database instead of key–value, and a visual editor with live preview instead of a panel full of raw template text.
One bot, and every part of it is yours to change.
Build
Everything that produces something a member can see or run.
09 features- Slash commands
- Options, choices, autocomplete and per-role permissions. Registered with Discord the moment you save — no re-deploy, no waiting.
- Text commands
- Prefix commands with the same editor and the same code behind them, for the things that never wanted to be a slash command.
- Embeds
- A library, not a per-message form. Build one, then use it by id from a command, an event or a welcome message.
- Components
- Components V2 layouts, plain rows of buttons and select menus, or modals — built visually, dropped into any command with load_components().
- Events
- Run code when a member joins or leaves, a message is sent or deleted, a reaction lands, a button is clicked, a modal is submitted or an option is being typed.
- Scripts
- Shared code your commands and events import, so a helper is written once instead of pasted into nine places.
- Reaction roles
- Each emoji maps to roles to add and roles to remove, with an optional take-back when the reaction is removed — and a live preview of the real message you are attaching to.
- Welcome & leave
- The channel message and the DM are separate configurations, each with its own text, embed, buttons and generated banner. Plus roles on join, and giving a returning member their old roles back.
- Image templates
- A canvas editor — text, images, avatars, shapes, progress bars, flex rows and repeaters — where anything can be a slot your code fills. 84 designs to start from.
Data
State that outlives a single command run.
04 features- Variables
- Persistent per-server values for the things too small to deserve a table.
- Databases
- A real per-server database you can query from a command and browse, edit and export from the dashboard.
- Mongo databases
- Document collections for the shapes that do not want rows and columns.
- Files
- Upload your own images, audio and data, and serve them from a command.
Operate
Running it day to day, and finding out what happened.
04 features- Messenger
- Compose and send a message as the bot — embeds, buttons, emoji, files and saved templates, previewed as you build it.
- Jobs
- Your own code on a schedule: a daily leaderboard, an hourly cleanup, a weekly recap.
- Logs
- Audit logs for who changed what, execution logs for every command run, and error logs with the traceback when one fails.
- Announcements
- Product news delivered in the dashboard, per server.
Server
The safety net under all of it.
04 features- Backups
- Automatic daily snapshots and one-click restore, plus version history on commands and embeds you can roll back to.
- Template shop
- Install a command pack someone else built, or publish your own.
- Docs
- The full reference for the sandbox — every function, event and built-in — inside the dashboard.
- AI helper
- Describe the command you want in chat; it designs it, writes the code and fills the form in for you.
Free is a plan here, not a trial.
No card, no clock. Paid tiers raise the caps, unlock scripts and databases at scale, and take the daily run limit off entirely.
See the paid tiers- 5
- Slash commands
- 10
- Text commands
- 10
- Embeds
- 2
- Event handlers
- 5
- Image templates
- 200
- Command runs / day
- Is Custom Commands a good MEE6 alternative?
- For commands, custom logic, your own data and generated images, yes — those are the things MEE6 has no place to put. For levelling you never want to configure, MEE6 is still the simpler pick.
- How is it different from YAGPDB?
- Python instead of Go templates, a real per-server database instead of a key–value store, and a visual editor with live preview for images, components and messages. YAGPDB is open-source and self-hostable, which Custom Commands is not.
- Can it replace Dyno or Carl-bot?
- For commands and automation, yes. For a mature moderation stack, run one alongside — Discord bots do not conflict, and most servers migrate one feature at a time.
- Is there a free plan?
- Yes, free forever with no card required: 5 slash commands, 10 text commands, 2 events, 10 embeds, 5 image templates and 200 command runs a day.
- Do I need to know how to code?
- No. Welcome messages, reaction roles, embeds, image templates and components are all built visually, and an AI helper writes the code with you when a command needs logic.
Run it beside whatever you already have.
Free forever, no card, live in about a minute. Discord bots do not conflict — you can migrate one feature at a time.
Add to your server