Как сделать, чтобы бот отправлял альбом из фотографий, отправленных пользователем? Как получать несколько фото в одном хендлере Aiogram?
Есть некий хендлер который ловит в себя фото и к примеру пересылает куда-то там.
@dp.message_handler(content_types=types.ContentTypes.PHOTO)
async def send_to_admin(message: types.Message):
await bot.send_photo(chat_id=ADMIN_ID, photo=message.photo[-1].file_id)
Так вот если этот юзер(который присылает боту фото) пришлет не одно а два и более, и они буду группированы вот так.
То возникает странная ситуация, хендлер реагирует на каждое отдельное фото, собственно отдельно. По факту он срабатывает дважды (по 1-му на фото), то есть наша message.photo имеет только вариации одной из фоток (размеры) но не имеет другого фото в себе.
Я написал программу, которая отправляет в чат альбом, но бот также отправляет первое фото из альбома:

Вот мой код:
media = []
async def get_state2(message: types.Message, state: FSMContext):
global media
if message.text == "Назад":
await FSMAdmin.state1.set()
await bot.send_message(message.from_user.id, 'Выберите город, в котором хотите выписать штраф',
reply_markup=clubs)
else:
photos = message.photo[-1].file_id.split()
media.append(InputMediaPhoto(photos[-1]))
media_files = media
await bot.send_media_group(chat_id=config.chat_id_zel, media=media)
await FSMAdmin.next()
await bot.send_message(message.from_user.id, 'Напишите нарушение', reply_markup=back_button_admin)
Ответы (1 шт):
Автор решения: Creeper Hack
→ Ссылка
class Form(StatesGroup):
a = State()
async def give_photo_group(msg: types.Message: state: FSMContext):
async with state.proxy() as data:
if 'photos' in data.keys():
data['photos'] = data['photos'].append(msg.photo[-1].file_id)
else:
data['photos'] = []
await Form.a.set()
async def echo_photo_group(msg: types.Message, state: FSMContext):
async with state.proxy() as data:
photo_ids = data['photos']
await state.finish()
photo_group = types.MediaGroup()
for file_id in photo_ids:
photo_group.attach_photo(file_id)
await bot.send_media_group(photo_group)
