diff --git a/app/handlers/admin/referrals.py b/app/handlers/admin/referrals.py
index 60ed5bd6..c8714ac2 100644
--- a/app/handlers/admin/referrals.py
+++ b/app/handlers/admin/referrals.py
@@ -1,6 +1,7 @@
import logging
from aiogram import Dispatcher, types, F
from sqlalchemy.ext.asyncio import AsyncSession
+import datetime
from app.config import settings
from app.database.models import User
@@ -26,6 +27,8 @@ async def show_referral_statistics(
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 +54,11 @@ async def show_referral_statistics(
earned = referrer.get('total_earned_kopeks', 0)
count = referrer.get('referrals_count', 0)
user_id = referrer.get('user_id', 'N/A')
- text += f"{i}. ID {user_id}: {settings.format_price(earned)} ({count} реф.)\n"
+
+ if count > 0:
+ text += f"{i}. ID {user_id}: {settings.format_price(earned)} ({count} реф.)\n"
+ else:
+ logger.warning(f"Реферер {user_id} имеет {count} рефералов, но есть в топе")
else:
text += "Нет данных\n"
@@ -64,6 +71,8 @@ async def show_referral_statistics(
- Бонус новому пользователю: {settings.format_price(settings.REFERRED_USER_REWARD)}
- Комиссия с покупок: {settings.REFERRAL_COMMISSION_PERCENT}%
- Уведомления: {'✅ Включены' if settings.REFERRAL_NOTIFICATIONS_ENABLED else '❌ Отключены'}
+
+🕐 Обновлено: {current_time}
"""
keyboard = types.InlineKeyboardMarkup(inline_keyboard=[
@@ -73,12 +82,20 @@ async def show_referral_statistics(
[types.InlineKeyboardButton(text="⬅️ Назад", callback_data="admin_panel")]
])
- await callback.message.edit_text(text, reply_markup=keyboard)
- await callback.answer()
+ try:
+ await callback.message.edit_text(text, reply_markup=keyboard)
+ await callback.answer("Обновлено")
+ except Exception as edit_error:
+ if "message is not modified" in str(edit_error):
+ await callback.answer("Данные актуальны")
+ else:
+ logger.error(f"Ошибка редактирования сообщения: {edit_error}")
+ await callback.answer("Ошибка обновления")
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"""
🤝 Реферальная статистика
@@ -90,6 +107,8 @@ async def show_referral_statistics(
- Бонус пригласившему: {settings.format_price(settings.REFERRAL_INVITER_BONUS_KOPEKS)}
- Бонус новому пользователю: {settings.format_price(settings.REFERRED_USER_REWARD)}
- Комиссия с покупок: {settings.REFERRAL_COMMISSION_PERCENT}%
+
+🕐 Время: {current_time}
"""
keyboard = types.InlineKeyboardMarkup(inline_keyboard=[
@@ -97,7 +116,10 @@ async def show_referral_statistics(
[types.InlineKeyboardButton(text="⬅️ Назад", callback_data="admin_panel")]
])
- await callback.message.edit_text(text, reply_markup=keyboard)
+ try:
+ await callback.message.edit_text(text, reply_markup=keyboard)
+ except:
+ pass
await callback.answer("Произошла ошибка при загрузке статистики")
@@ -115,7 +137,7 @@ async def show_top_referrers(
text = "🏆 Топ рефереров\n\n"
if top_referrers:
- for i, referrer in enumerate(top_referrers[:20], 1):
+ for i, referrer in enumerate(top_referrers[:20], 1):
earned = referrer.get('total_earned_kopeks', 0)
count = referrer.get('referrals_count', 0)
user_id = referrer.get('user_id', 'N/A')