Чтобы загрузить несколько фотографий на платформу Telegraph с помощью вашего бота, вам нужно немного изменить существующий код. Основная идея заключается в том, чтобы обрабатывать несколько фотографий, загружая каждую из них и собирая ссылки в список, а затем отправить пользователю окончательный текст с ссылками.
Вот как вы можете это сделать:
1. Создайте новую асинхронную функцию для загрузки списка фотографий.
2. Обработайте каждую фотографию в рамках этой функции, добавляя ссылки в список.
3. Обновите текст сообщения, чтобы включить все ссылки.
Вот пример кода:
```python
import os
user_data = {}
media_groups = {}
# Функция загрузки на Telegraph
async def upload_to_telegraph(photo_path):
try:
response = upload_file(photo_path) # Предположим, что upload_file реализует нужный API
print(f"Ответ от Telegraph: {response}")
if isinstance(response, list) and len(response) > 0:
return f"https://telegra.ph{response[0]}"
else:
print(f"Unexpected response format: {response}")
return None
except Exception as e:
print(f"Error uploading to Telegraph: {e}")
return None
# Функция получения ссылок на изображения
async def get_images_links(photo_file_ids):
links = []
for photo_file_id in photo_file_ids:
photo_path = f"photo_{photo_file_id}.jpg"
# Скачиваем файл
await bot.download_file_by_id(file_id=photo_file_id, destination=photo_path)
# Загружаем на Telegraph и удаляем файл
image_link = await upload_to_telegraph(photo_path)
os.remove(photo_path)
if image_link:
links.append(image_link)
return links
# Функция формирования текста с ссылками
def get_message_text(links, text):
text = text.replace('\n', ' ') if text else ""
while text.count(" ") > 0:
text = text.replace(" ", " ")
for link in links:
text += f"\n{link}"
return text
# Обработка сообщений
async def handle_message(message):
# Предполагаем, что message.media содержит список photo_file_ids
photo_file_ids = [photo.file_id for photo in message.media] # Извлечение file_id из сообщения
text = message.text
# Получаем ссылки на все изображения
links = await get_images_links(photo_file_ids)
# Формируем сообщение с текстом и ссылками
final_text = get_message_text(links, text)
# Отправляем сообщение пользователю
await bot.send_message(chat_id=message.chat.id, text=final_text)
```
### Важные моменты:
- Обратите внимание на то, что функция `get_images_links` обрабатывает список `photo_file_ids`, загружая каждое изображение на Telegraph и собирая ссылки в список `links`.
- Функция `get_message_text` создает итоговое сообщение для пользователя, включая все ссылки.
- Убедитесь, что `upload_file` и другие функции библиотеки Telegram API реализованы правильно и работают с корректными параметрами.