Files
new_lottery_bot/src/core/scheduler.py
Andrey K. Choi 0fdad07d82
Some checks failed
continuous-integration/drone/pr Build is failing
refactor
2026-02-17 00:22:42 +09:00

57 lines
2.2 KiB
Python

"""
Планировщик фоновых задач для бота
"""
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
import logging
from src.core.activity_service import ActivityService
logger = logging.getLogger(__name__)
class BotScheduler:
"""Планировщик задач для бота"""
def __init__(self):
self.scheduler = AsyncIOScheduler()
def setup_jobs(self):
"""Настройка всех периодических задач"""
# Проверка неактивных пользователей каждый день в 03:00
self.scheduler.add_job(
self._check_inactive_users,
trigger=CronTrigger(hour=3, minute=0),
id='check_inactive_users',
name='Проверка неактивных пользователей',
replace_existing=True
)
logger.info("Планировщик задач настроен")
async def _check_inactive_users(self):
"""Проверка и блокировка неактивных пользователей"""
try:
logger.info("Запуск проверки неактивных пользователей")
marked = await ActivityService.check_and_mark_inactive_users()
logger.info(f"Проверка завершена. Неактивных пользователей помечено: {marked}")
except Exception as e:
logger.error(f"Ошибка при проверке неактивных пользователей: {e}", exc_info=True)
def start(self):
"""Запуск планировщика"""
self.setup_jobs()
self.scheduler.start()
logger.info("Планировщик задач запущен")
def shutdown(self):
"""Остановка планировщика"""
if self.scheduler.running:
self.scheduler.shutdown()
logger.info("Планировщик задач остановлен")
# Глобальный экземпляр планировщика
bot_scheduler = BotScheduler()