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 |
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.
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.
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.
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.
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 use API keys held as write-only secrets that the script sees only as an opaque token.
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.