Pengulang Request API (auto-retry
)
Plugin ini adalah sebuah API transformer function. Artinya, ia dapat mencegat dan memodifikasi HTTP request yang keluar secara langsung. Lebih tepatnya, plugin ini akan secara otomatis mendeteksi jika suatu API request gagal dilakukan dengan membawa value retry
, misal dikarenakan rate limit. Ia akan menangkap error tersebut, lalu menunggu beberapa saat, kemudian mengirim request tersebut kembali.
Kontrol Flood
Untuk memastikan bot kamu tidak “membanjiri” server, Telegram menerapkan pengendalian “banjir” atau flood control. Mereka akan memberitahu kamu disaat bot mengirim pesan terlalu cepat. Jika kamu mengabaikan error 429 yang diberikan, Telegram selanjutnya akan memblokir bot kamu. Itulah kenapa menggunakan plugin ini cukup penting.
Kamu bisa menginstal plugin ini di object bot
:
import { autoRetry } from "@grammyjs/auto-retry";
// Pasang plugin-nya
bot.api.config.use(autoRetry());
2
3
4
const { autoRetry } = require("@grammyjs/auto-retry");
// Pasang plugin-nya
bot.api.config.use(autoRetry());
2
3
4
import { autoRetry } from "https://esm.sh/@grammyjs/auto-retry";
// Pasang plugin-nya
bot.api.config.use(autoRetry());
2
3
4
Sekarang, anggaplah kamu sedang memanggil send
, lalu terkena rate limit, maka ia akan tampak seperti sebuah request yang diproses dengan sangat lama. Di balik layar, beberapa HTTP request sedang dilakukan dengan jeda waktu yang sesuai—berdasarkan durasi flood limit—di antara kedua request. Oleh sebab itu, durasi pemrosesan terasa lama karena adanya jeda waktu tersebut.
Kamu bisa menentukan sebuah opsi max
untuk menentukan jumlah maksimal pengulangan yang boleh dilakukan (bawaanya: 3) atau opsi max
untuk menentukan batas maksimal durasi tunggu (bawaanya: 1 jam).
Segera setelah jumlah maksimal pengulangan terlampaui, request-request berikutnya yang mengalami error tidak akan diulang kembali. Object error tersebut akan tetap diteruskan yang kemudian menghasilkan sebuah Grammy
.
Hal yang sama juga berlaku ketika request gagal dijalankan dengan retry
lebih besar dari nilai max
yang telah ditentukan. Request tersebut akan digagalkan saat itu juga.
autoRetry({
maxRetryAttempts: 1, // Hanya mengulangi sekali
maxDelaySeconds: 5, // Langsung gagalkan jika kita harus menunggu lebih dari 5 detik
});
2
3
4
Kamu bisa menggunakan retry
untuk menyertakan error-error server internal Telegram lainnya (kode status >= 500). Error tersebut akan langsung diulang kembali dengan tetap mematuhi opsi max
yang telah ditentukan.
Ringkasan Plugin
- Nama:
auto
-retry - Sumber: https://
github .com /grammyjs /auto -retry - Referensi: https://
doc .deno .land /https:// raw .githubusercontent .com /grammyjs /auto -retry /main /src /index .ts