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

  1. Pasang error handler menggunakan bot.catch (long polling) atau pada web framework-mu (webhooks).
  2. Gunakan await di semua promise dan install linting yang mewajibkan penerapan aturan tersebut agar kamu tidak lupa untuk menggunakan dua syntax ini.

Pengiriman Pesan

  1. Kirim file mengunakan path atau buffer, bukan dengan stream, atau setidaknya kamu tahu jebakan-jebakannya.
  2. Gunakan bot.on("callback_query:data") sebagai penanganan fallback untuk menanggapi semua callback query.
  3. Gunakan plugin transformer-throttler agar terhindari dari rate limit.
  4. Opsional. Gunakan plugin auto-retry untuk menangani error flood wait secara otomatis.

Penskalaan

Ini tergantung dari jenis deployment kamu.

Long Polling

  1. Gunakan grammY runner.
  2. Gunakan sequentialize dengan session key dari resolver function yang sama sebagai session middleware kamu.
  3. Periksa konfigurasi run (Referensi APIopen in new window) dan pastikan sesuai dengan kebutuhanmu, atau bahkan pertimbangkan untuk membuat runner-mu sendiri dari sourceopen in new window dan sinkopen in new window. Hal utama yang perlu dipertimbangkan adalah beban maksimum yang ingin diterapkan ke servermu, misal: berapa banyak update yang dapat diproses secara bersamaan.
  4. Implementasikan graceful shutdown ketika hendak menghentikan bot (misalnya untuk beralih ke versi baru).

Webhooks

  1. 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.
  2. Buat dirimu terbiasa dengan konfigurasi webhookCallback (Referensi APIopen in new window).
  3. Jika hendak mengatur opsi getSessionKey untuk session, Gunakan sequentialize dengan session key dari resolver function yang sama sebagai session middleware kamu..
  4. Jika menjalankan bot di platform serverless atau autoscaling, atur informasi botopen in new window untuk mencegah panggilan getMe yang berlebihan.
  5. Pertimbangkan untuk menggunakan webhook reply.

Session

  1. Pertimbangkan menggunakan lazySessions seperti yang sudah dijelaskan di sini.
  2. 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:

  1. Mock request API yang keluar menggunakan function transformer.
  2. Tentukan dan kirim berbagai sampel object update ke bot melalui bot.handleUpdate (referensi APIopen in new window). Pertimbangkan untuk mengambil beberapa inspirasi dari object updateopen in new window yang telah disediakan oleh tim Telegram.

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 siniopen in new window.