Ошибка, с которой вы сталкиваетесь, связана с тем, что при репосте сториз в Telegram нельзя добавлять описание (caption). При использовании `SendStoryRequest` для создания репоста, параметры `media` и `caption` в этом контексте имеют ограничения.
Если вы хотите сделать репост существующей сториз и при этом добавить собственное описание, вам придется использовать другой подход. Вы можете скачать оригинальную сториз, а затем загрузить её как новую с вашим собственным описанием.
Вот как это можно сделать:
1. Получите нужную сториз.
2. Сохраните её локально или подготовьте для загрузки.
3. Опубликуйте сториз с вашим описанием.
Пример кода ниже демонстрирует это:
```python
from telethon import TelegramClient, events, functions, types
async def repost_story_with_caption(client, from_user_id, access_hash, story_id, caption_text):
# Получение информации о сториз
story = await client(functions.stories.GetStoriesRequest(
peer=types.InputPeerUser(user_id=from_user_id, access_hash=access_hash),
limit=100
))
# Находим нужную сториз
target_story = None
for s in story.stories:
if s.id == story_id:
target_story = s
break
if target_story is None:
print("Сториз не найдена")
return
# Скачиваем медиафайл
if target_story.media:
downloaded_media = await client.download_media(target_story.media)
# Загружаем сториз с вашим описанием
await client(functions.stories.SendStoryRequest(
peer=await client.get_input_entity('me'),
media=downloaded_media,
privacy_rules=[types.InputPrivacyValueAllowAll()],
caption=caption_text,
period=86400
))
else:
print("Сториз не содержит медиафайл")
# Использование функции
# await repost_story_with_caption(client, from_user_id, access_hash, story_id, "Ваше описание здесь")
```
Этот код сначала получает сториз пользователя, затем находит нужную, загружает ее локально и отправляет как новую сториз с вашим текстом. Не забудьте заменить `from_user_id`, `access_hash`, `story_id` и `caption_text` на соответствующие значения.