Как передать несколько файлов в aiogram 3?

Как отправить два файла вместе в группе через Telegram бота, если они хранятся в папке с ботом? Я знаю, что в Message есть параметр answer_media_group, но откуда мне взять значение для параметра InputMediaDocument?
  • 7 октября 2023 г. 18:17
Ответы на вопрос 1
Для передачи нескольких файлов в Aiogram 3 вы можете воспользоваться методом `send_media_group` класса `types.Bot` или методом `send_media_group` класса `types.ChatActions`.

Прежде всего, вам нужно загрузить файлы с помощью метода `types.InputFile` и передать их в метод `send_media_group`. 

Вот пример кода, который принимает путь к папке с файлами и отправляет все файлы, находящиеся в этой папке:

```python
import os
from aiogram import Bot, types

# Создаем экземпляр бота
bot = Bot(token='YOUR_TOKEN')

async def send_files(folder_path, chat_id):
    # Список файлов в указанной папке
    files = os.listdir(folder_path)

    # Итерируемся по списку файлов и отправляем их
    media_list = []
    for file in files:
        # Путь к файлу
        file_path = os.path.join(folder_path, file)
        # Загружаем файл с помощью types.InputFile
        input_file = types.InputFile(file_path)
        # Создаем объект types.InputMediaDocument
        input_media = types.InputMediaDocument(input_file)
        # Добавляем объект в список
        media_list.append(input_media)

    # Отправляем список файлов вместе
    await bot.send_media_group(chat_id=chat_id, media=media_list)

# Вызов функции с указанием пути к папке с файлами и ID чата
folder_path = 'путь_к_папке_с_файлами'
chat_id = 'ID_чата'
await send_files(folder_path, chat_id)
```

Не забудьте заменить `'YOUR_TOKEN'` на ваш токен бота, `'путь_к_папке_с_файлами'` на актуальный путь к вашей папке с файлами и `'ID_чата'` на актуальный ID чата, куда вы хотите отправить файлы.

Теперь, когда вы вызываете эту функцию, все файлы в указанной папке будут отправлены вместе в группу через бота.
Похожие вопросы