Как можно прикрепить caption к media group в Telegram (aiogram 3)?
@admin_router.message(F.text == 'get_news', AdminProtect())
async def start_change(message: Message, state: FSMContext):
post = await get_post()
media = []
if post.photo_id:
photo_ids = post.photo_id.split('|')
media.extend([InputMediaPhoto(media=photo_id) for photo_id in photo_ids])
if post.video_id:
video_ids = post.video_id.split('|')
media.extend([InputMediaVideo(media=video_id) for video_id in video_ids])
if media:
await message.answer_media_group(media=media, caption=f'{post.text}')
Я думал, что передать текст в сообщение можно при помощи caption, но нет. Может существует еще какой-то способ передавать различный файлы с подписью?
Ответы (1 шт):
Автор решения: Рустам Рысаев
→ Ссылка
более того подпись может быть не обязательно у первой фотографии\файла.
# Хендлер для загрузки альбома фотографий
@dp.message_handler(is_media_group=True, content_types=types.ContentType.ANY, state="*")
async def handle_albums(message: types.Message, album: List[types.Message], state: FSMContext):
"""Обрабатываем альбом с текстом и фото"""
user_id = message.from_user.id
chat_id = message.chat.id
if not album:
return
title, description = None, None
for item in album:
if item.content_type == types.ContentType.VIDEO and item.caption:
title = item.caption.split("\n")[0] if item.caption else None
raw_description = "\n".join(item.caption.split("\n")[1:]) if len(item.caption.split("\n")) > 1 else None
if not title:
for item in album:
if item.content_type == types.ContentType.PHOTO and item.caption:
title = item.caption.split("\n")[0]
raw_description = "\n".join(item.caption.split("\n")[1:]) if len(item.caption.split("\n")) > 1 else None