Как отправить архив zip в telegram с помощью библиотеки aiogram 3.10.0

Мне необходимо отправить архив пользователю, но функция bot.send_document() выдаёт ошибку: aiogram.exceptions.TelegramBadRequest: Telegram server says - Bad Request: invalid file HTTP URL specified: Wrong port number specified in the URL

@dp.message(CommandStart())
async def command_start_handler(message: Message, state: FSMContext) -> None:
    await bot.send_document(
        chat_id=message.from_user.id,
        document="C:\\path\\to\\file\\myfile.rar"
    )

Ответы (1 шт):

Автор решения: mrgervant

Судя по ошибке Telegram расценивает переданный параметр document как ссылку на файл в сети. Файл можно передать с помощью FSInputFile:

from aiogram.types import FSInputFile
...
await bot.send_document(
    chat_id=message.from_user.id,
    document=FSInputFile('files/myfile.rar')
)

Для надежного определения пути до файла рекомендую использовать библиотеку pathlib - пример кода, который определяет родительскую папку для запущенного скрипта и формирует путь к другому файлу:

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
path_file = Path(BASE_DIR, 'files/myfile.rar')  # Path
str_file = f'{BASE_DIR}\\files\\myfile.rar'     # str

# C:\Users\User\my-project\app\files\myfile.rar
→ Ссылка