- Revised README to include database migration steps and a new section for database management. - Enhanced moderation command responses to utilize localized messages for unknown commands. - Refactored moderation commands to use centralized command data definitions, improving maintainability and consistency. - Added localization support for command descriptions and options in both German and English. - Versioned Prisma migrations for better tracking of database changes.
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { commandLocales, type CommandLocaleKey } from './command-locales.js';
|
|
|
|
export function commandLocale(key: CommandLocaleKey): {
|
|
description: string;
|
|
descriptionLocalizations: Record<string, string>;
|
|
} {
|
|
const entry = commandLocales[key];
|
|
return {
|
|
description: entry.en,
|
|
descriptionLocalizations: {
|
|
de: entry.de,
|
|
'en-US': entry.en
|
|
}
|
|
};
|
|
}
|
|
|
|
export function localizedChoice(key: CommandLocaleKey, value: string) {
|
|
const entry = commandLocales[key];
|
|
return {
|
|
name: entry.en,
|
|
name_localizations: {
|
|
de: entry.de,
|
|
'en-US': entry.en
|
|
},
|
|
value
|
|
};
|
|
}
|
|
|
|
export function applyCommandDescription<
|
|
T extends {
|
|
setDescription: (description: string) => T;
|
|
setDescriptionLocalizations: (localizations: Record<string, string>) => T;
|
|
}
|
|
>(builder: T, key: CommandLocaleKey): T {
|
|
const locale = commandLocale(key);
|
|
return builder
|
|
.setDescription(locale.description)
|
|
.setDescriptionLocalizations(locale.descriptionLocalizations);
|
|
}
|
|
|
|
export function applyOptionDescription<
|
|
T extends {
|
|
setDescription: (description: string) => T;
|
|
setDescriptionLocalizations: (localizations: Record<string, string>) => T;
|
|
}
|
|
>(option: T, key: CommandLocaleKey): T {
|
|
return applyCommandDescription(option, key);
|
|
}
|