Як відвантажити файл?¶
Як стверджує 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:
aiogram.types.input_file.FSInputFile
- відвантажений з файлової системиaiogram.types.input_file.BufferedInputFile
- відвантажений з буферу
Попередження
Be respectful to Telegram
Instances of InputFile are reusable. That means you can create an instance of InputFile and send it multiple times. However, Telegram does not recommend doing this. Instead, once you upload a file, save its file_id and reuse that later.
Відвантаження з файлової системи¶
Перш за все, вам потрібно буде імпортувати обгортку 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")
Відвантаження з 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"
)