+9
-8
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
+2
-2
@@ -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"👥 <b>Ваша реферальная ссылка:</b> {referral_link}\n\n"
|
||||
f"👥 <b>Ваша реферальная ссылка:</b> <code>{referral_link}</code>\n\n"
|
||||
f"<i>Пригласите реферала и получайте 25% с его каждого пополнения!</i>\n\n"
|
||||
f"🔹 <b>Всего приглашено:</b> {referral_stats['total_referrals']} пользователей\n"
|
||||
f"🔹 <b>Активных рефералов:</b> {referral_stats['active_referrals']}"
|
||||
)
|
||||
|
||||
+4
-3
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user