Як відвантажити файл?#

Як стверджує official Telegram Bot API documentation існує три способа надіслати файл (фото, наклейки, аудіо, медіа тощо):

Якщо файл уже зберігається десь на серверах Telegram або файл доступний за URL-адресою, вам не потрібно його повторно завантажувати.

But if you need to upload a new file just use subclasses of InputFile.

Here are the three different available builtin types of input file:

Попередження

Поважайте Telegram

Instances of InputFile are reusable. That’s mean you can create instance of InputFile and sent this file multiple times but Telegram does not recommend to do that and when you upload file once just save their file_id and use it in next times.

Відвантаження з файлової системи#

Перш за все, вам потрібно буде імпортувати обгортку InputFile:

from aiogram.types import FSInputFile

Тепер ви можете використовувати її:

cat = FSInputFile("cat.png")
agenda = FSInputFile("my-document.pdf", filename="agenda-2019-11-19.pdf")
class aiogram.types.input_file.FSInputFile(path: str | Path, filename: str | None = None, chunk_size: int = 65536)[source]#
__init__(path: str | Path, filename: str | None = None, chunk_size: int = 65536)[source]#

Об’єкт для відвантаження файлів із файлової системи

Параметри:
  • path – Шлях до файлу

  • filename – Ім’я файлу, яке буде передано в telegram. За замовчуванням, буде взято зі шляху

  • chunk_size – Розмір фрагмента відвантаження

Відвантаження з буферу#

Files can be also passed from buffer (For example you generate image using Pillow and you want to send it to Telegram):

Імпорт обгортки:

from aiogram.types import BufferedInputFile

Тепер ви можете використовувати її:

text_file = BufferedInputFile(b"Hello, world!", filename="file.txt")
class aiogram.types.input_file.BufferedInputFile(file: bytes, filename: str, chunk_size: int = 65536)[source]#
__init__(file: bytes, filename: str, chunk_size: int = 65536)[source]#

Об’єкт для відвантаження файлів із файлової системи

Параметри:
  • file – Байти

  • filename – Ім’я файлу, яке буде передано в telegram.

  • chunk_size – Розмір фрагмента відвантаження

Відвантаження з URL#

Якщо вам потрібно відвантажити файл з іншого сервера, але пряме посилання прив’язано до IP-адреси вашого сервера, або ви хочете обійти власні обмеження на завантаження <https://core.telegram.org/bots/api#sending-files> `_ за URL-адресою, ви можете використовувати :obj:`aiogram.types.input_file.URLInputFile.

Імпорт обгортки:

from aiogram.types import URLInputFile

Тепер ви можете використовувати її:

image = URLInputFile(
    "https://www.python.org/static/community_logos/python-powered-h-140x182.png",
    filename="python-logo.png"
)
class aiogram.types.input_file.URLInputFile(url: str, headers: Dict[str, Any] | None = None, filename: str | None = None, chunk_size: int = 65536, timeout: int = 30, bot: 'Bot' | None = None)[source]#