diff --git a/handlers/start.py b/handlers/start.py index 8d9f6a3..a651932 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -136,6 +136,21 @@ async def handle_deep_link( ): """Обработка deep linking для анонимных вопросов""" try: + # Валидируем Telegram ID пользователя + user_id_validation = validator.validate_telegram_id(message.from_user.id) + if not user_id_validation: + logger.error(f"❌ Невалидный Telegram ID: {message.from_user.id}") + await message_service.send_message( + message, + "❌ Ошибка: недопустимый ID пользователя.", + get_main_keyboard_for_user(message.from_user.id) + ) + return + + # Создаем или обновляем пользователя (важно для любого /start) + current_user = await user_service.create_or_update_user(message.from_user, message.chat.id) + logger.info(f"✅ Пользователь создан/обновлен при deep link: {current_user.telegram_id}") + # Валидируем deep link validation_result = validator.validate_deep_link(ref_code) if not validation_result: diff --git a/tests/unit/handlers/test_start.py b/tests/unit/handlers/test_start.py index 97dbed3..d562841 100644 --- a/tests/unit/handlers/test_start.py +++ b/tests/unit/handlers/test_start.py @@ -53,6 +53,12 @@ class TestStartHandlers: # TODO: Реализовать тест pass + def test_handle_deep_link_creates_user(self): + """Тест что handle_deep_link создает пользователя""" + # TODO: Реализовать тест - проверить что при обработке deep link + # вызывается user_service.create_or_update_user + pass + def test_handle_deep_link_invalid(self): """Тест обработки невалидного deep link""" # TODO: Реализовать тест