Implement premium features and GDPR compliance in bot and WebUI

- Added new models for premium tier configurations and assignments, enabling feature limits for free and premium users.
- Introduced GDPR deletion logging and commands for user data management.
- Enhanced logging configuration with retention days for audit logs.
- Updated bot commands and job processing to include new premium and GDPR functionalities.
- Improved localization with new keys for premium features and GDPR commands in both English and German.
- Added UI components for managing premium settings and logging retention in the WebUI.
This commit is contained in:
smueller
2026-07-22 16:59:23 +02:00
parent 4852f16f79
commit 08af99ed52
42 changed files with 1546 additions and 30 deletions

View File

@@ -162,7 +162,9 @@
"timezoneLabel": "Zeitzone",
"timezoneHint": "IANA-Zeitzonen-Bezeichner, z. B. Europe/Berlin oder America/New_York.",
"moderationLabel": "Moderations-Modul",
"moderationHint": "Aktiviert Moderations-Commands (Ban, Kick, Warn, Purge, …) auf diesem Server."
"moderationHint": "Aktiviert Moderations-Commands (Ban, Kick, Warn, Purge, …) auf diesem Server.",
"snipeLabel": "Snipe / Editsnipe",
"snipeHint": "Speichert gelöschte/bearbeitete Nachrichten kurzzeitig (standardmäßig aus, Datenschutz)."
}
},
"modulesPage": {
@@ -248,6 +250,8 @@
"ignoredRolesLabel": "Ignorierte Rollen",
"idsPlaceholder": "Kommagetrennte IDs, z. B. 123456789012345678, 234567890123456789",
"idsHint": "Discord-IDs kommagetrennt eintragen. Entwicklermodus aktivieren, um IDs zu kopieren.",
"retentionLabel": "Aufbewahrung (Tage)",
"retentionHint": "Cases und Dashboard-Audit älter als X Tage löschen. 0 = unbegrenzt.",
"channelsTitle": "Event-Kanal-Zuordnung",
"channelsDescription": "Lege für jeden Event-Typ einen eigenen Log-Kanal fest.",
"channelsEmpty": "Keine Event-Kanal-Zuordnungen konfiguriert.",
@@ -604,6 +608,7 @@
"guilds": "Server",
"users": "User-Blacklist",
"flags": "Feature-Flags",
"premium": "Premium",
"presence": "Präsenz",
"team": "Team",
"jobs": "Jobs",
@@ -650,6 +655,23 @@
"keyPlaceholder": "Flag-Key (z. B. new.module)",
"rollout": "Rollout %"
},
"premium": {
"title": "Premium",
"subtitle": "Stufen Free/Premium, Limits und manuelle Zuweisung (keine Zahlung).",
"maxTags": "Max. Tags",
"maxFeeds": "Max. Feeds",
"maxBackups": "Max. Backups",
"feature": {
"tags": "Tags",
"feeds": "Feeds",
"guildbackup": "Backups"
},
"guildsTitle": "Server-Zuweisungen",
"usersTitle": "User-Zuweisungen",
"guildIdPlaceholder": "Discord Server-ID",
"userIdPlaceholder": "Discord User-ID",
"expires": "Läuft ab"
},
"presence": {
"title": "Bot-Präsenz",
"subtitle": "Status, Aktivität und Wartungsmodus.",

View File

@@ -162,7 +162,9 @@
"timezoneLabel": "Timezone",
"timezoneHint": "IANA timezone identifier, e.g. Europe/Berlin or America/New_York.",
"moderationLabel": "Moderation module",
"moderationHint": "Enable moderation commands (ban, kick, warn, purge, …) on this server."
"moderationHint": "Enable moderation commands (ban, kick, warn, purge, …) on this server.",
"snipeLabel": "Snipe / Editsnipe",
"snipeHint": "Temporarily stores deleted/edited messages (off by default for privacy)."
}
},
"modulesPage": {
@@ -248,6 +250,8 @@
"ignoredRolesLabel": "Ignored roles",
"idsPlaceholder": "Comma-separated IDs, e.g. 123456789012345678, 234567890123456789",
"idsHint": "Enter Discord IDs, comma-separated. Enable Developer Mode to copy IDs.",
"retentionLabel": "Retention (days)",
"retentionHint": "Delete cases and dashboard audit older than X days. 0 = keep forever.",
"channelsTitle": "Event-channel mapping",
"channelsDescription": "Assign a dedicated log channel for each event type.",
"channelsEmpty": "No event-channel mappings configured.",
@@ -604,6 +608,7 @@
"guilds": "Guilds",
"users": "User blacklist",
"flags": "Feature flags",
"premium": "Premium",
"presence": "Presence",
"team": "Team",
"jobs": "Jobs",
@@ -650,6 +655,23 @@
"keyPlaceholder": "Flag key (e.g. new.module)",
"rollout": "Rollout %"
},
"premium": {
"title": "Premium",
"subtitle": "Free/Premium tiers, limits, and manual assignment (no payments).",
"maxTags": "Max tags",
"maxFeeds": "Max feeds",
"maxBackups": "Max backups",
"feature": {
"tags": "Tags",
"feeds": "Feeds",
"guildbackup": "Backups"
},
"guildsTitle": "Guild assignments",
"usersTitle": "User assignments",
"guildIdPlaceholder": "Discord guild ID",
"userIdPlaceholder": "Discord user ID",
"expires": "Expires"
},
"presence": {
"title": "Bot presence",
"subtitle": "Status, activity, and maintenance mode.",