Помощь в message.answer_media_group
from aiogram import Router,Bot,F
from aiogram. fsm. context import FSMContext
from aiogram.types import Message,CallbackQuery,InputMediaPhoto,InputMedia
from keyboards.builder import *
from handlers.queries import *
from aiogram.fsm.state import StatesGroup,State
import gspread
from data.positions import *
from utils.states import promotion
from datetime import datetime
import pytz
router = Router()
file_ids = []
@router.callback_query(lambda call: call.data == 'promotion')
async def promotion_start(call: CallbackQuery,state:FSMContext):
if await user_exists(call.from_user.id):
await state.set_state(promotion.screen)
await call.message.edit_text(text="Предоставьте скриншот игровой статистики. /astats -> Информация о администраторе.",reply_markup=cancel_button())
else:
await call.answer(text="Недоступно",show_alert=True)
@router.message(promotion.screen,F.photo)
async def handle_screen(message:Message,state:FSMContext):
await state.update_data(screen=message.photo[-1].file_id)
await state.set_state(promotion.position)
media_list = []
for photo in message.photo[-1:]:
media_list.append(InputMediaPhoto(media=photo.file_id))
await message.answer_media_group(media=media_list)
current_position = await get_current_position(message.from_user.id)
await message.answer(text="Выберите должность на которую желаете повысится:",reply_markup=promotion_markup(current_position))
В @router.message(promotion.screen,F.photo) я отправляю пару фотографией,мне необходимо получить наевшее качество фотки с помощью for photo in message.photo[-1:],однако функция handle_screen реагирует на каждую фотку индивидуально и триггерит функцию дважды и отправляет каждую фотку в индивидуальном порядке.
Как работает функция на текущий момент: https://imgur.com/a/9l7vEx5
Ответы (2 шт):
Автор решения: Иван Власов
→ Ссылка
Если количество изображений заведомо неизвестно - посмотри в сторону этого расширения https://pypi.org/project/aiogram-media-group/
@router.message(promotion.screen,F.photo)
@media_group_handler(only_album=False)
async def handle_screen(messages: List[types.Message], state:FSMContext):
Автор решения: x3m4ikc
→ Ссылка
Есть библиотека для обработки альбомов.
пример использования:
from aiogram_media_group import media_group_handler
@dp.message(F.media_group_id, F.content_type.in_({'photo'}))
@media_group_handler
async def album_handler(messages: List[types.Message]):
print(messages)