Enhance bot functionality with new features and improvements
- Updated package dependencies to include `@sentry/node` for error tracking. - Refactored command routing to incorporate user and guild blacklisting checks, improving command execution safety. - Enhanced health server metrics to include queue waiting times, providing better insights into system performance. - Introduced confirmation handling for guild backup commands, streamlining user interactions. - Improved moderation commands with better error handling and case management, ensuring robust moderation capabilities. - Added new duration parsing functions to handle timeout durations effectively, enhancing moderation features. - Updated localization files to reflect new command structures and user guidance improvements.
This commit is contained in:
@@ -59,6 +59,9 @@ const de: Dictionary = {
|
||||
'generic.commandChannelBlocked': 'Dieser Befehl ist in diesem Kanal nicht erlaubt.',
|
||||
'generic.commandRoleBlocked': 'Du darfst diesen Befehl mit deinen Rollen nicht nutzen.',
|
||||
'generic.commandCooldown': 'Bitte warte noch {seconds} Sekunden, bevor du diesen Befehl erneut nutzt.',
|
||||
'generic.moduleDisabled': 'Dieses Modul ist auf diesem Server deaktiviert.',
|
||||
'generic.userBlacklisted': 'Du darfst Nexumi derzeit nicht nutzen.',
|
||||
'generic.guildBlacklisted': 'Dieser Server darf Nexumi derzeit nicht nutzen.',
|
||||
'core.help.title': 'Nexumi Hilfe',
|
||||
'core.help.subtitle': 'Commands nach Modul. Optional: `/help module:<name>`.',
|
||||
'core.help.moduleLine': '**{module}**: {commands}',
|
||||
@@ -111,10 +114,23 @@ const de: Dictionary = {
|
||||
'gdpr.delete.doneBody':
|
||||
'Gelöscht/anonymisiert: {warnings} Verwarnungen, {levels} Level-Einträge, {economy} Economy-Einträge, {cases} Cases anonymisiert.',
|
||||
'moderation.success': 'Aktion erfolgreich ausgeführt.',
|
||||
'moderation.success.case': 'Aktion erfolgreich ausgeführt (Fall #{caseNumber}).',
|
||||
'moderation.duration.invalid': 'Ungültige Dauer. Nutze z. B. 30m, 12h oder 7d.',
|
||||
'moderation.duration.invalidTimeout':
|
||||
'Ungültige Timeout-Dauer. Nutze z. B. 30m oder 1d (max. 28 Tage).',
|
||||
'moderation.hierarchy.self': 'Du kannst diese Aktion nicht auf dich selbst anwenden.',
|
||||
'moderation.hierarchy.owner': 'Der Server-Owner kann nicht moderiert werden.',
|
||||
'moderation.hierarchy.moderator':
|
||||
'Du kannst keine Mitglieder moderieren, die gleich oder höher in der Rollenhierarchie stehen.',
|
||||
'moderation.hierarchy.bot':
|
||||
'Der Bot kann dieses Mitglied wegen der Rollenhierarchie oder fehlender Rechte nicht moderieren.',
|
||||
'moderation.hierarchy.notMember': 'Dieses Mitglied ist nicht auf dem Server.',
|
||||
'moderation.reason.none': 'Kein Grund angegeben',
|
||||
'moderation.warning.created': 'Verwarnung erstellt: {warningId}',
|
||||
'moderation.warning.none': 'Keine Verwarnungen vorhanden.',
|
||||
'moderation.warning.defaultReason': 'Kein Grund',
|
||||
'moderation.warning.notFound': 'Verwarnung nicht gefunden.',
|
||||
'moderation.purge.done': '{deletedCount} Nachrichten gelöscht (Fall #{caseNumber}).',
|
||||
'moderation.note.none': 'Keine Notizen vorhanden.',
|
||||
'moderation.case.notFound': 'Fall nicht gefunden.',
|
||||
'moderation.escalation.durationRequired':
|
||||
@@ -124,6 +140,14 @@ const de: Dictionary = {
|
||||
'Eskalationsregel gespeichert: {warnCount} Verwarnungen => {action}{duration}.',
|
||||
'moderation.escalation.removed':
|
||||
'Eskalationsregel für {warnCount} Verwarnungen entfernt.',
|
||||
'moderation.escalation.defaultReason': 'Auto-Eskalation bei {warnCount} Verwarnungen',
|
||||
'moderation.escalation.skippedDuration':
|
||||
'Eskalationsregel für {warnCount} Verwarnungen übersprungen (fehlende Dauer).',
|
||||
'moderation.escalation.skippedPermission':
|
||||
'Eskalationsregel für {warnCount} Verwarnungen übersprungen (fehlende Bot-Rechte).',
|
||||
'moderation.escalation.appliedTimeout': 'Auto-Eskalation angewendet: Timeout ({durationMs} ms).',
|
||||
'moderation.escalation.appliedKick': 'Auto-Eskalation angewendet: Kick.',
|
||||
'moderation.escalation.appliedBan': 'Auto-Eskalation angewendet: Ban.',
|
||||
'moderation.confirm.button.confirm': 'Bestätigen',
|
||||
'moderation.confirm.button.cancel': 'Abbrechen',
|
||||
'moderation.confirm.permanent': 'dauerhaft',
|
||||
@@ -612,6 +636,9 @@ const en: Dictionary = {
|
||||
'generic.commandChannelBlocked': 'This command is not allowed in this channel.',
|
||||
'generic.commandRoleBlocked': 'You are not allowed to use this command with your roles.',
|
||||
'generic.commandCooldown': 'Please wait {seconds} more seconds before using this command again.',
|
||||
'generic.moduleDisabled': 'This module is disabled on this server.',
|
||||
'generic.userBlacklisted': 'You are not allowed to use Nexumi right now.',
|
||||
'generic.guildBlacklisted': 'This server is not allowed to use Nexumi right now.',
|
||||
'core.help.title': 'Nexumi Help',
|
||||
'core.help.subtitle': 'Commands by module. Optional: `/help module:<name>`.',
|
||||
'core.help.moduleLine': '**{module}**: {commands}',
|
||||
@@ -664,10 +691,23 @@ const en: Dictionary = {
|
||||
'gdpr.delete.doneBody':
|
||||
'Deleted/anonymized: {warnings} warnings, {levels} level rows, {economy} economy rows, {cases} cases anonymized.',
|
||||
'moderation.success': 'Action executed successfully.',
|
||||
'moderation.success.case': 'Action executed successfully (case #{caseNumber}).',
|
||||
'moderation.duration.invalid': 'Invalid duration. Use e.g. 30m, 12h, or 7d.',
|
||||
'moderation.duration.invalidTimeout':
|
||||
'Invalid timeout duration. Use e.g. 30m or 1d (max 28 days).',
|
||||
'moderation.hierarchy.self': 'You cannot apply this action to yourself.',
|
||||
'moderation.hierarchy.owner': 'The server owner cannot be moderated.',
|
||||
'moderation.hierarchy.moderator':
|
||||
'You cannot moderate members with equal or higher roles.',
|
||||
'moderation.hierarchy.bot':
|
||||
'The bot cannot moderate this member due to role hierarchy or missing permissions.',
|
||||
'moderation.hierarchy.notMember': 'That member is not on this server.',
|
||||
'moderation.reason.none': 'No reason provided',
|
||||
'moderation.warning.created': 'Warning created: {warningId}',
|
||||
'moderation.warning.none': 'No warnings.',
|
||||
'moderation.warning.defaultReason': 'No reason',
|
||||
'moderation.warning.notFound': 'Warning not found.',
|
||||
'moderation.purge.done': 'Deleted {deletedCount} messages (case #{caseNumber}).',
|
||||
'moderation.note.none': 'No notes.',
|
||||
'moderation.case.notFound': 'Case not found.',
|
||||
'moderation.escalation.durationRequired': 'Duration is required for TIMEOUT escalation.',
|
||||
@@ -675,6 +715,14 @@ const en: Dictionary = {
|
||||
'moderation.escalation.saved':
|
||||
'Escalation rule saved: {warnCount} warnings => {action}{duration}.',
|
||||
'moderation.escalation.removed': 'Escalation rule removed for {warnCount} warnings.',
|
||||
'moderation.escalation.defaultReason': 'Auto escalation at {warnCount} warnings',
|
||||
'moderation.escalation.skippedDuration':
|
||||
'Escalation rule for {warnCount} warns skipped (missing duration).',
|
||||
'moderation.escalation.skippedPermission':
|
||||
'Escalation rule for {warnCount} warns skipped (missing bot permissions).',
|
||||
'moderation.escalation.appliedTimeout': 'Auto escalation applied: timeout ({durationMs} ms).',
|
||||
'moderation.escalation.appliedKick': 'Auto escalation applied: kick.',
|
||||
'moderation.escalation.appliedBan': 'Auto escalation applied: ban.',
|
||||
'moderation.confirm.button.confirm': 'Confirm',
|
||||
'moderation.confirm.button.cancel': 'Cancel',
|
||||
'moderation.confirm.permanent': 'permanent',
|
||||
|
||||
Reference in New Issue
Block a user