add daily project report

This commit is contained in:
Vladless
2025-05-18 00:44:17 +03:00
parent 8bd904af6c
commit 8ea78943fe
3 changed files with 33 additions and 3 deletions
+30 -1
View File
@@ -1,5 +1,6 @@
from datetime import datetime
from typing import Any
import asyncpg
import pytz
@@ -13,7 +14,8 @@ from utils.csv_export import export_hot_leads_csv, export_keys_csv, export_payme
from ..panel.keyboard import AdminPanelCallback, build_admin_back_kb
from .keyboard import build_stats_kb
from bot import bot
from config import DATABASE_URL, ADMIN_ID
router = Router()
@@ -219,3 +221,30 @@ async def handle_export_keys_csv(callback_query: CallbackQuery, session: Any):
except Exception as e:
logger.error(f"Ошибка при экспорте подписок в CSV: {e}")
await callback_query.message.edit_text(text=f"❗ Произошла ошибка при экспорте: {e}", reply_markup=kb)
async def send_daily_stats_report():
try:
conn = await asyncpg.connect(DATABASE_URL)
registrations_today = await conn.fetchval("SELECT COUNT(*) FROM users WHERE created_at >= CURRENT_DATE")
payments_today = int(await conn.fetchval("SELECT COALESCE(SUM(amount), 0) FROM payments WHERE created_at >= CURRENT_DATE"))
active_keys = await conn.fetchval("SELECT COUNT(*) FROM keys WHERE expiry_time > $1", int(datetime.utcnow().timestamp() * 1000))
update_time = datetime.now(pytz.timezone("Europe/Moscow")).strftime("%d.%m.%y %H:%M")
text = (
"🗓️ <b>Сводка за день</b>\n\n"
f"👤 Новых пользователей: <b>{registrations_today}</b>\n"
f"💰 Оплачено: <b>{payments_today} ₽</b>\n"
f"🔐 Активных ключей: <b>{active_keys}</b>\n\n"
f"⏱️ <i>{update_time} МСК</i>"
)
for admin_id in ADMIN_ID:
await bot.send_message(admin_id, text)
await conn.close()
except Exception as e:
logger.error(f"[Stats] Ошибка при отправке ежедневной статистики: {e}")
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -1
View File
@@ -45,4 +45,5 @@ yookassa==3.3.0
httpx
qrcode
pillow
rich
rich
apscheduler