Скачивание
Стандартный путь скачивания файлов выглядит так:
- Вызвать
getFile
с параметромfile_id
- Извлечь
file_path
из ответа - Составить ссылку следующего вида
https://api.telegram.org/file/bot<token>/<file_path>
- Отправить запрос и скачать запрашиваемый медиафайл
- ? Возможно, сохранить файл в файловой системе ?
но в нашем случае это выглядит более удобно и проще.
Через методы контекста
ts
bot.on("message", async (context) => {
if (!context.document) return;
// скачать в ./file-name
await context.download(context.document.fileName || "file-name");
// получить ArrayBuffer
const buffer = await context.download();
return context.send("Спасибо!");
});
IMPORTANT
Одно сообщение содержит только одно вложение. Поэтому для скачивания вложения можно просто использовать метод context.download
Но вы можете работать с медиагруппами, используя плагин media-group и итерацию по массиву context.mediaGroup
.
Через метод экземпляра бота
ts
const chat = await bot.api.getChat({ chat_id: "@not_found" });
if (!chat.photo?.big_file_id) return;
// скачать в ./not_found_chat_photo.png
await bot.downloadFile(chat.photo.big_file_id, "not_found_chat_photo.png");
// получить ArrayBuffer
const buffer = await bot.downloadFile(chat.photo.big_file_id);