Build

Custom commands

Your first command in 60 seconds, then embeds, buttons, random replies and 10+ examples.

A custom command is a message trigger that makes the bot reply. You can set its text, embed, buttons, roles, channels and cooldown in the dashboard.

Current support

Keyword and Prefix triggers work. Buttons can send a private reply or open an HTTPS link. Custom slash commands are not offered. Advanced conditions and role actions remain planned.

Your first custom command in 60 seconds Works today

  1. Open dashboard → your server → Custom Commands.
  2. Press New command.
  3. In When someone types… enter !rules.
  4. In The bot replies… enter your rules. Watch the preview build.
  5. Press Save changes. Type !rules in your server and the bot answers.
Pick a memorable trigger

Start it with a symbol such as ! so normal chat never matches by accident. Matching is exact, and capital letters do not matter.

Text replies Works today

The reply is up to 2,000 characters. Discord formatting works: **bold**, *italic*, __underline__, ~~strike~~, and `code`.

Trigger types Works today

  • Keyword: the message must equal your trigger exactly.
  • Prefix: enter the command name without the server prefix. Members can add words after it for {args} and {args.1}.

Embeds Works today

Embeds support a title, description, colour, HTTPS images, fields, footer and timestamp. You can send text with the embed too.

Buttons Works today

Each button can show a private reply or open an HTTPS link. For ticket creation and roles, use the dedicated tickets and reaction-role features.

Random responses Works today

Use {random.choice:Yes|No|Maybe} or {random.number:1-100}. Dice and coinflip variables remain planned.

Copy-and-paste examples

These examples use supported text templates. Check the variables reference for the contexts where each variable works.

Welcome message

Greet newcomers and point them to the right places.

Works today

For automatic greetings when someone joins, use Welcome & Goodbye instead. This command is for people who ask for the welcome again.

Trigger

Trigger
!welcome

Reply

Reply
Welcome! 👋 Say hi in #general, read the rules in #rules, and pick your roles in #roles. Glad you’re here!
RileyToday at 3:42 PM
!welcome
ScrambledBOTToday at 3:42 PM
Welcome! 👋 Say hi in #general, read the rules in #rules, and pick your roles in #roles. Glad you’re here!
DraftFull versionEdit unsupported variables or add button actions before saving.
Builder JSON
{
  "type": "embed",
  "trigger": "!welcome",
  "embed": {
    "color": "#feb529",
    "title": "Welcome to {server}!",
    "description": "Hey {user.mention}, you’re member #{server.members}. Please read {server.rules_channel}, then say hi in #general!",
    "thumbnail": "{user.avatar}",
    "footer": "Joined {user.joined}",
    "timestamp": true
  }
}
RileyToday at 3:42 PM
!welcome
ScrambledBOTToday at 3:42 PM
Welcome to Pixel Pals!
Hey @Riley, you’re member #1,204. Please read {server.rules_channel}, then say hi in #general!
Joined {user.joined} • Today at 3:42 PM

Server rules

One command that always shows the current rules.

Works today

Trigger

Trigger
!rules

Reply

Reply
**Server rules**
1. Be kind and respectful.
2. No spam or self-promotion.
3. Keep chats on topic.
4. No NSFW or hateful content.
5. Listen to the moderators.
RileyToday at 3:42 PM
!rules
ScrambledBOTToday at 3:42 PM
Server rules 1. Be kind and respectful. 2. No spam or self-promotion. 3. Keep chats on topic. 4. No NSFW or hateful content. 5. Listen to the moderators.
LiveFull versionYou can save this template in the builder.
Builder JSON
{
  "type": "embed",
  "trigger": "!rules",
  "embed": {
    "color": "#feb529",
    "title": "Rules of {server}",
    "description": "1. Be kind and respectful.\n2. No spam or self-promotion.\n3. Keep chats on topic.\n4. No NSFW or hateful content.\n5. Listen to the moderators.",
    "footer": "Asked by {user.name}"
  }
}
RileyToday at 3:42 PM
!rules
ScrambledBOTToday at 3:42 PM
Rules of Pixel Pals
1. Be kind and respectful. 2. No spam or self-promotion. 3. Keep chats on topic. 4. No NSFW or hateful content. 5. Listen to the moderators.
Asked by riley

Giveaway entry

Explain how to join, without staff repeating themselves.

Works today

Trigger

Trigger
!giveaway

Reply

Reply
🎉 Giveaways happen in #giveaways. Press the **🎉 Enter** button under the giveaway message to join. Press it again to leave. Good luck!
RileyToday at 3:42 PM
!giveaway
ScrambledBOTToday at 3:42 PM
🎉 Giveaways happen in #giveaways. Press the 🎉 Enter button under the giveaway message to join. Press it again to leave. Good luck!
DraftFull versionEdit unsupported variables or add button actions before saving.
Builder JSON
{
  "type": "buttons",
  "trigger": "!giveaway",
  "embed": {
    "color": "#feb529",
    "title": "🎉 Giveaways",
    "description": "Head to {server.rules_channel} to check the rules, then press Enter on the giveaway post."
  },
  "buttons": [
    {
      "label": "Go to #giveaways",
      "style": "primary"
    }
  ]
}
RileyToday at 3:42 PM
!giveaway
ScrambledBOTToday at 3:42 PM
🎉 Giveaways
Head to {server.rules_channel} to check the rules, then press Enter on the giveaway post.

Ticket opener

Send people to the right place when they need help.

Works today

Trigger

Trigger
!help

Reply

Reply
Need help from the team? Go to #open-a-ticket, pick a category from the menu, and a private channel will be created for you and our staff.
RileyToday at 3:42 PM
!help
ScrambledBOTToday at 3:42 PM
Need help from the team? Go to #open-a-ticket, pick a category from the menu, and a private channel will be created for you and our staff.
DraftFull versionEdit unsupported variables or add button actions before saving.
Builder JSON
{
  "type": "buttons",
  "trigger": "!help",
  "embed": {
    "color": "#feb529",
    "title": "Need a hand?",
    "description": "{user.mention}, open a private ticket and a moderator will be with you shortly."
  },
  "buttons": [
    {
      "label": "Open a ticket",
      "style": "success"
    }
  ]
}
RileyToday at 3:42 PM
!help
ScrambledBOTToday at 3:42 PM
Need a hand?
@Riley, open a private ticket and a moderator will be with you shortly.

Hug / pat

A wholesome reaction aimed at another member.

Works today

Trigger

Trigger
!hug

Reply

Reply
*hugs everyone in the chat* 🤗
RileyToday at 3:42 PM
!hug
ScrambledBOTToday at 3:42 PM
hugs everyone in the chat 🤗
DraftFull versionEdit unsupported variables or add button actions before saving.
Builder JSON
{
  "type": "text",
  "trigger": "!hug",
  "response": "{user.mention} gives {mention.1} a warm hug 🤗 {random.choice:Aww!|So sweet!|Wholesome.}"
}
RileyToday at 3:42 PM
!hug
ScrambledBOTToday at 3:42 PM
@Riley gives {mention.1} a warm hug 🤗 Aww!

Birthday

Tell members how to get a birthday shout-out.

Works today

Trigger

Trigger
!birthday

Reply

Reply
🎂 Want a birthday shout-out? Use `/birthday set` with your month and day (no year needed) and we’ll celebrate with you!
RileyToday at 3:42 PM
!birthday
ScrambledBOTToday at 3:42 PM
🎂 Want a birthday shout-out? Use /birthday set with your month and day (no year needed) and we’ll celebrate with you!
DraftFull versionEdit unsupported variables or add button actions before saving.
Builder JSON
{
  "type": "text",
  "trigger": "!birthday",
  "response": "🎂 {user.mention}, your saved birthday is {user.birthday}. Use `/birthday set` to change it."
}
RileyToday at 3:42 PM
!birthday
ScrambledBOTToday at 3:42 PM
🎂 @Riley, your saved birthday is {user.birthday}. Use /birthday set to change it.

Role menu

Let members choose their own roles.

Works today

Trigger

Trigger
!roles

Reply

Reply
Want a role? Head to #roles and react to the menu message: each emoji gives you a role. React again to remove it.
RileyToday at 3:42 PM
!roles
ScrambledBOTToday at 3:42 PM
Want a role? Head to #roles and react to the menu message: each emoji gives you a role. React again to remove it.
DraftFull versionEdit unsupported variables or add button actions before saving.
Builder JSON
{
  "type": "buttons",
  "trigger": "!roles",
  "embed": {
    "color": "#feb529",
    "title": "Pick your roles",
    "description": "Choose what you want to be pinged for."
  },
  "buttons": [
    {
      "label": "🎮 Gamer",
      "style": "primary"
    },
    {
      "label": "🎨 Artist",
      "style": "primary"
    },
    {
      "label": "📣 Announcements",
      "style": "success"
    }
  ]
}
RileyToday at 3:42 PM
!roles
ScrambledBOTToday at 3:42 PM
Pick your roles
Choose what you want to be pinged for.

Troubleshooting

The command does nothing
For Keyword, the whole message must equal the trigger. For Prefix, include the server prefix. Check role, channel and cooldown settings, and make sure the bot can read and send messages.
A variable appears literally
That variable is not supported in custom commands. The variables reference marks supported variables Live.
I saved but nothing changed
Look for the green “Settings saved” message. If you saw an error, read it: it says what to fix. A conflict message means someone else saved first; reload and try again.
It fires by accident
Your trigger is too common. Start it with a symbol (! or ?) and make it more specific.
I hit the limit
A server can have up to 200 custom commands and each reply can be up to 2,000 characters.

Variables

Every variable, with an example and where it works, lives in the variables reference.