diff --git a/bot.py b/bot.py index 2d5dac5..c51e63f 100644 --- a/bot.py +++ b/bot.py @@ -143,6 +143,20 @@ class VKBotApplication: for op_id in self._operator_ids(): self.send_message(op_id, message) + def _vk_name(self, user_id: int) -> Optional[str]: + """Реальное имя пользователя из VK (для сверки с введёнными данными).""" + if not self.vk or user_id <= 0: + return None + try: + info = self.vk.users.get(user_ids=user_id) + if info: + u = info[0] + full = f"{u.get('first_name', '')} {u.get('last_name', '')}".strip() + return full or None + except Exception as e: + logger.error(f"Не удалось получить имя VK для {user_id}: {e}") + return None + @staticmethod def _progress_bar(step: int, total: int = 3) -> str: """Визуальный прогресс шага формы: ▰▰▱ Шаг 2 из 3.""" @@ -1761,9 +1775,20 @@ class VKBotApplication: consent_3 = user_data.get("consent_3", "Согласен") promo_line = f"🎁 Промокод клиента: {promo}\n" if promo else "" + # Реальное имя из VK + флаг несовпадения (помогает отсеять «рандомные» данные) + vk_name = self._vk_name(user_id) + if vk_name: + mismatch = "" + if name and name.strip().lower() not in vk_name.lower() and vk_name.lower() not in name.strip().lower(): + mismatch = " ⚠️ не совпадает с введённым!" + vk_name_line = f"🪪 Имя в VK: {vk_name}{mismatch}\n" + else: + vk_name_line = "" + operator_msg = ( f"⚡ Получена новая заявка!\n\n" - f"👤 Имя: {name}\n" + f"👤 Имя (введено): {name}\n" + f"{vk_name_line}" f"📞 Телефон: {format_phone_display(phone)}\n" f"🎯 Выбранная услуга: {question}\n" f"🕒 Удобное время звонка: {call_time}\n" diff --git a/keyboards.py b/keyboards.py index c9b3090..f98d2dd 100644 --- a/keyboards.py +++ b/keyboards.py @@ -22,7 +22,7 @@ def get_main_keyboard(is_admin: bool = False) -> str: # Кнопка админ-панели — только для администраторов (отдельной строкой) if is_admin: keyboard.add_line() - keyboard.add_button("Админка ⚙️", color=VkKeyboardColor.SECONDARY) + keyboard.add_button("Админка ⚙️", color=VkKeyboardColor.POSITIVE) return keyboard.get_keyboard() @@ -210,14 +210,15 @@ def get_binary_keyboard(show_skip: bool = False) -> str: def get_returning_keyboard() -> str: - """Клавиатура для возвращающегося клиента, чьи данные уже известны.""" - keyboard = VkKeyboard(one_time=False) + """Инлайн-клавиатура для возвращающегося клиента (под сообщением).""" + keyboard = VkKeyboard(inline=True) keyboard.add_button("Да, всё верно ✅", color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button("Сменить имя 👤", color=VkKeyboardColor.SECONDARY) keyboard.add_button("Сменить телефон 📞", color=VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("Заполнить заново 🔄", color=VkKeyboardColor.SECONDARY) + keyboard.add_line() keyboard.add_button("Отменить заполнение ❌", color=VkKeyboardColor.NEGATIVE) return keyboard.get_keyboard() @@ -308,7 +309,7 @@ def get_edit_menu_keyboard() -> str: keyboard.add_button("Изменить Услугу 🎮", color=VkKeyboardColor.SECONDARY) keyboard.add_button("Изменить Время 🕒", color=VkKeyboardColor.SECONDARY) keyboard.add_line() - keyboard.add_button("Назад к проверке ↩️", color=VkKeyboardColor.SECONDARY) + keyboard.add_button("Назад к проверке ↩️", color=VkKeyboardColor.NEGATIVE) return keyboard.get_keyboard()