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
- Open Custom Commands and confirm the page reports the
CUSTOM_COMMANDSfeature as granted. You can edit scripts without it, but they will not execute. - Ensure
plugins.custcommandsexists and is not set toenabled: false. - Create a disposable CMD script with a unique name and one plain reply. The builder is the safest starting point.
- Save only after the validator reports no parser errors.
- Invoke it with your server prefix in a test channel as a regular member.
- Check the usage count, then add reactions, arguments, or LISTEN triggers one behavior at a time.
- 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
enabledvalue 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. |