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.
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
- Open dashboard → your server → Custom Commands.
- Press New command.
- In When someone types… enter
!rules. - In The bot replies… enter your rules. Watch the preview build.
- Press Save changes. Type
!rulesin your server and the bot answers.
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.
For automatic greetings when someone joins, use Welcome & Goodbye instead. This command is for people who ask for the welcome again.
Trigger
!welcome
Reply
Welcome! 👋 Say hi in #general, read the rules in #rules, and pick your roles in #roles. Glad you’re here!
{
"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
}
}Server rules
One command that always shows the current rules.
Trigger
!rules
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.
{
"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}"
}
}Giveaway entry
Explain how to join, without staff repeating themselves.
Trigger
!giveaway
Reply
🎉 Giveaways happen in #giveaways. Press the **🎉 Enter** button under the giveaway message to join. Press it again to leave. Good luck!
{
"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"
}
]
}Ticket opener
Send people to the right place when they need help.
Trigger
!help
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.
{
"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"
}
]
}Hug / pat
A wholesome reaction aimed at another member.
Trigger
!hug
Reply
*hugs everyone in the chat* 🤗
{
"type": "text",
"trigger": "!hug",
"response": "{user.mention} gives {mention.1} a warm hug 🤗 {random.choice:Aww!|So sweet!|Wholesome.}"
}Birthday
Tell members how to get a birthday shout-out.
Trigger
!birthday
Reply
🎂 Want a birthday shout-out? Use `/birthday set` with your month and day (no year needed) and we’ll celebrate with you!
/birthday set with your month and day (no year needed) and we’ll celebrate with you!{
"type": "text",
"trigger": "!birthday",
"response": "🎂 {user.mention}, your saved birthday is {user.birthday}. Use `/birthday set` to change it."
}/birthday set to change it.Role menu
Let members choose their own roles.
Trigger
!roles
Reply
Want a role? Head to #roles and react to the menu message: each emoji gives you a role. React again to remove it.
{
"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"
}
]
}Social links
Share your links in one tidy reply.
Trigger
!links
Reply
**Find us elsewhere** • Website: https://example.com • YouTube: https://youtube.com/@example • Twitter/X: https://x.com/example
{
"type": "embed",
"trigger": "!links",
"embed": {
"color": "#feb529",
"title": "Find {server} elsewhere",
"description": "Website: https://example.com\nYouTube: https://youtube.com/@example",
"footer": "Requested by {user.name}"
}
}Troubleshooting
The command does nothing
A variable appears literally
I saved but nothing changed
It fires by accident
! or ?) and make it more specific.I hit the limit
Variables
Every variable, with an example and where it works, lives in the variables reference.