diff --git a/app/handlers/admin/referrals.py b/app/handlers/admin/referrals.py index b8b5bcd4..b45d6c12 100644 --- a/app/handlers/admin/referrals.py +++ b/app/handlers/admin/referrals.py @@ -20,16 +20,13 @@ async def show_referral_statistics( db_user: User, db: AsyncSession ): - """Показать статистику реферальной системы""" try: stats = await get_referral_statistics(db) - # Вычисляем средний доход на реферера avg_per_referrer = 0 if stats.get('active_referrers', 0) > 0: avg_per_referrer = stats.get('total_paid_kopeks', 0) / stats['active_referrers'] - # Добавляем временную метку для принудительного обновления current_time = datetime.datetime.now().strftime("%H:%M:%S") text = f""" @@ -51,7 +48,6 @@ async def show_referral_statistics( Топ-5 рефереров: """ - # Добавляем топ рефереров top_referrers = stats.get('top_referrers', []) if top_referrers: for i, referrer in enumerate(top_referrers[:5], 1): @@ -59,7 +55,6 @@ async def show_referral_statistics( count = referrer.get('referrals_count', 0) user_id = referrer.get('user_id', 'N/A') - # Проверяем, что данные корректные if count > 0: text += f"{i}. ID {user_id}: {settings.format_price(earned)} ({count} реф.)\n" else: @@ -80,7 +75,6 @@ async def show_referral_statistics( 🕐 Обновлено: {current_time} """ - # Создаем клавиатуру keyboard = types.InlineKeyboardMarkup(inline_keyboard=[ [types.InlineKeyboardButton(text="🔄 Обновить", callback_data="admin_referrals")], [types.InlineKeyboardButton(text="👥 Топ рефереров", callback_data="admin_referrals_top")], @@ -88,12 +82,10 @@ async def show_referral_statistics( [types.InlineKeyboardButton(text="⬅️ Назад", callback_data="admin_panel")] ]) - # Пытаемся отредактировать сообщение, если не получается - просто отвечаем try: await callback.message.edit_text(text, reply_markup=keyboard) await callback.answer("Обновлено") except Exception as edit_error: - # Если сообщение не изменилось, просто отвечаем на callback if "message is not modified" in str(edit_error): await callback.answer("Данные актуальны") else: @@ -103,7 +95,6 @@ async def show_referral_statistics( except Exception as e: logger.error(f"Ошибка в show_referral_statistics: {e}", exc_info=True) - # Показываем базовую информацию в случае ошибки current_time = datetime.datetime.now().strftime("%H:%M:%S") text = f""" 🤝 Реферальная статистика @@ -139,7 +130,6 @@ async def show_top_referrers( db_user: User, db: AsyncSession ): - """Показать расширенный топ рефереров""" try: stats = await get_referral_statistics(db) top_referrers = stats.get('top_referrers', []) @@ -147,14 +137,13 @@ async def show_top_referrers( text = "🏆 Топ рефереров\n\n" if top_referrers: - for i, referrer in enumerate(top_referrers[:20], 1): # Показываем топ-20 + for i, referrer in enumerate(top_referrers[:20], 1): earned = referrer.get('total_earned_kopeks', 0) count = referrer.get('referrals_count', 0) display_name = referrer.get('display_name', 'N/A') username = referrer.get('username', '') telegram_id = referrer.get('telegram_id', 'N/A') - # Формируем отображаемое имя if username: display_text = f"@{username} (ID{telegram_id})" elif display_name and display_name != f"ID{telegram_id}": @@ -162,7 +151,6 @@ async def show_top_referrers( else: display_text = f"ID{telegram_id}" - # Добавляем эмодзи для топ-3 emoji = "" if i == 1: emoji = "🥇 "