Как отправить альбом с помощью aiogram?
У меня есть этот код, он берет видео, если нажать кнопку подтверждения, видео отправляется в админ/чат. Если человек отправляет 2 и более видео, то бот отправляет только первое видео. Как сделать так, чтобы бот отправлял все видео, которые прислал пользователь? ИЛИ лучше, чтобы он просто переслал видео и ответил на него каким-нибудь текстом?
P.S.: Из видео может быть прислан еще какой-то текст (подпись)
@dp.callback_query_handler(lambda c: c.data == "confirm", state=NewsSubmission.confirm_submission)
async def confirm_news(callback_query: types.CallbackQuery, state: FSMContext):
callback_query.message.reply
data = await state.get_data()
city = data['city']
news_message = data['news']
if news_message.content_type == 'text':
await bot.send_message(ADMIN_CHAT_ID, f'Нова новина з <b>{city}</b>\n'
f'Від <b>{callback_query.from_user.full_name}</b>\n'
f'З ніком - <b>@{callback_query.from_user.username}</b>\n\n'
f'<i>{news_message.text}</i>', parse_mode='html')
await callback_query.message.reply(f"✅ Ваше повідомлення успішно відправлено. Чекайте відповіді від адміністратора.\nЯкщо ви хочете написати ще одне повідомлення, продовжуйте писати у цьому чаті.")
elif news_message.content_type == types.ContentType.PHOTO:
album = data.get('album')
m = await bot.send_photo(ADMIN_CHAT_ID, news_message.photo[-1].file_id, caption='news_message.caption')
await callback_query.message.reply(f"✅ Ваше фото успішно відправлено. Чекайте відповіді від адміністратора.\nЯкщо ви хочете написати ще одне повідомлення, продовжуйте писати у цьому чаті.!")
await m.reply(f'Нова новина з фото від міста <b>{city}</b>\n'
f'Від <b>{callback_query.from_user.full_name}</b>\n'
f'З ніком - <b>@{callback_query.from_user.username}</b>\n\n', parse_mode='html')
await state.update_data(album=album)
elif news_message.content_type == types.ContentType.VIDEO:
album = data.get('album')
m=await bot.send_media_group(ADMIN_CHAT_ID, news_message.video.file_id, caption=news_message.caption)
await callback_query.message.reply(f"✅ Ваше відео успішно відправлено. Чекайте відповіді від адміністратора.\nЯкщо ви хочете написати ще одне повідомлення, продовжуйте писати у цьому чаті!")
await m.reply(f'Нова новина з відео від міста <b>{city}</b>\n'
f'Від <b>{callback_query.from_user.full_name}</b>\n'
f'З ніком - <b>@{callback_query.from_user.username}</b>\n\n', parse_mode='html')
await state.update_data(album=album)
await state.update_data(news=None)
await NewsSubmission.submit_news.set()
Ответы (1 шт):
Автор решения: RottenRat
→ Ссылка
Насколько я понял вашу проблему (переводил через переводчик), вам необходимо вместо того, чтобы отправлять сообщение, просто отправлять его копию. Можно использовать метод copyMessage, вместо sendMessage
Ну или проще говоря замените все
await bot.send_...
На
await bot.copy_message(ADMIN_CHAT_ID,callback_query.from_user.id,callback_query.message.id)
или
await callback_query.message.copy_to(ADMIN_CHAT_ID)