diff --git a/app/api/create-user/route.ts b/app/api/create-user/route.ts index f0411e3..0dcf8e7 100644 --- a/app/api/create-user/route.ts +++ b/app/api/create-user/route.ts @@ -64,23 +64,32 @@ export async function POST(request: NextRequest) { // 3. Генерируем уникальное имя пользователя (приоритет: @username > firstName_ID > userID > random) // ВАЖНО: Marzban принимает только a-z, 0-9 и подчеркивания, БЕЗ @ let username: string; + let usernameSource: string; + if (telegramUsername) { // Есть @username в Telegram - используем БЕЗ @ username = telegramUsername.toLowerCase().replace(/[^a-z0-9_]/g, '_'); + usernameSource = 'telegram_username'; } else if (firstName && telegramId) { // Нет username, используем имя + ID const cleanName = firstName.toLowerCase().replace(/[^a-z0-9]/g, '_'); username = `${cleanName}_${telegramId}`; + usernameSource = 'firstName_telegramId'; } else if (telegramId) { // Только ID username = `user_${telegramId}`; + usernameSource = 'telegramId_only'; } else { // Для тестирования вне Telegram username = `user_${Date.now()}_${Math.random().toString(36).substring(7)}`; + usernameSource = 'random_timestamp'; } - logger.debug('✅ Generated username:', username); - logger.debug('📊 Telegram data:', { telegramId, telegramUsername, firstName, lastName }); + logger.info('👤 USERNAME GENERATION:', { + source: usernameSource, + username, + input: { telegramId, telegramUsername, firstName, lastName } + }); // 4. Определяем inbounds на основе выбранных локаций let userInbounds = { diff --git a/app/plans/page.tsx b/app/plans/page.tsx index 536d3af..c7c384e 100644 --- a/app/plans/page.tsx +++ b/app/plans/page.tsx @@ -163,18 +163,34 @@ export default function PlansNew() { const telegramWebApp = (window as any).Telegram?.WebApp; const user = telegramWebApp?.initDataUnsafe?.user; + console.log('🔍 TELEGRAM USER DATA:', { + hasWebApp: !!telegramWebApp, + hasInitData: !!telegramWebApp?.initDataUnsafe, + hasUser: !!user, + user: user ? { + id: user.id, + username: user.username, + first_name: user.first_name, + last_name: user.last_name, + } : null + }); + + const requestBody = { + planType, + period, + locationIds, + telegramId: user?.id || null, + telegramUsername: user?.username || null, + firstName: user?.first_name || null, + lastName: user?.last_name || null, + }; + + console.log('📤 REQUEST BODY:', requestBody); + const response = await fetch('/api/create-user', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - planType, - period, - locationIds, - telegramId: user?.id || null, - telegramUsername: user?.username || null, - firstName: user?.first_name || null, - lastName: user?.last_name || null, - }), + body: JSON.stringify(requestBody), }); const data = await response.json();