Custom commands
Static slash responses for rules, FAQ, links, and embeds. Members run /custom run.
Same general idea as YAGPDB custom commands or Tux snippets: fixed text the bot posts on demand. Caelum does not support regex triggers, aliases, or user scripting.
Enable the module with Module active on the dashboard or /custom toggle on.
How members run commands
/custom run name:<name> posts the response in the current channel. The name option autocompletes from commands in this server.
Staff commands
/custom toggle
Turns custom commands on or off for the server.
/custom create
Creates a command with plain text and/or an embed. Optional cooldown, allowed roles, and allowed channels.
/custom edit
Updates an existing command. Pass only the fields you want to change.
/custom delete
Removes a command by name.
/custom list
Lists all custom commands and whether each is enabled.
/custom preview
Shows the response ephemerally (only you see it). Template variables use your user as context.
/custom status
Shows whether the module is on and how many commands exist.
Template variables
Use {token} or {{token}} in message text or embed title/description. Values come from the member who triggered the command, the server, the channel, or the current time.
User
| Token | Output |
|---|---|
{user} / {user.mention} | Mention (<@id>) |
{user.id} | Discord user ID |
{user.name} | Nick, global name, or username |
{user.username} | Login name |
{user.display_name} | Global display name |
{user.nick} | Server nickname (when set) |
{user.tag} | @username |
{user.avatar} / {user.avatar_url} | Avatar CDN URL |
{user.banner} / {user.banner_url} | Banner CDN URL (when set) |
{user.bot} | yes or no |
{user.created_at} | Account created (long Discord timestamp) |
{user.created_at.relative} | Account age (relative) |
{user.created_at.short} | Account created (short date) |
{user.account_age} | Human-readable account age |
{user.account_age.days} | Whole days since account creation |
{user.joined_at} | Server join date (when known) |
{user.joined_at.relative} | Join time relative (when known) |
{user.role_count} | Number of roles |
{user.roles} | Role mentions (<@&id>) |
{user.boosting} | yes or no |
{user.boost_since} | Boost start date (when known) |
Server and channel
| Token | Output |
|---|---|
{server.name} / {guild.name} | Server name |
{server.id} / {guild.id} | Server ID |
{member.count} | Approximate member count |
{channel.id} | Channel ID (slash commands) |
{channel.mention} | Channel mention |
{channel.name} | Channel name (when known) |
Time (UTC)
| Token | Output |
|---|---|
{date} | Current date (YYYY-MM-DD) |
{time} | Current time |
{datetime} / {now} | Current Discord timestamp (long) |
{now.relative} | Current time (relative) |
If a token has no data in context (for example {member.count} before the bot cached it), the placeholder stays in the message unchanged.
The same variables work in welcome, leave, custom commands, and the embed composer. Leveling uses additional tokens ({level}, {xp}, {rank}) on the leveling settings page.
Limits
- Command names: 1–32 characters, lowercase letters, digits,
_,- - Message text up to 2000 characters
- Embed title up to 256 characters, description up to 4096
- Cooldown per user: 0–86400 seconds
- At least one of message text or embed title/description is required
Dashboard presets
The custom commands page includes Quick presets you can click to fill the create form:
Server defaults: rules (typical Discord community rules), welcome pointer, self-assign roles, boost perks.
Caelum defaults: caelum-faq (bot modules, setup, dashboard) and caelum-setup (staff checklist).
Click Use preset, edit channel names and copy for your server, then create.
Event triggers (staff)
In the dashboard, edit a command and set Event trigger to run automatically:
- Member join — after welcome/leave module messages (if configured)
- Member leave — includes kicks (
GUILD_MEMBER_REMOVE) - Server boost — first boost only (
premium_sincenewly set)
One enabled command per trigger per server. Set an event channel, DM delivery, or both. Event commands do not replace the Welcome module for join messages.