models + refactor
This commit is contained in:
82
scheduler/telegram_admin_handler.py
Normal file
82
scheduler/telegram_admin_handler.py
Normal 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
|
||||
Reference in New Issue
Block a user