Как отправить архив 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