Files
myfirstprogram/handlers/schedule.py
T
2025-10-05 23:16:19 +03:00

53 lines
2.2 KiB
Python

from aiogram import types, Dispatcher
from aiogram.filters import Command
from models.state import BotState
from services.schedule_service import ScheduleService
from utils.antispam import is_chat_spam
from storage.message_storage import save_message
def register_handlers(dp: Dispatcher, state: BotState):
@dp.message(Command("rasp"))
async def send_schedule(message: types.Message):
"""Отправка расписания"""
if is_chat_spam(message.chat.id, state):
await message.answer("НЕ СПАМЬТЕ!!!")
return
args = message.text.split(maxsplit=2)
group = args[1].strip() if len(args) > 1 else "30тс"
day_offset = int(args[2]) if len(args) > 2 and args[2].isdigit() else 0
schedule_service = ScheduleService()
text, url, day, month = await schedule_service.get_schedule(group, day_offset)
# Отправляем текст расписания
msg = await message.answer(text, parse_mode="Markdown")
save_message(message.chat.id, msg.message_id)
@dp.message(Command("prasp"))
async def send_schedule(message: types.Message):
"""Отправка расписания"""
if is_chat_spam(message.chat.id, state):
await message.answer("НЕ СПАМЬТЕ!!!")
return
args = message.text.split(maxsplit=2)
group = args[1].strip() if len(args) > 1 else "30тс"
day_offset = int(args[2]) if len(args) > 2 and args[2].isdigit() else 0
schedule_service = ScheduleService()
clip_png, url, day, mouth = await schedule_service.get_pschedule(group, day_offset)
if clip_png:
save_message(message.chat.id, message.message_id)
msg = await message.answer_photo(
types.BufferedInputFile(clip_png, filename=f"{group}.png"),
caption=f"Расписание для {group} на {day}.{mouth:02d}"
)
save_message(message.chat.id, msg.message_id)
state.file_id_cache[group.lower()] = msg.photo[-1].file_id
else:
await message.answer(f"Не удалось найти расписание для {group}")