Помощь в 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)
→ Ссылка