2 GrumpyEmbed
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 — Embeds bauen ohne JSON von Hand zu schreiben

GrumpyEmbed startet eine interaktive Session mit Buttons und Formularen (Modals), um klassische Discord-Embeds zusammenzuklicken — Titel, Text, Autor, Footer, Bilder, Felder. Keine YAML-Konfiguration nötig — nur eine ephemere Vorschau (nur für dich sichtbar), die sich nach jeder Änderung live aktualisiert.


Beispiel-Szenario (Schritt für Schritt)

Sven will eine hübsche Ankündigung mit Bild für den #news-Channel posten, kennt sich aber mit Embed-JSON nicht aus.

  1. Im #news-Channel ausführen:
    /embed build
    
    → Der Bot antwortet (nur für Sven sichtbar) mit einer leeren Vorschau und den Buttons.
  2. 📝 Titel & Text klicken → Formular öffnet sich → eintragen:
    • Titel: 🎉 Neues Update ist da!
    • Beschreibung: Ab sofort gibt's das neue Leveling-System auf dem Server.
    • Farbe: #5865F2 → Absenden → die Vorschau zeigt sofort das Embed mit Titel + Text.
  3. 🖼️ Bilder klicken → Bild-URL eintragen (z.B. ein hochgeladenes Bild-Link aus Discord) → Absenden → Vorschau zeigt jetzt das Bild mit an.
  4. Feld + klicken → Feldname Was ist neu?, Feldwert XP-Boosts, Wochen-Rangliste, neue Rollen-Belohnungen → Absenden → erscheint als zusätzliches Feld im Embed.
  5. Vorschau sieht gut aus? Senden klicken → das fertige Embed wird sofort im #news-Channel gepostet (öffentlich sichtbar für alle).
  6. Embed soll später nochmal genauso oder leicht abgewandelt gepostet werden? Vorher 📋 JSON exportieren klicken, den Text kopieren und mit /cc add type:embed als wiederverwendbaren Custom-Command speichern.

Aktivierung

In configs/config.yml:

addons:
  embed: true

Es gibt keine eigene embed.yml — der Builder hat keine Einstellungen, nur den An/Aus-Schalter.


Commands

/embed build

Startet eine neue, leere Builder-Session (nur für dich sichtbar — ephemer).

/embed build

Zeigt eine Live-Vorschau + drei Button-Reihen:

Reihe Buttons
1 📝 Titel & Text · 👤 Autor · 🦶 Footer · 🖼️ Bilder
2 Feld + · Feld - · 📥 JSON importieren
3 Senden · 📋 JSON exportieren · Abbrechen

Jeder Button öffnet ein Formular (Modal) mit den aktuell gesetzten Werten vorausgefüllt — Änderungen erscheinen sofort in der Vorschau.

Berechtigung: Server verwalten (Manage Guild)


/embed from-json <json>

Lädt ein bestehendes Embed-JSON (z.B. aus /embed build → "JSON exportieren", oder aus einer bestehenden /cc add type:embed-Custom-Command) in eine Builder-Session — zum Weiterbearbeiten oder direkt Senden.

/embed from-json json:{"title": "Ankündigung", "description": "Text hier", "color": "#5865F2"}

Berechtigung: Server verwalten (Manage Guild)


Was pro Formular gesetzt wird

Button Felder
📝 Titel & Text Titel, Beschreibung, Farbe (Hex, z.B. #5865F2), Link (URL)
👤 Autor Name, Icon-URL, Link
🦶 Footer Text, Icon-URL
🖼️ Bilder Thumbnail-URL (klein, oben rechts), Bild-URL (groß, unten)
Feld + Feldname, Feldwert, "Nebeneinander anzeigen?" (ja/nein) — bis zu 25 Felder

Ein Feld leer lassen entfernt den entsprechenden Wert wieder (z.B. Titel-Feld leeren → Titel verschwindet aus der Vorschau).

Autor/Footer-Regel: Ein Icon oder Link im Autor-Bereich braucht zwingend auch einen Namen (sonst Fehlermeldung) — genauso ein Footer-Icon einen Footer-Text. Discord erlaubt kein Icon ohne zugehörigen Text.


Senden, Exportieren, Abbrechen

  • Senden — postet das fertige Embed in den Kanal, in dem /embed build ausgeführt wurde (nicht wählbar). Danach wird die Builder-Session beendet.
  • 📋 JSON exportieren — zeigt das aktuelle Embed als JSON-Codeblock (ephemer, zusätzlich zur offenen Builder-Session). Dieses Format ist identisch mit dem, was /cc add type:embed als Wert erwartet — so gebautes Embed lässt sich direkt als Custom-Command wiederverwenden.
  • Abbrechen — verwirft die Session ohne zu senden.

Der "Senden"-Button ist deaktiviert, solange die Vorschau leer ist oder die Gesamtlänge über Discords 6000-Zeichen-Limit (Titel+Text+alle Feldnamen/-werte+Footer+Autor zusammengerechnet) liegt.


Zusammenspiel mit anderen Modulen

Der Builder nutzt intern denselben EmbedConfigSchema/buildEmbed()-Code wie:

  • Custom Commands (/cc add type:embed)
  • Welcome-Embeds
  • Tickets-Panels
  • Help-Hub

Das heißt: ein im Builder gebautes Embed lässt sich 1:1 als JSON in /cc add type:embed einfügen, um es als wiederverwendbaren Custom-Command zu speichern — der Builder selbst speichert nichts dauerhaft.


Grenzen (bewusst)

  • Kein Speichern/Templates — jede Session ist Wegwerf-Nutzung. Für wiederverwendbare Embeds das exportierte JSON in /cc add type:embed speichern.
  • Kein Components-V2 (Discords neueres Container/Section/Media-Gallery-System) — bewusst nur klassisches Embed-JSON. Die volle Drag&Drop-Components-V2-UI würde erst mit einem Web-Dashboard Sinn ergeben.
  • Sitzung läuft nach 30 Minuten Inaktivität automatisch ab (rein intern, kein Hinweis nötig) — einfach /embed build erneut ausführen.
  • Nur eine aktive Session pro Person — ein erneutes /embed build verwirft eine vorherige, unvollendete Session.

Berechtigungen

Command Berechtigung
/embed build Manage Guild
/embed from-json Manage Guild

Discord-seitiger Default via setDefaultMemberPermissions — Server-Admins können das pro Rolle/Kanal in den Server-Integrationseinstellungen übersteuern. Alle Commands sind nur auf Servern nutzbar (kein DM-Kontext).