2 GrumpyEmbed EN
darksoon edited this page 2026-07-11 13:15:17 +02:00
This file contains ambiguous Unicode characters

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.

  1. Run this in the #news channel:
    /embed build
    
    → The bot replies (visible only to Sven) with an empty preview and the buttons.
  2. 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.
  3. Click 🖼️ Images → enter an image URL (e.g. a Discord-uploaded image link) → Submit → the preview now also shows the image.
  4. Click Field + → field name What's new?, field value XP boosts, weekly leaderboard, new role rewards → Submit → appears as an extra field in the embed.
  5. Preview looks good? Click Send → the finished embed is posted immediately to #news (publicly visible to everyone).
  6. 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 build was 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:embed expects 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 build again.
  • Only one active session per person — running /embed build again 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).