diff --git a/src/framework/handlers/prefixHandler.ts b/src/framework/handlers/prefixHandler.ts index 2e94f0b..12e150f 100644 --- a/src/framework/handlers/prefixHandler.ts +++ b/src/framework/handlers/prefixHandler.ts @@ -1,4 +1,5 @@ import type { Message } from "discord.js"; +import type { BotCommand, SupportedLang } from "../types/command.js"; import { parsePrefixArgs } from "../commands/argParser.js"; import { buildPrefixUsage } from "../commands/usage.js"; @@ -14,6 +15,24 @@ interface PrefixHandlerDeps extends HandlerExecutionDeps { executor: CommandExecutor; } +const resolvePrefixLang = ( + deps: PrefixHandlerDeps, + command: BotCommand, + trigger: string, + fallbackLang: SupportedLang, + guildPreferredLocale?: string | null, +): SupportedLang => { + + const contextualLang = deps.i18n.resolveLang(guildPreferredLocale); + const contextualTrigger = deps.i18n.commandTrigger(contextualLang, command.meta.name); + + if (contextualTrigger === trigger) { + return contextualLang; + } + + return fallbackLang; +}; + export const createPrefixHandler = (deps: PrefixHandlerDeps) => { return async (message: Message): Promise => { if (message.author.bot || !message.content.startsWith(deps.prefix)) { @@ -37,7 +56,7 @@ export const createPrefixHandler = (deps: PrefixHandlerDeps) => { const reply = createPrefixReply(message); const command = match.command; - const lang = match.lang; + const lang = resolvePrefixLang(deps, command, trigger, match.lang, message.guild?.preferredLocale ?? null); const t = createTranslator(deps.i18n, lang); const parsed = await parsePrefixArgs(message, command.args, rawArgs);