This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Embed Builder — Build Embeds Without Hand-Written JSON
GrumpyEmbed starts an interactive session with buttons and forms (modals) to assemble a classic Discord embed — title, text, author, footer, images, fields. No YAML config needed — just an ephemeral preview (visible only to you) that updates live after every change.
Example Scenario (Step by Step)
Sven wants to post a nice announcement with an image in the #news channel, but doesn't know embed JSON.
- Run this in the
#newschannel:
→ The bot replies (visible only to Sven) with an empty preview and the buttons./embed build - Click 📝 Title & Text → a form opens → fill in:
- Title:
🎉 New Update is Live! - Description:
The new leveling system is now live on the server. - Color:
#5865F2→ Submit → the preview immediately shows the embed with title + text.
- Title:
- Click 🖼️ Images → enter an image URL (e.g. a Discord-uploaded image link) → Submit → the preview now also shows the image.
- Click ➕ Field + → field name
What's new?, field valueXP boosts, weekly leaderboard, new role rewards→ Submit → appears as an extra field in the embed. - Preview looks good? Click ✅ Send → the finished embed is posted immediately to
#news(publicly visible to everyone). - Want to post the same or a slightly modified embed again later? Click 📋 Export JSON first, copy the text, and save it as a reusable custom command via
/cc add type:embed.
Activation
In configs/config.yml:
addons:
embed: true
There's no dedicated embed.yml — the builder has no settings, just the on/off toggle.
Commands
/embed build
Starts a fresh, empty builder session (visible only to you — ephemeral).
/embed build
Shows a live preview + three rows of buttons:
| Row | Buttons |
|---|---|
| 1 | 📝 Title & Text · 👤 Author · 🦶 Footer · 🖼️ Images |
| 2 | ➕ Field + · ➖ Field - · 📥 Import JSON |
| 3 | ✅ Send · 📋 Export JSON · ❌ Cancel |
Each button opens a form (modal) pre-filled with the currently set values — changes show up in the preview immediately.
Permission: Manage Guild
/embed from-json <json>
Loads existing embed JSON (e.g. from /embed build → "Export JSON", or from an existing /cc add type:embed custom command) into a builder session — to keep editing or send directly.
/embed from-json json:{"title": "Announcement", "description": "Text here", "color": "#5865F2"}
Permission: Manage Guild
What Each Form Sets
| Button | Fields |
|---|---|
| 📝 Title & Text | Title, description, color (hex, e.g. #5865F2), link (URL) |
| 👤 Author | Name, icon URL, link |
| 🦶 Footer | Text, icon URL |
| 🖼️ Images | Thumbnail URL (small, top right), image URL (large, bottom) |
| ➕ Field + | Field name, field value, "show inline?" (yes/no) — up to 25 fields |
Clearing a field's value removes that value again (e.g. clearing the title field makes the title disappear from the preview).
Author/Footer rule: An icon or link in the author section requires a name too (otherwise an error) — same for a footer icon requiring footer text. Discord doesn't allow an icon without its associated text.
Send, Export, Cancel
- ✅ Send — posts the finished embed into the channel where
/embed buildwas run (not selectable). The builder session ends afterward. - 📋 Export JSON — shows the current embed as a JSON code block (ephemeral, in addition to the still-open builder session). This format is identical to what
/cc add type:embedexpects as its value — an embed built here can be reused directly as a custom command. - ❌ Cancel — discards the session without sending.
The "Send" button is disabled while the preview is empty or the total length exceeds Discord's 6000-character limit (title + text + all field names/values + footer + author combined).
Interplay With Other Modules
The builder internally uses the same EmbedConfigSchema/buildEmbed() code as:
- Custom Commands (
/cc add type:embed) - Welcome embeds
- Ticket panels
- Help hub
That means an embed built here can be pasted 1:1 as JSON into /cc add type:embed to save it as a reusable custom command — the builder itself doesn't persist anything.
Deliberate Limits
- No save/templates — every session is single-use. For reusable embeds, save the exported JSON via
/cc add type:embed. - No Components V2 (Discord's newer container/section/media-gallery system) — deliberately classic embed JSON only. The full drag-and-drop Components V2 UI would only make sense with a web dashboard.
- Session auto-expires after 30 minutes of inactivity (purely internal, no notice needed) — just run
/embed buildagain. - Only one active session per person — running
/embed buildagain discards an unfinished prior session.
Permissions
| Command | Permission |
|---|---|
/embed build |
Manage Guild |
/embed from-json |
Manage Guild |
Discord-side default via setDefaultMemberPermissions — server admins can override this per role/channel in the server's Integrations settings. All commands are guild-only (no DM context).
GrumpyCore Wiki
⚙️ Setup
🔧 Core-Module
🆕 Neue Module
🔔 Benachrichtigungen & Utility
💬 Commands
👥 Staff
GrumpyCore Wiki (English)
⚙️ Setup
🔧 Core Modules
🆕 New Modules
🔔 Notifications & Utility
💬 Commands
👥 Staff