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 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.

Mallard's free tier is enough to decide with.

Read the docs
An unhandled error has occurred. Reload 🗙