from aiogram import Router, types from aiogram.filters import Command from aiogram.enums.parse_mode import ParseMode import logging router = Router() logger = logging.getLogger(__name__) async def _build_referral_text(bot, user_id: int) -> str: me = await bot.get_me() bot_username = me.username or "LarkVPN_bot" link = f"https://t.me/{bot_username}?start=ref_{user_id}" text = ( "👥 Реферальная программа\n\n" "Зови друзей в Lark VPN и получай бонусы на баланс.\n\n" f"🔗 Твоя ссылка:\n{link}\n\n" "👤 Приглашено: —\n" "💰 Начислено бонусов: — ₽\n\n" "Бонусы падают автоматически, когда приглашённые пополняют баланс." ) return text @router.message(Command("referrals")) async def referrals_command(message: types.Message): """ Команда /referrals — показывает текст реферальной программы. """ try: text = await _build_referral_text(message.bot, message.from_user.id) await message.answer(text, parse_mode=ParseMode.HTML) except Exception as e: logger.exception(f"Ошибка в обработчике /referrals: {e}") await message.answer("Произошла ошибка. Попробуй позже.") @router.callback_query(lambda callback: callback.data == "referral") async def referrals_callback(callback: types.CallbackQuery): """ Кнопка «Реферальная программа» в главном меню. """ try: text = await _build_referral_text( callback.message.bot, callback.from_user.id, ) await callback.message.edit_text( text, parse_mode=ParseMode.HTML, ) except Exception as e: logger.exception(f"Ошибка в обработчике callback 'referral': {e}") await callback.message.answer("Произошла ошибка. Попробуй позже.") finally: await callback.answer()