Documentation menu

Docs/Plugins/Custom Commands

Custom Commands

Your own commands and auto-responders, written in a small scripting DSL.

Execution requires the CUSTOM_COMMANDS feature. Managing scripts (creating, editing, deleting) always works, so you can clean up even after a revoke.

Custom commands let your server define its own commands and auto-responders. Build them in chat with the custcmd commands or - much more comfortably - in the dashboard's Custom Commands workbench. The plugin runs as soon as the feature is granted; no config block is needed. To switch execution off yourself, set:

plugins:
  custcommands:
    enabled: false

Setup checklist

  1. Open Custom Commands and confirm the page reports the CUSTOM_COMMANDS feature as granted. You can edit scripts without it, but they will not execute.
  2. Ensure plugins.custcommands exists and is not set to enabled: false.
  3. Create a disposable CMD script with a unique name and one plain reply. The builder is the safest starting point.
  4. Save only after the validator reports no parser errors.
  5. Invoke it with your server prefix in a test channel as a regular member.
  6. Check the usage count, then add reactions, arguments, or LISTEN triggers one behavior at a time.
  7. Delete the disposable script when the real one is ready.

Two kinds

  • CMD - a named command members invoke (!mytrigger).
  • LISTEN - an auto-responder bound to an event, most commonly MessageCreate: react to a keyword, reply to a phrase, greet on join, and so on.

The DSL

Scripts are written in a compact verb language. The two most common verbs:

reply 'good morning' Good morning! ☀️
react hiekki a:687166915805970434
  • reply when a message contains a phrase, or add a reaction (unicode or custom emoji) when a keyword appears. The dashboard workbench validates scripts as you type with the exact same parser the bot runs, and the visual builder composes the common patterns without writing DSL at all.

Keep the first version small. One malformed verb can stop that script from loading, while a broad LISTEN condition can reply far more often than intended. Test LISTEN scripts in one private channel before using phrases that may occur throughout the server.

Where to manage them

The Custom Commands dashboard page lists every script with usage counts, offers the workbench (raw DSL with validation) and the builder (guided), and shows exactly why a script is not running - execution switched off or the execution feature not granted - rather than leaving you guessing.

Troubleshooting

  • The script saves but never runs: check the feature grant and the plugin's enabled value shown on the workbench.
  • A CMD name never fires: make sure another built-in command or tag does not own the same trigger, and use the configured server prefix.
  • A LISTEN script fires too broadly: tighten its event or phrase condition in the builder before adding more actions.
  • A reaction fails: use a unicode emoji or the exact custom emoji reference available to the bot.
  • The parser points at one line: fix that line first. Later messages may be a consequence of the same malformed verb.

Commands

Arguments in {curly braces} are required. Arguments in [square brackets] are optional.

Command What it does
/custcmd create {name} {content} Create a custom command (text reply, or an action script like allowargs | warn | tempmute 1d). Admin.
/custcmd create-listen {name} {event} {content} Create a LISTEN custom command (e.g. MessageCreate react/reply). Admin.
/custcmd edit {name} {content} Edit a custom command's content. Admin.
/custcmd remove {name} Delete a custom command. Admin.
/custcmd list List this guild's custom commands.