import logging from datetime import datetime from apscheduler.schedulers.asyncio import AsyncIOScheduler from prompts import FACTS, HOLIDAYS from config import ALLOWED_CHAT_ID logger = logging.getLogger(__name__) class BytikScheduler: def __init__(self, bot): self.bot = bot self.scheduler = AsyncIOScheduler(timezone="Europe/Moscow") def start(self): self.scheduler.add_job( self.send_morning_fact, "cron", hour=7, minute=30, timezone="Europe/Moscow", ) self.scheduler.add_job( self.check_holidays, "cron", hour=8, minute=0, timezone="Europe/Moscow", ) self.scheduler.start() logger.info("Планировщик запущен") def shutdown(self): self.scheduler.shutdown() logger.info("Планировщик остановлен") async def send_morning_fact(self): import random fact = random.choice(FACTS) try: await self.bot.send_message(chat_id=ALLOWED_CHAT_ID, text=fact) logger.info(f"Утренняя рассылка отправлена: {fact[:50]}...") except Exception as e: logger.error(f"Ошибка утренней рассылки: {e}") async def check_holidays(self): today = datetime.now().strftime("%m-%d") if today in HOLIDAYS: message = HOLIDAYS[today] try: await self.bot.send_message(chat_id=ALLOWED_CHAT_ID, text=message) logger.info(f"Праздничное поздравление отправлено: {today}") except Exception as e: logger.error(f"Ошибка отправки праздничного сообщения: {e}")