How Mallard compares
Most general-purpose Discord bots offer fixed features through a settings panel. Mallard runs custom JavaScript scripts for every action, seeded with 32 open moderation commands you can inspect and modify.
The short version
Most bots offer pre-built modules configured through forms. If a feature isn't supported, your options are waiting for a feature request or building and hosting a custom bot.
Mallard provides working commands with full source code access in the dashboard. The 32 default commands are ordinary scripts, and any new command is another script. YAGPDB is the closest alternative; the difference is writing standard JavaScript in Monaco rather than Go template pipelines in a textarea.
At a glance
The detail behind each of these, with sources, is in the section below.
| Mallard | MEE6 | Dyno | Carl-bot | YAGPDB | |
|---|---|---|---|---|---|
| How you author it | JavaScript | Web form | Module settings | TagScript blocks | Go templates |
| A real language | Yes | No | No | Partly | Yes |
| Where you write it | Monaco editor | Web form | Web form | Web form | Plain textarea |
| Syntax highlighting | Yes | — | — | No | No |
| API autocomplete | Yes | — | — | No | No |
| Cap on commands | None | 3 free, then paid | Not published | 1 block, 3 paid | 3 slash, 10 paid |
| Built-ins editable | Yes, all 32 | No | No | No | No |
| Scriptable YouTube feeds | Yes, 5 triggers | No | No | No | No |
| Filter YouTube Shorts | Yes (ctx.youtube.isShort) | No | No | No | No |
"n/a" means the question does not apply, because there is no code to highlight or complete. "Not published" means the vendor does not document a figure, not that there is no limit.
Bot by bot
MEE6
- How you write behaviour
- Custom commands are built in the dashboard as canned responses with a few configured actions attached. There is no general-purpose language, so anything the form does not offer is not available.
- Where you write it
- A web form.
- Where you hit the ceiling
- Free servers get three custom commands; premium lifts that. Some actions, such as giving or removing a role from a command, are premium-only.
Source: MEE6 wiki: custom commands
Carl-bot
- How you write behaviour
- Tags written in TagScript, a block-based templating language. Blocks cover a lot of ground and go deep if you invest in them, but you are assembling blocks rather than writing a program.
- Where you write it
- A web form.
- Where you hit the ceiling
- Command blocks, the ones that make Carl run an actual command such as adding a role, are capped at one per server, or three on premium.
Source: Carl-bot docs: tags and blocks
Dyno
- How you write behaviour
- Behaviour comes from toggling and configuring modules in the dashboard, plus custom commands that reply with text or an embed. The modules are good and cover most common needs, and you work inside what they expose.
- Where you write it
- A web form.
- Where you hit the ceiling
- Whatever the module authors anticipated.
Source: Dyno
YAGPDB
- How you write behaviour
- Genuinely programmable, and the closest thing here to Mallard. Custom commands are written in a dialect of Go's text/template, so you get variables, conditionals, loops and a large function library, expressed as template pipelines rather than as ordinary code.
- Where you write it
- A textarea. YAGPDB's own documentation recommends writing custom commands in a local editor such as Vim, VS Code or Notepad++ and pasting them in, because the dashboard refuses to save anything with a syntax error.
- Where you hit the ceiling
- Real limits on how many custom commands can be enabled and how often they run, tightened further on the free tier.
Source: YAGPDB docs: custom commands
Checked in July 2026 against each vendor's own documentation. These products change often. If something here has gone stale, tell us in the support server and it will be corrected.
Where Mallard sits
Scripts are plain JavaScript, written in a Monaco editor with syntax highlighting and autocomplete against the same API the docs list. They run on 84 triggers, covering Discord gateway events, slash and right-click commands, modal submissions, timers, Twitch events, and YouTube video/stream notifications. They can make outbound HTTP calls, read and write a per-guild key-value store, and call OpenRouter AI via dedicated server integrations.
External feeds aren't rigid canned pings either. YouTube triggers deliver ctx.youtube
with channel info, video URLs, and a boolean isShort flag—so your script can route
Shorts to a dedicated channel, ping subscriber roles only when streams go live, or skip short-form
uploads entirely.
Every no-code path listed above stops where its authors stopped. Mallard hands you the file: a Monaco editor with autocomplete against the full API, and 32 worked examples to read and rewrite.
There is no per-command cap. The limits are hourly budgets on runtime and HTTP calls, plus persistent storage for data and media, which scale with tier and which your scripts can read at runtime so a loop can size itself. Every run is logged with its status, duration and any error.
When not to pick Mallard
- You prefer toggles over writing or editing code.
- Every script in Mallard is JavaScript; there's no visual builder. If you never intend to write or adjust scripts, bots like Dyno or Carl-bot offer wider out-of-the-box feature suites with no code involved.
- You need levelling, music, or economy out of the box.
- MEE6 and Dyno provide those built in. Mallard focuses on moderation, automation, and custom integrations; building a leveling system in scripts requires significant setup.
- You are running a 200,000-member server today.
- Mallard is in early adoption. While the Ultra tier provides substantial capacity, larger servers should evaluate early-stage readiness.
- You already have YAGPDB doing what you need.
- If your setup already works, stay with it. The primary reason to switch is preferring standard JavaScript and autocomplete over Go template pipelines.
Mallard's free tier is enough to decide with.