Custom Commands
Build your own commands without writing code. Pick a trigger, write a reply, and fill it with dynamic variables for the user, server and channel.
Overview
Custom commands are created and managed entirely from the dashboard: open your server, then Custom Commands in the sidebar. Every command has a trigger (what activates it) and a response: a message sent back when the command triggers. Responses support all template variables, which makes them perfect for FAQs, links, welcome messages and quick info commands.
- Six trigger types: command, exact match, contains, regex, member joins and member leaves
- Groups that share role and channel restrictions
- Cooldowns scoped per user, channel or server
- Enable / disable commands without deleting them
Creating a Command
- Open the Custom Commands page In your server dashboard, click Custom Commands, then New Command.
- Set the trigger Give the command a name/trigger and pick a trigger type. Optionally make it case-sensitive.
- Write the response Type the message Natsumi should send. Use template variables to fill in details when it runs.
- Save and test Save the command and trigger it in your server. Changes apply instantly, no restart needed.
Trigger Types
| Type | Fires When |
|---|---|
Command | The message starts with the bot prefix + trigger (e.g. !hello) |
Exact Match | The whole message equals the trigger text exactly |
Contains | The trigger text appears anywhere in the message |
Regex | The message matches your regular expression pattern |
Member Joins | Someone joins the server. There is no trigger text: you pick where its message goes instead |
Member Leaves | Someone leaves the server, same as above |
Join and leave commands
These can post in a channel, send the member a DM, or both. {{user}} is the member who joined or left. A DM to someone who has left only arrives while they still share another server with Natsumi.
Careful with "Contains" and "Regex"
These can fire on normal conversation. Combine them with a cooldown or a channel restriction to limit where they respond.
Template Variables
Variables use double curly braces and are replaced when the command runs.
User
| Variable | Output |
|---|---|
{{user}} | Mentions the user (@Username) |
{{user.id}} | The user's Discord ID |
{{user.username}} | Username as plain text |
{{user.displayname}} | Server display name (nickname if set) |
{{user.avatar}} | URL of the user's avatar image |
Server
| Variable | Output |
|---|---|
{{server}} | Server name |
{{server.id}} | Server ID |
{{server.membercount}} | Current member count |
{{server.icon}} | URL of the server icon |
Channel
| Variable | Output |
|---|---|
{{channel}} | Mentions the channel (#channel) |
{{channel.id}} | Channel ID |
{{channel.name}} | Channel name as plain text |
Arguments
Arguments are the words a user types after the trigger. For example, in !say hello world, the arguments are "hello world". Join and leave commands have no message, so their arguments are always empty.
| Variable | Output |
|---|---|
{{args}} | Everything after the trigger |
{{args.0}} | The first argument (then {{args.1}}, {{args.2}}…) |
Example
<code v-pre>Hey {{user}}, welcome to {{server}}! We're now {{server.membercount}} members strong.</code>Cooldowns
Prevent spam by setting a cooldown in seconds (0 = none). The scope decides who shares the timer:
| Scope | Behavior |
|---|---|
Per User | Each member has their own cooldown |
Per Channel | One timer per channel, shared by everyone in it |
Per Server | One global timer for the whole server |
Examples
1. Simple FAQ
Trigger type Command, trigger ip:
<code v-pre>Our Minecraft server IP is **play.example.com**. See you there, {{user.displayname}}!</code>2. Say Command
Trigger type Command, trigger say:
<code v-pre>{{user.displayname}} says: {{args}}</code>3. Welcome Message
Trigger type Member Joins, sent to your welcome channel:
<code v-pre>Welcome {{user}}! You are member number {{server.membercount}} of {{server}}.</code>Limits & Tips
| Limit | Value |
|---|---|
Triggers | Commands only fire for humans; bot messages are ignored |
Matches | One message fires at most three commands, even when more triggers match |
Contains / Exact / Regex | These always have at least a one second cooldown, because they fire on ordinary conversation |
