Rate-limiting middleware for Telegraf (Telegram bot framework).
$ npm install telegraf-ratelimit
const Telegraf = require('telegraf')
const rateLimit = require('telegraf-ratelimit')
// Set limit to 1 message per 3 seconds
const limitConfig = {
window: 3000,
limit: 1,
onLimitExceeded: (ctx, next) => ctx.reply('Rate limit exceeded')
}
const telegraf = new Telegraf(process.env.BOT_TOKEN)
telegraf.use(rateLimit(limitConfig))
telegraf.on('text', (ctx) => ctx.reply('Hello!'))
telegraf.startPolling()
window
: how long to keep records of requests in memory in ms (default: 1 second)limit
: max number of messages during window (default: 1)keyGenerator
: key generator function (context -> any)onLimitExceeded
: rate-limit middleware
Default implementation of keyGenerator
:
function keyGenerator(ctx) {
return ctx.from.id
}