Как в aiogram ловить и отправлять фото одним сообщением?

Нужно, что бы бот ловил несколько фото, отправленных одним сообщением, и так же одним сообщением пересылал их в канал.Пробовал сделать так:

@dp.message_handler(content_types=["photo"])
async def get_foto(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if type(data.get('photo')) is list:
            data['photo'].append(message.photo[-1].file_id)
            data["time"] = time()
            return
        else:
            data['photo'] = [message.photo[-1].file_id]
            data["time"] = time()
    wait_time = 3
    while time() - data["time"] < wait_time:
        await sleep(0.1)
    print(data['photo'])
    #poli = data['photo'][0]
    poli = types.MediaGroup()
    poli.attach_photo(data['photo'][0])
    #print(poli['media'][0])
    await bot.send_media_group( chat_id = config.chat_id, media = poli)
    async with state.proxy() as data:
        del data["time"]
        del data["photo"]

но не сработало. ловит и отправляет только первую фотку


Ответы (1 шт):

Автор решения: oleksandrigo

Попробуйте так, у меня работает

@dp.message_handler(content_types=["photo"])
async def get_foto(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if type(data.get('photo')) is list:
            data['photo'].append(message.photo[-1].file_id)
            data["time"] = time()
            return
        else:
            data['photo'] = [message.photo[-1].file_id]
            data["time"] = time()
    wait_time = 3
    while time() - data["time"] < wait_time:
        await sleep(0.5)
    async with state.proxy() as data:
        poli = types.MediaGroup()
        for i in data['photo']:
            poli.attach_photo(photo=i)
        del data["time"]
        del data["photo"]

    await bot.send_media_group(chat_id=message.chat.id, media=poli)
→ Ссылка