Как в 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)