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, saving from storage.message_storage import save_message def register_handlers(dp: Dispatcher, state: BotState): @dp.message(Command("rasp")) @saving 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}")