Доброго времени суток. Уже несколько раз сталкивался с различными проблемами при обработке группы медиа в Телеграм посте: то кнопки (reply_markup) не прикрепляются, то подписи (caption) редактируются сразу ко всем фото/видео поста.
Суть проблемы сейчас:
Нужно сделать подпись к любому типу поста. Хендлер ловит все типы контента. Если это текст - всё просто. С медиа, а точнее с группой медиа, сложнее.
Написал почти полностью рабочий код, где описание редактируется там, где оно есть. Но иногда на канале посты с картинками или видео не содержат описания.
@dp.channel_post_handler(content_types=['any'])
async def auto_redactor(message: types.Message):
text = message.text
caption = message.caption
if (isinstance(text, str)):
await message.edit_text(f'{text}\n\подпись к текстовому посту',parse_mode="HTML")
elif (isinstance(caption, str)):
await message.edit_caption(f'{caption}\n\nподпись к посту с контентом',parse_mode="HTML")
Вышел из положения тем, что сделал проверку, если описания нет, то переменная будет пустой строкой. Публикуем переменную описания + автоподпись.
@dp.channel_post_handler(content_types=['any'])
async def auto_redactor(message: types.Message):
text = message.text
if isinstance(message.caption, str):
caption = message.caption
else:
caption = ''
if hasattr(message, 'text') and isinstance(text, str):
await message.edit_text(f'{text}\n\nподпись к текстовому посту, parse_mode="HTML")
elif hasattr(message, 'caption'):
await message.edit_caption(f'{caption}\n\nподпись к посту с контентом\n', parse_mode="HTML")
Только вот в чём беда: когда медиа несколько, (в том числе если в первом есть описание а в остальных нет) — подписи добавляются к каждому фото (так как в группе контента разные message.id для каждого фото/видео тд) и по итогу не отображаются.
Как решить эту проблему? Ответов на просторах интернета не нашёл. Мне нужно, чтобы из группы контента описание добавлялось только к первому сообщению.