diff --git a/database.py b/database.py index 339edc47..70372859 100644 --- a/database.py +++ b/database.py @@ -149,24 +149,25 @@ async def add_referral(referred_tg_id: int, referrer_tg_id: int): async def handle_referral_on_balance_update(tg_id: int, amount: float): conn = await asyncpg.connect(DATABASE_URL) - + # Проверяем, есть ли реферал в таблице referral = await conn.fetchrow(''' - SELECT referrer_tg_id, reward_issued FROM referrals WHERE referred_tg_id = $1 + SELECT referrer_tg_id FROM referrals WHERE referred_tg_id = $1 ''', tg_id) - - if referral and not referral['reward_issued'] and amount > 0: + + if referral: referrer_tg_id = referral['referrer_tg_id'] # Начисляем бонус (25% от платежа) пригласившему bonus = amount * 0.25 # 25% от платежа await update_balance(referrer_tg_id, bonus) - # Обновляем статус бонуса как выданный + # Записываем информацию о начислении бонуса await conn.execute(''' - UPDATE referrals SET reward_issued = TRUE WHERE referred_tg_id = $1 - ''', tg_id) - + INSERT INTO referral_rewards (referrer_tg_id, referred_tg_id, amount) + VALUES ($1, $2, $3) + ''', referrer_tg_id, tg_id, bonus) + await conn.close() async def get_referral_stats(referrer_tg_id: int): diff --git a/handlers/key_management.py b/handlers/key_management.py index b7e5fbdc..118d6949 100644 --- a/handlers/key_management.py +++ b/handlers/key_management.py @@ -148,6 +148,9 @@ async def handle_text(message: Message, state: FSMContext): if current_state == Form.waiting_for_key_name.state: await handle_key_name_input(message, state) + else: + await start_command(message) + async def handle_key_name_input(message: Message, state: FSMContext): tg_id = message.from_user.id key_name = sanitize_key_name(message.text) diff --git a/handlers/profile.py b/handlers/profile.py index 78b7e6bb..a86c7890 100644 --- a/handlers/profile.py +++ b/handlers/profile.py @@ -59,7 +59,6 @@ async def process_callback_view_profile(callback_query: types.CallbackQuery, sta await callback_query.answer() -# Хендлер для кнопки "Пригласить" @router.callback_query(lambda c: c.data == 'invite') async def invite_handler(callback_query: types.CallbackQuery): tg_id = callback_query.from_user.id @@ -68,7 +67,8 @@ async def invite_handler(callback_query: types.CallbackQuery): referral_stats = await get_referral_stats(tg_id) invite_message = ( - f"👥 Ваша реферальная ссылка: {referral_link}\n\n" + f"👥 Ваша реферальная ссылка: {referral_link}\n\n" + f"Пригласите реферала и получайте 25% с его каждого пополнения!\n\n" f"🔹 Всего приглашено: {referral_stats['total_referrals']} пользователей\n" f"🔹 Активных рефералов: {referral_stats['active_referrals']}" ) diff --git a/handlers/start.py b/handlers/start.py index 1faa3e92..9e528028 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -45,9 +45,11 @@ async def send_welcome_message(chat_id: int): @router.message(Command('start')) async def start_command(message: Message): + print(f"Received start command with text: {message.text}") # Отладочный лог if 'referral_' in message.text: referrer_tg_id = int(message.text.split('referral_')[1]) - + print(f"Referral ID: {referrer_tg_id}") # Отладочный лог + # Остальная часть кода... if not await check_connection_exists(message.from_user.id): await add_connection(message.from_user.id) @@ -56,8 +58,7 @@ async def start_command(message: Message): await message.answer("Вас пригласил друг, добро пожаловать!") else: await message.answer("Вы уже зарегистрированы в системе!") - else: - await send_welcome_message(message.chat.id) + await send_welcome_message(message.chat.id) @router.callback_query(lambda c: c.data == 'about_vpn') async def handle_about_vpn(callback_query: CallbackQuery):