UNPKG

@necord/localization

Version:

Localize your Discord bot with Necord!

70 lines (69 loc) 3.57 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NecordLocalizationService = void 0; const common_1 = require("@nestjs/common"); const necord_1 = require("necord"); const providers_1 = require("./providers"); const adapters_1 = require("./adapters"); let NecordLocalizationService = class NecordLocalizationService { constructor(localizationAdapter, commandsService) { this.localizationAdapter = localizationAdapter; this.commandsService = commandsService; } onModuleInit() { const commands = this.commandsService.getCommands().flatMap(command => { if (command.isContextMenu()) { return command; } if (!command.isSlashCommand()) { return command; } const rootCommand = command; const subcommandGroups = [...rootCommand.getSubcommands().values()]; const subcommands = subcommandGroups.flatMap(group => [ ...group.getSubcommands().values() ]); return [rootCommand, ...subcommandGroups, ...subcommands]; }); for (const command of commands) { const commandMetadata = command['meta']; commandMetadata.nameLocalizations = this.getLocalizationMap(commandMetadata.nameLocalizations); commandMetadata.descriptionLocalizations = this.getLocalizationMap(commandMetadata.descriptionLocalizations); if (command.isSlashCommand() && command.getSubcommands().size === 0) { const rawOptions = command.getRawOptions(); for (const key in rawOptions) { const optionMetadata = rawOptions[key]; optionMetadata.name_localizations = this.getLocalizationMap(optionMetadata.name_localizations); optionMetadata.description_localizations = this.getLocalizationMap(optionMetadata.description_localizations); } } } } getLocalizationMap(map) { if (!map) return; return Object.entries(map).reduce((acc, [locale, value]) => { acc[locale] = this.localizationAdapter.getTranslation(value, locale); return acc; }, {}); } }; exports.NecordLocalizationService = NecordLocalizationService; exports.NecordLocalizationService = NecordLocalizationService = __decorate([ (0, common_1.Injectable)(), __param(0, (0, common_1.Inject)(providers_1.LOCALIZATION_ADAPTER)), __metadata("design:paramtypes", [adapters_1.DefaultLocalizationAdapter, necord_1.CommandsService]) ], NecordLocalizationService);