"""Telegram inline-keyboard handlers for the daily scheduler admin flow. Usage (in aiws.py): from scheduler.telegram_admin_handler import create_daily_scheduler_router from scheduler.daily_scheduler import DailyScheduler daily_scheduler = DailyScheduler(...) dp.include_router(create_daily_scheduler_router(daily_scheduler)) """ import logging from aiogram import F, Router from aiogram.types import CallbackQuery from scheduler.daily_scheduler import ( CB_CANCEL, CB_POST, CB_REGEN_ALL, CB_REGEN_IMG, CB_REGEN_MORE, DailyScheduler, ) logger = logging.getLogger(__name__) def create_daily_scheduler_router(scheduler: DailyScheduler) -> Router: """Return an aiogram Router with all callback handlers bound to *scheduler*.""" router = Router(name="daily_scheduler") @router.callback_query(F.data.startswith(CB_POST + ":")) async def on_post(callback: CallbackQuery): generation_id = callback.data.split(":", 1)[1] await callback.answer("Публикую в Instagram...") await scheduler.handle_post( generation_id=generation_id, message_id=callback.message.message_id, chat_id=callback.message.chat.id, ) @router.callback_query(F.data.startswith(CB_REGEN_ALL + ":")) async def on_regen_all(callback: CallbackQuery): generation_id = callback.data.split(":", 1)[1] await callback.answer("Перезапускаю с нуля...") await scheduler.handle_regen_all( generation_id=generation_id, message_id=callback.message.message_id, chat_id=callback.message.chat.id, ) @router.callback_query(F.data.startswith(CB_REGEN_IMG + ":")) async def on_regen_img(callback: CallbackQuery): generation_id = callback.data.split(":", 1)[1] await callback.answer("Генерирую новое изображение...") await scheduler.handle_regen_image( generation_id=generation_id, message_id=callback.message.message_id, chat_id=callback.message.chat.id, ) @router.callback_query(F.data.startswith(CB_REGEN_MORE + ":")) async def on_regen_more(callback: CallbackQuery): generation_id = callback.data.split(":", 1)[1] await callback.answer("Генерирую 2 варианта...") await scheduler.handle_regen_more( generation_id=generation_id, message_id=callback.message.message_id, chat_id=callback.message.chat.id, ) @router.callback_query(F.data.startswith(CB_CANCEL + ":")) async def on_cancel(callback: CallbackQuery): generation_id = callback.data.split(":", 1)[1] await callback.answer("Отменено") await scheduler.handle_cancel( generation_id=generation_id, message_id=callback.message.message_id, chat_id=callback.message.chat.id, ) return router