diff --git a/handlers/admin/stats/stats_handler.py b/handlers/admin/stats/stats_handler.py
index 8b7355ec..ef772ffd 100644
--- a/handlers/admin/stats/stats_handler.py
+++ b/handlers/admin/stats/stats_handler.py
@@ -31,6 +31,14 @@ async def handle_stats(callback_query: CallbackQuery, session: Any):
total_payments_today = int(
await session.fetchval("SELECT COALESCE(SUM(amount), 0) FROM payments WHERE created_at >= CURRENT_DATE")
)
+ total_payments_yesterday = int(
+ await session.fetchval("""
+ SELECT COALESCE(SUM(amount), 0)
+ FROM payments
+ WHERE created_at >= CURRENT_DATE - interval '1 day'
+ AND created_at < CURRENT_DATE
+ """)
+ )
total_payments_week = int(
await session.fetchval(
"SELECT COALESCE(SUM(amount), 0) FROM payments WHERE created_at >= date_trunc('week', CURRENT_DATE)"
@@ -42,17 +50,33 @@ async def handle_stats(callback_query: CallbackQuery, session: Any):
)
)
total_payments_last_month = int(
- await session.fetchval(
- """
+ await session.fetchval("""
SELECT COALESCE(SUM(amount), 0)
FROM payments
WHERE created_at >= date_trunc('month', CURRENT_DATE - interval '1 month')
AND created_at < date_trunc('month', CURRENT_DATE)
- """
- )
+ """)
)
total_payments_all_time = int(await session.fetchval("SELECT COALESCE(SUM(amount), 0) FROM payments"))
+ registrations_today = await session.fetchval("SELECT COUNT(*) FROM users WHERE created_at >= CURRENT_DATE")
+ registrations_yesterday = await session.fetchval("""
+ SELECT COUNT(*) FROM users
+ WHERE created_at >= CURRENT_DATE - interval '1 day'
+ AND created_at < CURRENT_DATE
+ """)
+ registrations_week = await session.fetchval(
+ "SELECT COUNT(*) FROM users WHERE created_at >= date_trunc('week', CURRENT_DATE)"
+ )
+ registrations_month = await session.fetchval(
+ "SELECT COUNT(*) FROM users WHERE created_at >= date_trunc('month', CURRENT_DATE)"
+ )
+ registrations_last_month = await session.fetchval("""
+ SELECT COUNT(*) FROM users
+ WHERE created_at >= date_trunc('month', CURRENT_DATE - interval '1 month')
+ AND created_at < date_trunc('month', CURRENT_DATE)
+ """)
+
all_keys = await session.fetch("SELECT created_at, expiry_time FROM keys")
def count_subscriptions_by_duration(keys):
@@ -78,14 +102,6 @@ async def handle_stats(callback_query: CallbackQuery, session: Any):
subs_all_time = count_subscriptions_by_duration(all_keys)
- registrations_today = await session.fetchval("SELECT COUNT(*) FROM users WHERE created_at >= CURRENT_DATE")
- registrations_week = await session.fetchval(
- "SELECT COUNT(*) FROM users WHERE created_at >= date_trunc('week', CURRENT_DATE)"
- )
- registrations_month = await session.fetchval(
- "SELECT COUNT(*) FROM users WHERE created_at >= date_trunc('month', CURRENT_DATE)"
- )
-
users_updated_today = await session.fetchval("SELECT COUNT(*) FROM users WHERE updated_at >= CURRENT_DATE")
active_keys = await session.fetchval(
@@ -93,8 +109,6 @@ async def handle_stats(callback_query: CallbackQuery, session: Any):
int(datetime.utcnow().timestamp() * 1000),
)
expired_keys = total_keys - active_keys
- moscow_tz = pytz.timezone("Europe/Moscow")
- update_time = datetime.now(moscow_tz).strftime("%d.%m.%y %H:%M:%S")
hot_leads_count = await session.fetchval("""
SELECT COUNT(DISTINCT u.tg_id)
@@ -105,12 +119,17 @@ async def handle_stats(callback_query: CallbackQuery, session: Any):
AND k.tg_id IS NULL
""")
+ moscow_tz = pytz.timezone("Europe/Moscow")
+ update_time = datetime.now(moscow_tz).strftime("%d.%m.%y %H:%M:%S")
+
stats_message = (
"📊 Статистика проекта\n\n"
"👤 Пользователи:\n"
f"├ 🗓️ За день: {registrations_today}\n"
+ f"├ 🗓️ Вчера: {registrations_yesterday}\n"
f"├ 📆 За неделю: {registrations_week}\n"
f"├ 🗓️ За месяц: {registrations_month}\n"
+ f"├ 📅 За прошлый месяц: {registrations_last_month}\n"
f"└ 🌐 Всего: {total_users}\n\n"
"💡 Активность:\n"
f"└ 👥 Сегодня были активны: {users_updated_today}\n\n"
@@ -128,6 +147,7 @@ async def handle_stats(callback_query: CallbackQuery, session: Any):
f" • 🗓️ 12 мес: {subs_all_time['12']}\n\n"
"💰 Финансы:\n"
f"├ 📅 За день: {total_payments_today} ₽\n"
+ f"├ 📆 Вчера: {total_payments_yesterday} ₽\n"
f"├ 📆 За неделю: {total_payments_week} ₽\n"
f"├ 📆 За месяц: {total_payments_month} ₽\n"
f"├ 📆 За прошлый месяц: {total_payments_last_month} ₽\n"