Message Builder
The Message Builder module enables creating, managing, and sending custom Discord embeds from saved templates. Templates are configured through the dashboard using a visual inline editor.
Enabling the Module
- Dashboard → Your server → toggle Message Builder
- Click Edit to create and manage templates
- Configure sending permissions
- Save changes
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
send_permission | string | "moderation_roles" | Who can send embeds |
send_roles | list | [] | Sending roles (when permission = "custom") |
allowed_channels | list | [] | Channels where embeds can be sent (empty = all) |
templates | array | [] | List of saved templates |
send_permission values
"moderation_roles"— roles from the moderation configuration"custom"— roles fromsend_roles
Discord administrators always have permission to send.
Dashboard — Configuration
The Message Builder panel has a two-column layout:
- Left column (1/4): Sidebar with template list (CRUD: create, edit, delete)
- Right column (3/4): Visual embed editor (inline — the editor IS the preview)
Embed Editor
The editor is simultaneously the preview — what you see is exactly what will be sent:
- Content — text field above the embed (plain text message)
- Title — clickable to edit
- Description — clickable to edit
- Color — presets (circles) + custom rainbow picker
- Thumbnail — clickable placeholder (dashed border) → URL input
- Image — clickable placeholder → URL input
- Author — name + icon
- Footer — footer text
- Fields — list of fields (name + value + inline toggle) + "Add Field" button
Template Management
- Create — "New Template" button, provide a name
- Edit — click a template in the sidebar, it loads into the editor
- Delete — delete button on the template card
- Send — "Send to Channel" button with channel selection
Commands
/embed send
Sends a saved template to a channel.
| Parameter | Required | Description |
|---|---|---|
template_name | ✅ | Template name (with autocomplete) |
channel | ❌ | Target channel (default: current) |
Flow:
- Checks permission (
send_permission) - Searches for template by name (case-insensitive)
- Checks if the channel is allowed (
allowed_channels) - Builds embed from template configuration
- Sends embed (+ optional content text)
- Updates
last_sent_channel_idandlast_sent_message_idin the template - Logs the action
The template_name parameter supports autocomplete — after typing part of the name, Discord will suggest matching templates.
/embed list
Displays a list of all saved templates (ephemeral).
Shows:
- Template name
- Title preview (truncated to 50 characters)
- Total template count
Channel Restrictions
If allowed_channels is not empty, embeds can only be sent to channels on this list. Attempting to send to another channel will return an error.
When the list is empty — sending is allowed to any channel.
Sent Message Tracking
Each template stores:
last_sent_channel_id— channel ID of the last sendlast_sent_message_id— message ID
This enables future features (editing sent embeds, dashboard preview).
Listened Events
The Message Builder module does not listen to any events — it works exclusively on slash commands and dashboard API.
Logging
Actions logged by Logs under the message_builder category:
- 📨 Embed Sent — template name, who sent it, to which channel
Tips
- Create templates for recurring announcements (e.g., weekly news, events)
- Use
allowed_channelsto restrict where embeds can be sent - The Content field (above the embed) is useful for pinging roles/everyone
- Test embeds using
/embed sendon a test channel before the actual one
Organize templates with clear names:
weekly-update— weekly updateevent-announcement— event announcement templaterules— server rules
Deleting a template is irreversible. Make sure it's no longer needed.