Implement ticket panel synchronization and configuration updates

- Added `panelChannelId` and `panelMessageId` fields to the `TicketConfig` model for managing ticket panel settings.
- Introduced `syncTicketPanel` function to handle posting and updating the ticket panel in Discord channels via BullMQ.
- Enhanced error handling for ticket panel synchronization, including specific error messages for missing categories and posting failures.
- Updated WebUI components to support panel channel selection and improved error messaging for synchronization issues.
- Added localization entries for new error messages related to ticket panel synchronization in both English and German.
- Refactored ticket category management to trigger panel synchronization upon category creation, update, or deletion.
This commit is contained in:
TheOnlyMace
2026-07-25 16:06:17 +02:00
parent dba7bb3cdc
commit 1eec10ba80
19 changed files with 476 additions and 47 deletions

View File

@@ -668,29 +668,36 @@
},
"tickets": {
"title": "Tickets",
"description": "Configure how support tickets are created and managed.",
"description": "Configure how support tickets are created. Saving (enabled, with panel channel and at least one category) posts or updates the ticket panel in the selected channel.",
"enabledLabel": "Tickets module enabled",
"mode": "Ticket mode",
"modes": {
"CHANNEL": "Private channel",
"THREAD": "Private thread"
},
"categoryId": "Ticket category ID",
"panelChannelId": "Panel channel",
"panelChannelHint": "Channel where the ticket panel with category buttons is posted.",
"categoryId": "Discord category for ticket channels",
"logChannelId": "Log channel",
"inactivityHours": "Auto-close after inactivity (hours)",
"transcriptDm": "DM transcript to ticket creator",
"transcriptDmHint": "Sends a transcript to the user via DM once their ticket is closed.",
"ratingEnabled": "Ask for a rating after closing",
"categoriesTitle": "Ticket categories",
"categoriesDescription": "Categories members can choose from when opening a ticket.",
"categoriesDescription": "Categories members can choose from when opening a ticket. Changes update an existing panel.",
"categoriesEmpty": "No ticket categories configured yet.",
"categoryName": "Name",
"categoryEmoji": "Emoji",
"categoryDescription": "Description",
"supportRoleIds": "Support role IDs",
"supportRoleIds": "Support roles",
"idsPlaceholder": "One or more IDs, comma-separated",
"addCategory": "Add category",
"nameRequired": "A name is required."
"nameRequired": "A name is required.",
"errors": {
"panelTimeout": "The bot did not confirm the ticket panel in time. It may still be posting — check the channel and bot permissions, then save again.",
"panelNotPosted": "The ticket panel could not be created in the Discord channel. Check bot permissions (View Channel, Send Messages, Embed Links).",
"noCategories": "Create at least one ticket category before the panel can be posted."
}
},
"giveaways": {
"formIncomplete": "Please fill in the channel, prize and end date.",