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 = "🥇 "