Как использовать API Telegram для загрузки больших файлов в aiogram с использованием локального сервера Telegram?

У меня возникла ошибка при попытке загрузки файла в telegram-bot-api из исходников. Я получаю ошибку "aiogram.exceptions.TelegramBadRequest: Telegram server says - Bad Request: file is too big". Как исправить эту проблему? Вот мой код для запуска telegram api:

```python
def start_server_task():
    serv_path = f'{Path.cwd()}\\telegram-bot-api\\bin\\telegram-bot-api.exe'
    os.system(f'{serv_path} --api-id={conf.api_id} --api-hash={conf.hash} --http-port=8080')
```

Инициализация Bot объекта:

```python
session = AiohttpSession(
    api=TelegramAPIServer.from_base('http://localhost:8080')
)
bot = Bot(token=conf.tg_api_key, session=session)
```

Код запуска бота:

```python
async def start_bot():
    bot_globals.dp = Dispatcher(storage=MemoryStorage())
    bot_globals.dp.include_router(router)

    await bot_globals.bot.delete_webhook(drop_pending_updates=True)
    await bot_globals.dp.start_polling(bot_globals.bot)
```

Код загрузки файла:

```python
file = await bot.get_file(data['video_id'])
shutil.move(f"-тут папка, в которой local api хранит файлы-/{file.file_path}", f'sorted_videos/{data["model"]}/{filesname}.mp4')
```

Может быть, я упустил какой-то параметр при запуске. Пожалуйста, помогите мне разобраться с этой проблемой.
  • 15 ноября 2023 г. 14:59
Ответы на вопрос 3
Ошибка "TelegramBadRequest: Telegram server says - Bad Request: file is too big" возникает, когда размер загружаемого файла превышает максимально допустимый размер файла для Telegram API. Максимально допустимый размер файла зависит от способа загрузки файла и типа файла.

Если вы пытаетесь загрузить файл через метод `bot.get_file()`, то это означает, что файл уже был загружен на сервер Telegram. В этом случае вы не сможете изменить максимально допустимый размер файла. Вместо этого вам следует рассмотреть другие способы загрузки файла, например, через метод `bot.send_document()`.

Если вы используете локальный сервер Telegram для загрузки файлов, у вас есть возможность изменить максимально допустимый размер файла. Для этого вам нужно изменить параметры запуска локального сервера Telegram.

При запуске локального сервера Telegram вы можете использовать параметр `--max-upload-size` для указания максимально допустимого размера файла в байтах, например:

```python
os.system(f'{serv_path} --api-id={conf.api_id} --api-hash={conf.hash} --http-port=8080 --max-upload-size=52428800')
```

В приведенном выше примере максимально допустимый размер файла установлен на 50 мегабайт (52428800 байт). Вы можете изменить это значение в соответствии с вашими требованиями.

Обратите внимание, что изменение максимально допустимого размера файла требует перезапуска локального сервера Telegram.

После изменения параметров запуска локального сервера Telegram вы должны снова попытаться загрузить файл с использованием aiogram.
Не забудьте добавить параметр '--local' при запуске telegram-bot-api.exe. 
Пример кода для запуска сервера выглядит следующим образом:
```python
def start_server_task():
    serv_path = f'{Path.cwd()}\\telegram-bot-api\\bin\\telegram-bot-api.exe'
    os.system(f'{serv_path} --local --api-id={conf.api_id} --api-hash={conf.hash} --http-port=8080')
```
Совет по запуску сервера: не забудьте добавить параметр '--local' при запуске telegram-bot-api.exe. Пример кода выглядит следующим образом:
```python
def start_server_task():
    serv_path = f'{Path.cwd()}\\telegram-bot-api\\bin\\telegram-bot-api.exe'
    os.system(f'{serv_path} --local --api-id={conf.api_id} --api-hash={conf.hash} --http-port=8080')
```
Похожие вопросы