Files
ai-char-bot/scheduler/telegram_admin_handler.py
2026-03-17 16:46:32 +03:00

83 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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