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:
TheOnlyMace
2026-07-22 22:55:37 +02:00
parent 95eed45ec4
commit 4e135bcf43
46 changed files with 4505 additions and 194 deletions

View File

@@ -12,6 +12,7 @@ export * from './dashboard.js';
export * from './owner.js';
export * from './public.js';
export * from './premium.js';
export * from './components-v2.js';
export const LocaleSchema = z.enum(['de', 'en']);
export type Locale = z.infer<typeof LocaleSchema>;
@@ -575,13 +576,29 @@ const de: Dictionary = {
'scheduler.list.line': '`{id}` — {channel} — {timing} — {preview}',
'scheduler.list.cron': 'Cron `{cron}`',
'scheduler.list.embedPreview': '[Embed]',
'scheduler.list.componentsPreview': '[Components V2]',
'scheduler.error.missing_schedule_time': 'Gib `when` oder `cron` an.',
'scheduler.error.invalid_when': 'Ungültige Zeit. Nutze z. B. 1h, 2d oder ein ISO-Datum.',
'scheduler.error.invalid_cron': 'Ungültiger Cron-Ausdruck (56 Felder).',
'scheduler.error.invalid_channel': 'Ungültiger Kanal.',
'scheduler.error.channel_unavailable': 'Der Bot kann in diesem Kanal nicht senden.',
'scheduler.error.not_found': 'Geplante Nachricht nicht gefunden.',
'scheduler.error.content_required': 'Inhalt oder Embed-Titel/Beschreibung erforderlich.'
'scheduler.error.content_required': 'Inhalt oder Embed-Titel/Beschreibung erforderlich.',
'componentsV2.error.notFound': 'Diese Komponenten-Nachricht ist nicht mehr verfügbar.',
'componentsV2.error.actionMissing': 'Für diese Interaktion ist keine Aktion konfiguriert.',
'componentsV2.error.botMissingManageRoles': 'Dem Bot fehlt die Berechtigung Rollen zu verwalten.',
'componentsV2.error.roleNotFound': 'Rolle nicht gefunden.',
'componentsV2.error.roleManaged': 'Integrierte Rollen können nicht vergeben werden.',
'componentsV2.error.roleHierarchy': 'Die Rolle liegt über der höchsten Bot-Rolle.',
'componentsV2.error.noRolesSelected': 'Keine Rollen ausgewählt.',
'componentsV2.role.assigned': 'Rolle vergeben.',
'componentsV2.role.removed': 'Rolle entfernt.',
'componentsV2.role.assignedSelected': 'Ausgewählte Rollen vergeben.',
'utility.embed.components.sent': 'Components-V2-Nachricht gesendet.',
'utility.embed.components.dashboardHint':
'Für den vollen Builder inkl. Interaktionen: {url}',
'utility.embed.components.missingText': 'Text ist erforderlich.',
'tag.error.components_required': 'Components-V2-Tags benötigen Komponenten.'
};
const en: Dictionary = {
'generic.noPermission': 'You do not have permission for this action.',
@@ -1111,13 +1128,29 @@ const en: Dictionary = {
'scheduler.list.line': '`{id}` — {channel} — {timing} — {preview}',
'scheduler.list.cron': 'Cron `{cron}`',
'scheduler.list.embedPreview': '[Embed]',
'scheduler.list.componentsPreview': '[Components V2]',
'scheduler.error.missing_schedule_time': 'Provide `when` or `cron`.',
'scheduler.error.invalid_when': 'Invalid time. Use e.g. 1h, 2d, or an ISO date.',
'scheduler.error.invalid_cron': 'Invalid cron expression (56 fields).',
'scheduler.error.invalid_channel': 'Invalid channel.',
'scheduler.error.channel_unavailable': 'The bot cannot send messages in that channel.',
'scheduler.error.not_found': 'Scheduled message not found.',
'scheduler.error.content_required': 'Content or embed title/description is required.'
'scheduler.error.content_required': 'Content or embed title/description is required.',
'componentsV2.error.notFound': 'This component message is no longer available.',
'componentsV2.error.actionMissing': 'No action is configured for this interaction.',
'componentsV2.error.botMissingManageRoles': 'The bot lacks Manage Roles permission.',
'componentsV2.error.roleNotFound': 'Role not found.',
'componentsV2.error.roleManaged': 'Managed roles cannot be assigned.',
'componentsV2.error.roleHierarchy': 'The role is above the bot\'s highest role.',
'componentsV2.error.noRolesSelected': 'No roles selected.',
'componentsV2.role.assigned': 'Role assigned.',
'componentsV2.role.removed': 'Role removed.',
'componentsV2.role.assignedSelected': 'Selected roles assigned.',
'utility.embed.components.sent': 'Components V2 message sent.',
'utility.embed.components.dashboardHint':
'For the full builder including interactions: {url}',
'utility.embed.components.missingText': 'Text is required.',
'tag.error.components_required': 'Components V2 tags require components.'
};
const locales: Record<Locale, Dictionary> = { de, en };