Enhance component message handling and introduce new features
- Added `ComponentMessageBinding` model to manage message components in the database. - Updated `WelcomeConfig`, `Tag`, and `ScheduledMessage` models to support new component fields. - Integrated component handling in various modules, including Scheduler and Tags, to improve message customization. - Enhanced user experience by implementing new commands for creating and managing component messages in the utility module. - Updated localization files to reflect new component-related features and improve user guidance.
This commit is contained in:
@@ -50,6 +50,78 @@
|
||||
"timestampPreview": "gerade eben",
|
||||
"mediaHint": "Bild-URLs müssen mit http(s) beginnen. Für Welcome kannst du {user.avatar} und {server.icon} nutzen."
|
||||
},
|
||||
"componentsV2Builder": {
|
||||
"blocks": "Layout-Blöcke",
|
||||
"addBlock": "Block hinzufügen…",
|
||||
"addNestedBlock": "Verschachtelten Block hinzufügen…",
|
||||
"empty": "Noch keine Blöcke — füge einen Container oder Textblock hinzu.",
|
||||
"preview": "Vorschau",
|
||||
"previewEmptyText": "Textinhalt…",
|
||||
"previewInvalidUrl": "Ungültige Bild-URL",
|
||||
"clear": "Layout leeren",
|
||||
"clearHint": "Ungültige Blöcke werden beim Speichern verworfen.",
|
||||
"actionsTitle": "Button- & Select-Aktionen",
|
||||
"textPlaceholder": "Text (Discord-Formatierung)",
|
||||
"divider": "Trennlinie anzeigen",
|
||||
"spacing": "Abstand",
|
||||
"spacingSmall": "Klein",
|
||||
"spacingLarge": "Groß",
|
||||
"accentColor": "Akzentfarbe (Dezimalwert)",
|
||||
"spoiler": "Spoiler-Container",
|
||||
"sectionText": "Abschnittstext",
|
||||
"accessoryType": "Zubehör",
|
||||
"accessoryThumbnail": "Thumbnail",
|
||||
"accessoryButton": "Button",
|
||||
"urlPlaceholder": "https://… oder {user.avatar}",
|
||||
"addMediaItem": "Bild hinzufügen",
|
||||
"addButton": "Button hinzufügen",
|
||||
"addSelect": "Select hinzufügen…",
|
||||
"buttonLabel": "Button-Label",
|
||||
"linkUrl": "Link-URL (https://…)",
|
||||
"actionId": "Action-ID",
|
||||
"centralActionId": "Zentrale Action-ID (optional)",
|
||||
"optionLabel": "Options-Label",
|
||||
"optionValue": "Options-Wert",
|
||||
"optionActionId": "Action-ID pro Option (optional)",
|
||||
"addOption": "Option hinzufügen",
|
||||
"removeOption": "Option entfernen",
|
||||
"selectPlaceholder": "Select-Platzhalter",
|
||||
"replyContent": "Antwortnachricht",
|
||||
"roleAction": "Zielrolle",
|
||||
"defaultButtonLabel": "Button",
|
||||
"blockTypes": {
|
||||
"container": "Container",
|
||||
"text_display": "Text",
|
||||
"separator": "Trenner",
|
||||
"section": "Abschnitt",
|
||||
"media_gallery": "Medien-Galerie",
|
||||
"action_row": "Action Row",
|
||||
"button": "Button"
|
||||
},
|
||||
"buttonStyles": {
|
||||
"Primary": "Primär",
|
||||
"Secondary": "Sekundär",
|
||||
"Success": "Erfolg",
|
||||
"Danger": "Gefahr",
|
||||
"Link": "Link"
|
||||
},
|
||||
"selectTypes": {
|
||||
"string_select": "String-Select",
|
||||
"user_select": "User-Select",
|
||||
"role_select": "Rollen-Select",
|
||||
"channel_select": "Kanal-Select",
|
||||
"mentionable_select": "Mentionable-Select"
|
||||
},
|
||||
"actionTypes": {
|
||||
"EPHEMERAL_REPLY": "Ephemere Antwort",
|
||||
"PUBLIC_REPLY": "Öffentliche Antwort",
|
||||
"ASSIGN_ROLE": "Rolle zuweisen",
|
||||
"REMOVE_ROLE": "Rolle entfernen",
|
||||
"TOGGLE_ROLE": "Rolle umschalten",
|
||||
"ASSIGN_SELECTED_ROLES": "Ausgewählte Rollen zuweisen",
|
||||
"NONE": "Keine Aktion"
|
||||
}
|
||||
},
|
||||
"placeholders": {
|
||||
"toggle": "Verfügbare Platzhalter anzeigen",
|
||||
"hint": "Zum Einfügen auf Kopieren tippen. Nur die hier gelisteten Platzhalter funktionieren in diesem Feld.",
|
||||
@@ -174,6 +246,10 @@
|
||||
"guildbackup": {
|
||||
"label": "Backups",
|
||||
"description": "Server-Backup und -Wiederherstellung"
|
||||
},
|
||||
"messages": {
|
||||
"label": "Nachrichten",
|
||||
"description": "Embeds oder Components-V2-Layouts in einen Kanal senden"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
@@ -361,12 +437,14 @@
|
||||
"type": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed",
|
||||
"IMAGE": "Bild-Karte"
|
||||
"IMAGE": "Bild-Karte",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"welcomeContent": "Nachrichtentext",
|
||||
"contentPlaceholder": "Willkommen {user} auf {server}!",
|
||||
"placeholdersHint": "Verfügbare Platzhalter: siehe Liste unten.",
|
||||
"welcomeEmbed": "Embed",
|
||||
"welcomeComponents": "Components-V2-Layout",
|
||||
"welcomeDmEnabled": "Willkommens-DM aktiviert",
|
||||
"dmContentPlaceholder": "Optionale private Nachricht an neue Mitglieder",
|
||||
"userAutoroles": "Autoroles für Nutzer",
|
||||
@@ -377,9 +455,16 @@
|
||||
"leaveDescription": "Nachricht und Kanal, wenn ein Mitglied den Server verlässt.",
|
||||
"leaveEnabledLabel": "Abschiedsnachricht aktiviert",
|
||||
"leaveChannelId": "Abschieds-Kanal-ID",
|
||||
"leaveType": "Nachrichtentyp",
|
||||
"leaveTypes": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"leaveContent": "Nachrichtentext",
|
||||
"leaveContentPlaceholder": "Tschüss {user.tag} — bis bald auf {server}!",
|
||||
"leaveEmbed": "Embed",
|
||||
"leaveComponents": "Components-V2-Layout",
|
||||
"leaveEmbedTitlePlaceholder": "Auf Wiedersehen",
|
||||
"leaveEmbedDescriptionPlaceholder": "{user.tag} hat {server} verlassen."
|
||||
},
|
||||
@@ -550,12 +635,15 @@
|
||||
"responseType": "Antworttyp",
|
||||
"responseTypes": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed"
|
||||
"EMBED": "Embed",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"triggerWord": "Auslöse-Wort (optional)",
|
||||
"content": "Inhalt",
|
||||
"embed": "Embed",
|
||||
"components": "Components-V2-Layout",
|
||||
"embedRequired": "Für Embed-Tags sind Titel oder Beschreibung erforderlich.",
|
||||
"componentsRequired": "Components-V2-Tags benötigen mindestens einen Block.",
|
||||
"allowedRoleIds": "Erlaubte Rollen",
|
||||
"allowedChannelIds": "Erlaubte Kanal-IDs",
|
||||
"idsPlaceholder": "Eine oder mehrere IDs, kommagetrennt",
|
||||
@@ -658,10 +746,18 @@
|
||||
"runAt": "Ausführen am",
|
||||
"content": "Nachrichtentext",
|
||||
"embed": "Embed (optional)",
|
||||
"cronHint": "Cron-Ausdruck für wiederkehrende Nachrichten ODER ein einmaliges Datum/Uhrzeit angeben - nicht beides. Text und/oder Embed sind erforderlich.",
|
||||
"components": "Components-V2-Layout",
|
||||
"contentMode": "Nachrichtenformat",
|
||||
"contentModes": {
|
||||
"text": "Text",
|
||||
"embed": "Embed",
|
||||
"components_v2": "Components V2"
|
||||
},
|
||||
"componentsPreview": "(Components V2)",
|
||||
"cronHint": "Cron-Ausdruck für wiederkehrende Nachrichten ODER ein einmaliges Datum/Uhrzeit — nicht beides. Wähle Text, Embed oder Components V2 (gegenseitig ausgeschlossen).",
|
||||
"create": "Nachricht planen",
|
||||
"created": "Nachricht geplant.",
|
||||
"formIncomplete": "Bitte Kanal, Inhalt oder Embed sowie Cron-Ausdruck oder Datum/Uhrzeit ausfüllen.",
|
||||
"formIncomplete": "Bitte Kanal, Nachrichtenformat mit Inhalt sowie Cron-Ausdruck oder Datum/Uhrzeit ausfüllen.",
|
||||
"confirmDelete": "Diesen Zeitplan wirklich löschen?",
|
||||
"listTitle": "Geplante Nachrichten",
|
||||
"listDescription": "Anstehende und wiederkehrende geplante Nachrichten.",
|
||||
@@ -692,6 +788,23 @@
|
||||
"confirmDelete": "Dieses Backup wirklich löschen?",
|
||||
"ownerOnlyBadge": "Wiederherstellung nur durch Owner"
|
||||
},
|
||||
"messages": {
|
||||
"sendTitle": "Nachricht senden",
|
||||
"sendDescription": "Embed oder Components-V2-Layout über den Bot in einen Kanal posten.",
|
||||
"channelId": "Zielkanal",
|
||||
"channelRequired": "Bitte zuerst einen Kanal wählen.",
|
||||
"mode": "Nachrichtentyp",
|
||||
"modes": {
|
||||
"EMBED": "Embed",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"embedRequired": "Embed-Modus benötigt Titel, Beschreibung oder eine Farbe.",
|
||||
"componentsRequired": "Füge mindestens einen gültigen Components-V2-Block hinzu.",
|
||||
"send": "Nachricht senden",
|
||||
"sending": "Sende…",
|
||||
"sent": "Nachricht gesendet.",
|
||||
"sentWithId": "Nachricht gesendet (ID: {id})."
|
||||
},
|
||||
"commands": {
|
||||
"title": "Commands",
|
||||
"description": "Einzelne Slash-Commands aktivieren/deaktivieren und per Rolle, Kanal oder Cooldown einschränken.",
|
||||
|
||||
@@ -50,6 +50,78 @@
|
||||
"timestampPreview": "just now",
|
||||
"mediaHint": "Image URLs must start with http(s). For Welcome you can use {user.avatar} and {server.icon}."
|
||||
},
|
||||
"componentsV2Builder": {
|
||||
"blocks": "Layout blocks",
|
||||
"addBlock": "Add block…",
|
||||
"addNestedBlock": "Add nested block…",
|
||||
"empty": "No blocks yet — add a container or text block to get started.",
|
||||
"preview": "Preview",
|
||||
"previewEmptyText": "Text content…",
|
||||
"previewInvalidUrl": "Invalid image URL",
|
||||
"clear": "Clear layout",
|
||||
"clearHint": "Invalid blocks are dropped when saving.",
|
||||
"actionsTitle": "Button & select actions",
|
||||
"textPlaceholder": "Markdown-style text (Discord formatting)",
|
||||
"divider": "Show divider line",
|
||||
"spacing": "Spacing",
|
||||
"spacingSmall": "Small",
|
||||
"spacingLarge": "Large",
|
||||
"accentColor": "Accent color (decimal)",
|
||||
"spoiler": "Spoiler container",
|
||||
"sectionText": "Section text",
|
||||
"accessoryType": "Accessory",
|
||||
"accessoryThumbnail": "Thumbnail",
|
||||
"accessoryButton": "Button",
|
||||
"urlPlaceholder": "https://… or {user.avatar}",
|
||||
"addMediaItem": "Add image",
|
||||
"addButton": "Add button",
|
||||
"addSelect": "Add select…",
|
||||
"buttonLabel": "Button label",
|
||||
"linkUrl": "Link URL (https://…)",
|
||||
"actionId": "Action ID",
|
||||
"centralActionId": "Central action ID (optional)",
|
||||
"optionLabel": "Option label",
|
||||
"optionValue": "Option value",
|
||||
"optionActionId": "Per-option action ID (optional)",
|
||||
"addOption": "Add option",
|
||||
"removeOption": "Remove option",
|
||||
"selectPlaceholder": "Select placeholder",
|
||||
"replyContent": "Reply message",
|
||||
"roleAction": "Target role",
|
||||
"defaultButtonLabel": "Button",
|
||||
"blockTypes": {
|
||||
"container": "Container",
|
||||
"text_display": "Text",
|
||||
"separator": "Separator",
|
||||
"section": "Section",
|
||||
"media_gallery": "Media gallery",
|
||||
"action_row": "Action row",
|
||||
"button": "Button"
|
||||
},
|
||||
"buttonStyles": {
|
||||
"Primary": "Primary",
|
||||
"Secondary": "Secondary",
|
||||
"Success": "Success",
|
||||
"Danger": "Danger",
|
||||
"Link": "Link"
|
||||
},
|
||||
"selectTypes": {
|
||||
"string_select": "String select",
|
||||
"user_select": "User select",
|
||||
"role_select": "Role select",
|
||||
"channel_select": "Channel select",
|
||||
"mentionable_select": "Mentionable select"
|
||||
},
|
||||
"actionTypes": {
|
||||
"EPHEMERAL_REPLY": "Ephemeral reply",
|
||||
"PUBLIC_REPLY": "Public reply",
|
||||
"ASSIGN_ROLE": "Assign role",
|
||||
"REMOVE_ROLE": "Remove role",
|
||||
"TOGGLE_ROLE": "Toggle role",
|
||||
"ASSIGN_SELECTED_ROLES": "Assign selected roles",
|
||||
"NONE": "No action"
|
||||
}
|
||||
},
|
||||
"placeholders": {
|
||||
"toggle": "Show available placeholders",
|
||||
"hint": "Tap copy to insert. Only the placeholders listed here work in this field.",
|
||||
@@ -174,6 +246,10 @@
|
||||
"guildbackup": {
|
||||
"label": "Backups",
|
||||
"description": "Server backup and restore"
|
||||
},
|
||||
"messages": {
|
||||
"label": "Messages",
|
||||
"description": "Send embeds or Components V2 layouts to a channel"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
@@ -361,12 +437,14 @@
|
||||
"type": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed",
|
||||
"IMAGE": "Image card"
|
||||
"IMAGE": "Image card",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"welcomeContent": "Message content",
|
||||
"contentPlaceholder": "Welcome {user} to {server}!",
|
||||
"placeholdersHint": "Available placeholders: see the list below.",
|
||||
"welcomeEmbed": "Embed",
|
||||
"welcomeComponents": "Components V2 layout",
|
||||
"welcomeDmEnabled": "Welcome DM enabled",
|
||||
"dmContentPlaceholder": "Optional private message to new members",
|
||||
"userAutoroles": "Autoroles for users",
|
||||
@@ -377,9 +455,16 @@
|
||||
"leaveDescription": "Message and channel when a member leaves the server.",
|
||||
"leaveEnabledLabel": "Leave message enabled",
|
||||
"leaveChannelId": "Leave channel ID",
|
||||
"leaveType": "Message type",
|
||||
"leaveTypes": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"leaveContent": "Message content",
|
||||
"leaveContentPlaceholder": "Goodbye {user.tag} — see you around on {server}!",
|
||||
"leaveEmbed": "Embed",
|
||||
"leaveComponents": "Components V2 layout",
|
||||
"leaveEmbedTitlePlaceholder": "Goodbye",
|
||||
"leaveEmbedDescriptionPlaceholder": "{user.tag} left {server}."
|
||||
},
|
||||
@@ -550,12 +635,15 @@
|
||||
"responseType": "Response type",
|
||||
"responseTypes": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed"
|
||||
"EMBED": "Embed",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"triggerWord": "Trigger word (optional)",
|
||||
"content": "Content",
|
||||
"embed": "Embed",
|
||||
"components": "Components V2 layout",
|
||||
"embedRequired": "Embed tags need a title or description.",
|
||||
"componentsRequired": "Components V2 tags need at least one block.",
|
||||
"allowedRoleIds": "Allowed roles",
|
||||
"allowedChannelIds": "Allowed channel IDs",
|
||||
"idsPlaceholder": "One or more IDs, comma-separated",
|
||||
@@ -658,10 +746,18 @@
|
||||
"runAt": "Run at",
|
||||
"content": "Message content",
|
||||
"embed": "Embed (optional)",
|
||||
"cronHint": "Set a cron expression for recurring messages, or a one-time date/time - not both. Text and/or embed is required.",
|
||||
"components": "Components V2 layout",
|
||||
"contentMode": "Message format",
|
||||
"contentModes": {
|
||||
"text": "Text",
|
||||
"embed": "Embed",
|
||||
"components_v2": "Components V2"
|
||||
},
|
||||
"componentsPreview": "(Components V2)",
|
||||
"cronHint": "Set a cron expression for recurring messages, or a one-time date/time — not both. Choose text, embed, or Components V2 (mutually exclusive).",
|
||||
"create": "Schedule message",
|
||||
"created": "Message scheduled.",
|
||||
"formIncomplete": "Please fill channel, content or embed, and either a cron expression or a date/time.",
|
||||
"formIncomplete": "Please fill channel, choose a message format with content, and either a cron expression or a date/time.",
|
||||
"confirmDelete": "Really delete this schedule?",
|
||||
"listTitle": "Scheduled messages",
|
||||
"listDescription": "Upcoming and recurring scheduled messages.",
|
||||
@@ -692,6 +788,23 @@
|
||||
"confirmDelete": "Really delete this backup?",
|
||||
"ownerOnlyBadge": "Owner-only restore"
|
||||
},
|
||||
"messages": {
|
||||
"sendTitle": "Send a message",
|
||||
"sendDescription": "Post an embed or Components V2 layout to a channel via the bot.",
|
||||
"channelId": "Target channel",
|
||||
"channelRequired": "Select a channel first.",
|
||||
"mode": "Message type",
|
||||
"modes": {
|
||||
"EMBED": "Embed",
|
||||
"COMPONENTS_V2": "Components V2"
|
||||
},
|
||||
"embedRequired": "Embed mode needs title, description, or a color.",
|
||||
"componentsRequired": "Add at least one valid Components V2 block.",
|
||||
"send": "Send message",
|
||||
"sending": "Sending…",
|
||||
"sent": "Message sent.",
|
||||
"sentWithId": "Message sent (ID: {id})."
|
||||
},
|
||||
"commands": {
|
||||
"title": "Commands",
|
||||
"description": "Enable/disable individual slash commands and restrict them by role, channel or cooldown.",
|
||||
|
||||
Reference in New Issue
Block a user