Menangani File dengan Mudah di grammY (files
)
Plugin ini memudahkan kamu untuk mengunduh file dari server Telegram dan memperoleh URL-nya agar kamu dapat mengunduh file tersebut secara mandiri.
Coba ingat kembali cara kerja file, dan cara mengunggahnya.
Mengunduh File
Plugin ini memerlukan token bot kamu untuk melakukan autentikasi ketika mengunduh sebuah file. Jika berhasil, method download
akan tersedia di hasil pemanggilan get
. Contohnya,
import { Bot, Context } from "grammy";
import { FileFlavor, hydrateFiles } from "@grammyjs/files";
// Transformative Context flavor
type MyContext = FileFlavor<Context>;
// Buat sebuah bot.
const bot = new Bot<MyContext>("");
// Gunakan plugin ini.
bot.api.config.use(hydrateFiles(bot.token));
// Unduh video and GIF ke lokasi sementara.
bot.on([":video", ":animation"], async (ctx) => {
// Siapkan file yang akan diunduh.
const file = await ctx.getFile();
// Unduh file ke lokasi sementara.
const path = await file.download();
// Cetak path file-nya.
console.log("File disimpan di ", path);
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { Bot } from "grammy";
import { hydrateFiles } from "@grammyjs/files";
// Buat sebuah bot.
const bot = new Bot("");
// Gunakan plugin ini.
bot.api.config.use(hydrateFiles(bot.token));
// Unduh video and GIF ke lokasi sementara.
bot.on([":video", ":animation"], async (ctx) => {
// Siapkan file yang akan diunduh.
const file = await ctx.getFile();
// Unduh file ke lokasi sementara.
const path = await file.download();
// Cetak path file-nya.
console.log("File disimpan di ", path);
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { Bot, Context } from "https://deno.land/x/grammy@v1.30.0/mod.ts";
import {
FileFlavor,
hydrateFiles,
} from "https://deno.land/x/grammy_files@v1.1.1/mod.ts";
// Transformative Context flavor
type MyContext = FileFlavor<Context>;
// Buat sebuah bot.
const bot = new Bot<MyContext>("");
// Gunakan plugin ini.
bot.api.config.use(hydrateFiles(bot.token));
// Unduh video and GIF ke lokasi sementara.
bot.on([":video", ":animation"], async (ctx) => {
// Siapkan file yang akan diunduh.
const file = await ctx.getFile();
// Unduh file ke lokasi sementara.
const path = await file.download();
// Cetak path file-nya.
console.log("File disimpan di ", path);
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Kamu bisa memasukkan sebuah string berisi path file ke download
jika kamu tidak ingin membuat file sementara. Cukup lakukan await file
.
Jika kamu ingin mendapatkan URL file-nya saja agar kamu bisa mengunduhnya secara mandiri, gunakan file
. Ia akan mengembalikan sebuah link HTTPS menuju file kamu yang valid selama satu jam.
Server API Bot Lokal
Jika kamu menggunakan server API bot lokal, pemanggilan get
akan mengunduh file tersebut ke disk kamu.
Hasilnya, kamu bisa memanggil file
untuk mengakses path file tersebut. Perlu dicatat, await file
mulai sekarang akan menyalin file yang tersedia secara lokal tersebut ke lokasi sementara (atau ke path yang diberikan jika telah ditentukan).
Dukungan Pemanggilan bot.api
Secara bawaan, hasil dari await bot
juga akan dilengkapi dengan method download
dan get
. Namun, method-method ini tidak akan tampak di type tersebut. Jika kamu membutuhkannya, kamu juga bisa menginstal sebuah API flavor File
di object bot tersebut.
import { Api, Bot, Context } from "grammy";
import { FileApiFlavor, FileFlavor, hydrateFiles } from "@grammyjs/files";
type MyContext = FileFlavor<Context>;
type MyApi = FileApiFlavor<Api>;
const bot = new Bot<MyContext, MyApi>("");
// ...
2
3
4
5
6
7
8
import { Api, Bot, Context } from "https://deno.land/x/grammy@v1.30.0/mod.ts";
import {
FileApiFlavor,
FileFlavor,
hydrateFiles,
} from "https://deno.land/x/grammy_files@v1.1.1/mod.ts";
type MyContext = FileFlavor<Context>;
type MyApi = FileApiFlavor<Api>;
const bot = new Bot<MyContext, MyApi>("");
// ...
2
3
4
5
6
7
8
9
10
11
12