83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
"""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
|