Как исправить message photo, message video, media_group_id?
Подскажите, как исправить, если публикую, в группе телеграм, 2 фото и видео, выскакивает 3 текста, с media_group_id, message photo, message video, хотя нужен, только один, если публикую 5 фото, выскакивает 2 текста, с media_group_id, message photo и только, когда одно фото, показывает, один текст, с media_group_id.
Код:
@dp.message_handler(content_types=['photo', 'video'])
async def get_photo_video(message: types.Message, state: FSMContext):
current_user = message.from_user.id
media_group_id = user_data[current_user].get('media_group_id', 0)
if media_group_id == message.media_group_id:
# если не изменилось, значит это не первое фото в группе и ничего постить не надо
pass
else:
# в остальном случае - значит начало нового блока картинок - обновляем id группы и отсылаем сообщение
user_data[current_user]['media_group_id'] = message.media_group_id
await bot.send_message(message.chat.id, f"Текст media_group_id ")
return
if message.photo:
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 = 2
while time() - data["time"] < wait_time:
await sleep(0.3)
async with state.proxy() as data:
await bot.send_message(message.chat.id, "Текст message photo")
if data.get('time'):
del data["time"]
del data["photo"]
elif message.video:
async with state.proxy() as data:
if type(data.get('video')) is list:
data['video'].append(message.video.file_id)
data["time"] = time()
return
else:
data['video'] = [message.video.file_id]
data["time"] = time()
wait_time = 2
while time() - data["time"] < wait_time:
await sleep(0.3)
async with state.proxy() as data:
await bot.send_message(message.chat.id, "Текст message video")
if data.get('time'):
del data["time"]
del data["video"]
return
Источник: Stack Overflow на русском