Daftar Periksa Deployment
Berikut hal-hal yang perlu diperhatikan ketika meng-hosting bot dengan skala yang besar.
Kamu mungkin juga tertarik dengan panduan kami mengenai hosting sebuah bot. Lihat tab Hosting / Tutorial di bagian atas halaman untuk melihat beberapa platform yang sudah memiliki panduan khusus.
Error
- Pasang
error handler
menggunakanbot
(long polling) atau pada web framework-mu (webhooks)..catch - Gunakan
await
di semuapromise
dan install linting yang mewajibkan penerapan aturan tersebut agar kamu tidak lupa untuk menggunakan dua syntax ini.
Pengiriman Pesan
- Kirim file mengunakan
path
ataubuffer
, bukan denganstream
, atau setidaknya kamu tahu jebakan-jebakannya . - Gunakan
bot
sebagai penanganan fallback untuk menanggapi semua callback query..on("callback _query: data") - Gunakan plugin
auto
untuk menangani flood wait (durasi tunggu karena terlalu banyak mengirim request ke Telegram) secara otomatis.-retry
Penskalaan
Ini tergantung dari jenis deployment kamu.
Long Polling
- Gunakan grammY runner.
- Gunakan
sequentialize
dengan session key dari resolver function yang sama sebagai session middleware kamu. - Periksa konfigurasi
run
(Referensi API) dan pastikan sesuai dengan kebutuhanmu, atau bahkan pertimbangkan untuk membuat runner-mu sendiri dari source dan sink. Hal utama yang perlu dipertimbangkan adalah beban maksimum yang ingin diterapkan ke servermu, misal: berapa banyak update yang dapat diproses secara bersamaan. - Implementasikan graceful shutdown ketika hendak menghentikan bot (misalnya untuk beralih ke versi baru).
Webhooks
- Pastikan tidak melakukan operasi yang berjalan lama di middleware, seperti pengiriman file dalam jumlah besar. Hal ini akan mengakibatkan error timeout pada webhooks serta pemrosesan update yang sama berulang kali karena Telegram terus mengirim kembali update yang tidak direspon. Untuk menghindari hal tersebut, sebaiknya gunakan sistem task queuing.
- Buat dirimu terbiasa dengan konfigurasi
webhook
(Referensi API).Callback - Jika hendak mengatur opsi
get
untuk session, GunakanSession Key sequentialize
dengan session key dari resolver function yang sama sebagai session middleware kamu.. - Jika menjalankan bot di platform serverless atau autoscaling, atur informasi bot untuk mencegah panggilan
get
yang berlebihan.Me - Pertimbangkan untuk menggunakan webhook reply.
Session
- Pertimbangkan menggunakan
lazy
seperti yang sudah dijelaskan di sini.Sessions - Gunakan opsi
storage
untuk mengatur tempat penyimpanan. Jika tidak dilakukan, semua data akan hilang ketika bot berhenti bekerja.
Pengujian
Lakukan berbagai pengujian untuk bot. Berikut cara melakukannya dengan grammY:
- Mock request API yang keluar menggunakan function transformer.
- Tentukan dan kirim berbagai sampel object update ke bot melalui
bot
(referensi API). Pertimbangkan untuk mengambil beberapa inspirasi dari object update yang telah disediakan oleh tim Telegram..handle Update
Berkontribusi untuk Pengujian Framework
Meskipun grammY sudah menyediakan sarana yang diperlukan untuk membuat pengujian, tetapi akan sangat membantu jika kita memiliki framework pengujian tersendiri untuk berbagai bot. Ini adalah wilayah baru, framework pengujian secara masal seperti itu belum pernah ada. Kami menantikan kontribusimu!
Salah satu contoh bagaimana pengujian dilakukan bisa ditemukan di sini.