Files
ai-char-bot/routers/assets_router.py
2026-02-03 16:11:36 +03:00

47 lines
2.2 KiB
Python

from aiogram import Router, F
from aiogram.filters import Command
from aiogram.types import Message, InputMediaPhoto, InputMedia, BufferedInputFile, InlineKeyboardButton, CallbackQuery, \
InlineKeyboardMarkup
from repos.dao import DAO
router = Router()
@router.message(Command("assets"))
async def assets_command(msg: Message, dao: DAO):
assets = await dao.assets.get_assets(limit=10, offset=0)
media_group = []
keyboard = []
for index, asset in enumerate(assets):
if asset.tg_photo_file_id:
media_group.append(InputMediaPhoto(media=asset.tg_photo_file_id))
elif asset.tg_doc_file_id:
asset_full_info = await dao.assets.get_asset(asset.id)
asset = asset_full_info
media_group.append(InputMediaPhoto(media=BufferedInputFile(asset_full_info.data, asset_full_info.name)))
else:
continue
keyboard.append(InlineKeyboardButton(text=F"{index + 1}", callback_data=f"asset_doc_{asset.id}"))
mg = await msg.answer_media_group(media_group,
reply_markup=InlineKeyboardMarkup(inline_keyboard=[keyboard]))
await msg.answer("Для запроса документов выбери фото и на кнопку ниже:",
reply_markup=InlineKeyboardMarkup(inline_keyboard=[keyboard]))
for media_index, media in enumerate(mg):
if assets[media_index].tg_photo_file_id is None:
await dao.assets.set_tg_photo_file_id(assets[media_index].id, media.photo[-1].file_id)
@router.callback_query(F.data.startswith("asset_doc_"))
async def assets_callback_query(call: CallbackQuery, dao: DAO):
await call.answer()
assets_id = call.data.split("asset_doc_")[-1]
asset = await dao.assets.get_asset(assets_id, with_data=False)
if asset.tg_doc_file_id:
await call.message.answer_document(asset.tg_doc_file_id)
else:
asset_full_info = await dao.assets.get_asset(assets_id)
doc = await call.message.answer_document(BufferedInputFile(asset_full_info.data, asset_full_info.name))
asset_full_info.tg_doc_file_id = doc.document.file_id
await dao.assets.update_asset(assets_id, asset_full_info)