From e15aed6c19cb31ca738523aa59caa682c0154dcb Mon Sep 17 00:00:00 2001 From: Egor Date: Mon, 12 Jan 2026 15:23:27 +0300 Subject: [PATCH] Update main.py --- main.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/main.py b/main.py index 07e992bd..aa1ff426 100644 --- a/main.py +++ b/main.py @@ -36,6 +36,7 @@ from app.services.referral_contest_service import referral_contest_service from app.services.contest_rotation_service import contest_rotation_service from app.services.nalogo_queue_service import nalogo_queue_service from app.services.traffic_monitoring_service import traffic_monitoring_scheduler +from app.services.daily_subscription_service import daily_subscription_service from app.utils.startup_timeline import StartupTimeline from app.utils.timezone import TimezoneAwareFormatter from app.utils.log_handlers import LevelFilterHandler, ExcludePaymentFilter @@ -174,6 +175,7 @@ async def main(): maintenance_task = None version_check_task = None traffic_monitoring_task = None + daily_subscription_task = None polling_task = None web_api_server = None telegram_webhook_enabled = False @@ -240,6 +242,7 @@ async def main(): maintenance_service.set_bot(bot) broadcast_service.set_bot(bot) traffic_monitoring_scheduler.set_bot(bot) + daily_subscription_service.set_bot(bot) from app.services.admin_notification_service import AdminNotificationService @@ -597,6 +600,21 @@ async def main(): traffic_monitoring_task = None stage.skip("Мониторинг трафика отключен настройками") + async with timeline.stage( + "Суточные подписки", + "💳", + success_message="Сервис суточных подписок запущен", + ) as stage: + if daily_subscription_service.is_enabled(): + daily_subscription_task = asyncio.create_task( + daily_subscription_service.start_monitoring() + ) + interval_minutes = daily_subscription_service.get_check_interval_minutes() + stage.log(f"Интервал проверки: {interval_minutes} мин") + else: + daily_subscription_task = None + stage.skip("Суточные подписки отключены настройками") + async with timeline.stage( "Сервис проверки версий", "📄", @@ -661,6 +679,7 @@ async def main(): f"Мониторинг: {'Включен' if monitoring_task else 'Отключен'}", f"Техработы: {'Включен' if maintenance_task else 'Отключен'}", f"Мониторинг трафика: {'Включен' if traffic_monitoring_task else 'Отключен'}", + f"Суточные подписки: {'Включен' if daily_subscription_task else 'Отключен'}", f"Проверка версий: {'Включен' if version_check_task else 'Отключен'}", f"Отчеты: {'Включен' if reporting_service.is_running() else 'Отключен'}", ] @@ -715,6 +734,16 @@ async def main(): traffic_monitoring_scheduler.start_monitoring() ) + if daily_subscription_task and daily_subscription_task.done(): + exception = daily_subscription_task.exception() + if exception: + logger.error(f"Сервис суточных подписок завершился с ошибкой: {exception}") + if daily_subscription_service.is_enabled(): + logger.info("🔄 Перезапуск сервиса суточных подписок...") + daily_subscription_task = asyncio.create_task( + daily_subscription_service.start_monitoring() + ) + if auto_verification_active and not auto_payment_verification_service.is_running(): logger.warning( "Сервис автопроверки пополнений остановился, пробуем перезапустить..." @@ -784,6 +813,15 @@ async def main(): except asyncio.CancelledError: pass + if daily_subscription_task and not daily_subscription_task.done(): + logger.info("ℹ️ Остановка сервиса суточных подписок...") + daily_subscription_service.stop_monitoring() + daily_subscription_task.cancel() + try: + await daily_subscription_task + except asyncio.CancelledError: + pass + logger.info("ℹ️ Остановка сервиса отчетов...") try: await reporting_service.stop()