Ошибка в пересылке поста с видео , фотографиями и текстом из телеграмм каналов
Вроде логику обработки поста написал правильно , но не может переслать пост в котором несколько фотографий с видео . Ошибка при обработке медиа:
HTTP Client says - ClientOSError: [Errno 2] Can not write request body for
Вот мой код обработки поста , полученного с помощью библиотеки telethon
router = Router()
media_groups = {}
async def handle_media(last_post, client, bot, TARGET_CHANNEL, text):
"""
Обрабатывает медиафайлы (фото или документы) из последнего поста и отправляет их в целевой канал.
"""
try:
if not last_post.media:
# Если нет медиа, просто отправляем текстовое сообщение
await bot.send_message(chat_id=TARGET_CHANNEL, text=text)
print("Текстовое сообщение отправлено.")
return
# Проверка наличия медиа
media_group_builder = media_group.MediaGroupBuilder(caption=text)
# Если это фото
if isinstance(last_post.media, MessageMediaPhoto):
file_name = "temp_photo.jpg"
await client.download_media(last_post.media, file_name)
if os.path.exists(file_name):
media_group_builder.add_photo(media=FSInputFile(file_name)) # Добавляем фото в медиа-группу
os.remove(file_name) # Удаляем временный файл
else:
raise FileNotFoundError(f"Файл {file_name} не был найден!")
# Если это видео (все видео в Telethon — это документы)
elif isinstance(last_post.media, MessageMediaDocument):
document = last_post.media.document
if hasattr(document, 'video'): # Проверяем, является ли документ видео
file_name = "temp_video.mp4"
await client.download_media(last_post.media, file_name)
if os.path.exists(file_name):
media_group_builder.add_video(media=FSInputFile(file_name)) # Добавляем видео в медиа-группу
os.remove(file_name) # Удаляем временный файл
else:
raise FileNotFoundError(f"Файл {file_name} не был найден!")
# Сформированная медиа-группа
media_group_list = media_group_builder.build()
# Проверка размера медиа-группы и отправка
if len(media_group_list) > 10:
chunk_size = 10
for i in range(0, len(media_group_list), chunk_size):
await bot.send_media_group(chat_id=TARGET_CHANNEL, media=media_group_list[i:i + chunk_size])
else:
await bot.send_media_group(chat_id=TARGET_CHANNEL, media=media_group_list)
print("Медиа группа отправлена!")
except Exception as e:
print(f"Ошибка при обработке медиа: {e}")
await bot.send_message(chat_id=TARGET_CHANNEL, text=f"Ошибка при обработке медиа: {e}")