models + refactor

This commit is contained in:
xds
2026-03-17 16:46:32 +03:00
parent e011805186
commit 14f9e7b7e9
15 changed files with 979 additions and 83 deletions

View File

@@ -0,0 +1,82 @@
"""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