feat: add trial prompt after registration

This commit is contained in:
yazhog
2025-09-08 14:02:57 +03:00
parent 06e6c65ada
commit bdfe6ae1cf
2 changed files with 35 additions and 87 deletions

View File

@@ -12,7 +12,7 @@ from app.database.crud.user import (
)
from app.database.models import UserStatus
from app.keyboards.inline import (
get_rules_keyboard, get_main_menu_keyboard
get_rules_keyboard, get_main_menu_keyboard, get_post_registration_keyboard
)
from app.localization.texts import get_texts
from app.services.referral_service import process_referral_registration
@@ -498,52 +498,21 @@ async def complete_registration_from_callback(
logger.error(f"Ошибка при обработке реферальной регистрации: {e}")
await state.clear()
has_active_subscription = False
subscription_is_active = False
menu_text = await get_main_menu_text_simple(user.full_name, texts, db)
offer_text = (
f"Подключите VPN бесплатно! Дарим вам {settings.TRIAL_DURATION_DAYS} дней!\n\n"
"Стоимость 100₽/мес за 1 устройство\n\n"
"👇Жмите на кнопку👇 чтобы подключить в 1 клик"
)
try:
await callback.message.answer(
menu_text,
reply_markup=get_main_menu_keyboard(
language=user.language,
is_admin=settings.is_admin(user.telegram_id),
has_had_paid_subscription=user.has_had_paid_subscription,
has_active_subscription=has_active_subscription,
subscription_is_active=subscription_is_active,
balance_kopeks=user.balance_kopeks
),
parse_mode="HTML"
offer_text,
reply_markup=get_post_registration_keyboard(),
)
logger.info(f"✅ Главное меню отправлено для пользователя {user.telegram_id}")
except Exception as e:
logger.error(f"Ошибка при отправке главного меню: {e}")
try:
balance_rubles = user.balance_kopeks // 100
await callback.message.answer(
f"Добро пожаловать, {user.full_name}!\n"
f"Баланс: {balance_rubles}\n"
f"Подписка: Нет активной подписки",
reply_markup=get_main_menu_keyboard(
language=user.language,
is_admin=settings.is_admin(user.telegram_id),
has_had_paid_subscription=user.has_had_paid_subscription,
has_active_subscription=has_active_subscription,
subscription_is_active=subscription_is_active,
balance_kopeks=user.balance_kopeks
)
)
logger.info(f"✅ Fallback главное меню отправлено для пользователя {user.telegram_id}")
except Exception as fallback_error:
logger.error(f"⛔ Критическая ошибка при отправке fallback меню: {fallback_error}")
try:
await callback.message.answer(f"Добро пожаловать, {user.full_name}! Регистрация завершена.")
logger.info(f"✅ Простое приветствие отправлено для пользователя {user.telegram_id}")
except Exception as final_error:
logger.error(f"⛔ Критическая ошибка при отправке простого сообщения: {final_error}")
logger.error(f"Ошибка при отправке предложения триала: {e}")
logger.info(f"✅ Регистрация завершена для пользователя: {user.telegram_id}")
async def complete_registration(
@@ -661,53 +630,21 @@ async def complete_registration(
logger.error(f"Ошибка при обработке реферальной регистрации: {e}")
await state.clear()
has_active_subscription = False
subscription_is_active = False
menu_text = await get_main_menu_text_simple(user.full_name, texts, db)
offer_text = (
f"Подключите VPN бесплатно! Дарим вам {settings.TRIAL_DURATION_DAYS} дней!\n\n"
"Стоимость 100₽/мес за 1 устройство\n\n"
"👇Жмите на кнопку👇 чтобы подключить в 1 клик"
)
try:
await message.answer(
menu_text,
reply_markup=get_main_menu_keyboard(
language=user.language,
is_admin=settings.is_admin(user.telegram_id),
has_had_paid_subscription=user.has_had_paid_subscription,
has_active_subscription=has_active_subscription,
subscription_is_active=subscription_is_active,
balance_kopeks=user.balance_kopeks
),
parse_mode="HTML"
offer_text,
reply_markup=get_post_registration_keyboard(),
)
logger.info(f"✅ Главное меню отправлено для пользователя {user.telegram_id}")
except Exception as e:
logger.error(f"Ошибка при отправке главного меню: {e}")
try:
balance_rubles = user.balance_kopeks // 100
await message.answer(
f"Добро пожаловать, {user.full_name}!\n"
f"Баланс: {balance_rubles}\n"
f"Подписка: Нет активной подписки",
reply_markup=get_main_menu_keyboard(
language=user.language,
is_admin=settings.is_admin(user.telegram_id),
has_had_paid_subscription=user.has_had_paid_subscription,
has_active_subscription=has_active_subscription,
subscription_is_active=subscription_is_active,
balance_kopeks=user.balance_kopeks
),
parse_mode="HTML"
)
logger.info(f"✅ Fallback главное меню отправлено для пользователя {user.telegram_id}")
except Exception as fallback_error:
logger.error(f"⛔ Критическая ошибка при отправке fallback меню: {fallback_error}")
try:
await message.answer(f"Добро пожаловать, {user.full_name}! Регистрация завершена.")
logger.info(f"✅ Простое приветствие отправлено для пользователя {user.telegram_id}")
except:
pass
logger.error(f"Ошибка при отправке предложения триала: {e}")
logger.info(f"✅ Регистрация завершена для пользователя: {user.telegram_id}")

View File

@@ -19,8 +19,19 @@ def get_rules_keyboard(language: str = "ru") -> InlineKeyboardMarkup:
])
def get_post_registration_keyboard() -> InlineKeyboardMarkup:
return InlineKeyboardMarkup(inline_keyboard=[
[
InlineKeyboardButton(
text="🚀 Подключиться бесплатно 🚀", callback_data="menu_trial"
)
],
[InlineKeyboardButton(text="Пропустить ➡️", callback_data="back_to_menu")],
])
def get_main_menu_keyboard(
language: str = "ru",
language: str = "ru",
is_admin: bool = False,
has_had_paid_subscription: bool = False,
has_active_subscription: bool = False,