Files
wiki/tasks/bytik/scheduler.py
2026-04-15 01:00:01 +03:00

54 lines
1.8 KiB
Python

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