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}")
