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

@@ -18,15 +18,18 @@ export const giveawayQueueName = 'giveaways';
export const scheduleQueueName = 'schedules';
export const guildBackupQueueName = 'guild-backups';
export const suggestionsQueueName = 'suggestions';
export const messagesQueueName = 'messages';
const globalForQueues = globalThis as unknown as {
__nexumiGiveawayQueue?: Queue;
__nexumiScheduleQueue?: Queue;
__nexumiGuildBackupQueue?: Queue;
__nexumiSuggestionsQueue?: Queue;
__nexumiMessagesQueue?: Queue;
__nexumiGiveawayQueueEvents?: QueueEvents;
__nexumiGuildBackupQueueEvents?: QueueEvents;
__nexumiSuggestionsQueueEvents?: QueueEvents;
__nexumiMessagesQueueEvents?: QueueEvents;
};
function queueConnection() {
@@ -66,6 +69,13 @@ export function getSuggestionsQueue(): Queue {
return globalForQueues.__nexumiSuggestionsQueue;
}
export function getMessagesQueue(): Queue {
globalForQueues.__nexumiMessagesQueue ??= new Queue(messagesQueueName, {
connection: queueConnection()
});
return globalForQueues.__nexumiMessagesQueue;
}
/**
* QueueEvents instances are only needed for jobs where the dashboard needs
* to wait for the bot to finish (e.g. ending a giveaway so the winners list
@@ -92,6 +102,13 @@ export function getSuggestionsQueueEvents(): QueueEvents {
return globalForQueues.__nexumiSuggestionsQueueEvents;
}
export function getMessagesQueueEvents(): QueueEvents {
globalForQueues.__nexumiMessagesQueueEvents ??= new QueueEvents(messagesQueueName, {
connection: queueEventsConnection()
});
return globalForQueues.__nexumiMessagesQueueEvents;
}
const DEFAULT_WAIT_TIMEOUT_MS = 15_000;
/**