+ assets
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
from aiogram import Router
|
||||
from aiogram import Router, F
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import Message, InputMediaPhoto, InputMedia, BufferedInputFile
|
||||
from aiogram.types import Message, InputMediaPhoto, InputMedia, BufferedInputFile, InlineKeyboardButton, CallbackQuery, \
|
||||
InlineKeyboardMarkup
|
||||
|
||||
from repos.dao import DAO
|
||||
|
||||
@@ -11,7 +12,8 @@ router = Router()
|
||||
async def assets_command(msg: Message, dao: DAO):
|
||||
assets = await dao.assets.get_assets(limit=10, offset=0)
|
||||
media_group = []
|
||||
for asset in assets:
|
||||
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:
|
||||
@@ -19,8 +21,26 @@ async def assets_command(msg: Message, dao: DAO):
|
||||
media_group.append(InputMediaPhoto(media=BufferedInputFile(asset_full_info.data, asset_full_info.name)))
|
||||
else:
|
||||
continue
|
||||
mg = await msg.answer_media_group(media_group)
|
||||
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:
|
||||
assets[media_index].tg_photo_file_id = media.photo[-1].file_id
|
||||
await dao.assets.update_asset(assets[media_index].id, assets[media_index])
|
||||
|
||||
|
||||
@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)
|
||||
|
||||
Reference in New Issue
Block a user