diff --git a/src/index.js b/src/index.js index edf464e..6f808f1 100644 --- a/src/index.js +++ b/src/index.js @@ -15,6 +15,7 @@ import leadService from './services/leadService.js'; import UserService from './services/userService.js'; import { resetUserContext } from './utils/messageUtils.js'; import { tryAcquireLock, pruneLocks } from './utils/callbackLock.js'; +import { tForUser, LANGUAGE_NAMES, AVAILABLE_LANGUAGES } from './i18n/index.js'; setInterval(() => { pruneLocks(); @@ -65,6 +66,17 @@ if (bot && botAvailable) { // Если сообщение не обработано роутером и чатбот включён — отправить в ИИ if (!dispatched && msg.text && await chatbotService.isChatbotEnabled()) { const user = msg.__user || await UserService.getUserByTelegramId(msg.from.id); + // Первый контакт: сначала выбор языка + if (!user?.language_set) { + const keyboard = { + inline_keyboard: AVAILABLE_LANGUAGES.map(code => [{ + text: LANGUAGE_NAMES[code], + callback_data: `set_language_${code}` + }]) + }; + await bot.sendMessage(msg.chat.id, tForUser('en')('bot.language_select'), { reply_markup: keyboard }); + return; + } const lang = user?.language || 'en'; const result = await chatbotService.sendToChatbot({ sessionId: msg.from.id, diff --git a/src/router/routes.js b/src/router/routes.js index 87a1e3c..68e36db 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -7,6 +7,7 @@ import { resetUserContext } from '../utils/messageUtils.js'; import chatbotService from '../services/chatbotService.js'; import leadService from '../services/leadService.js'; import UserService from '../services/userService.js'; +import { tForUser, LANGUAGE_NAMES, AVAILABLE_LANGUAGES } from '../i18n/index.js'; import userHandler from '../handlers/userHandlers/userHandler.js'; import userPurchaseHandler from '../handlers/userHandlers/userPurchaseHandler.js'; @@ -89,6 +90,17 @@ export function registerRoutes() { // Магазин на паузе — сразу переключаем на ИИ-диалог, убираем меню if (await chatbotService.isSleepMode()) { const user = msg.__user || await UserService.getUserByTelegramId(msg.from.id); + // Первый контакт: сначала выбор языка + if (!user?.language_set) { + const keyboard = { + inline_keyboard: AVAILABLE_LANGUAGES.map(code => [{ + text: LANGUAGE_NAMES[code], + callback_data: `set_language_${code}` + }]) + }; + await bot.sendMessage(msg.chat.id, tForUser('en')('bot.language_select'), { reply_markup: keyboard }); + return; + } const lang = user?.language || 'en'; const result = await chatbotService.sendToChatbot({ sessionId: msg.from.id,