telegraf-ratelimit

Rate-limiting middleware for Telegraf

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
telegraf-ratelimit
3352.0.06 years ago7 years agoMinified + gzip package size for telegraf-ratelimit in KB

Readme

Build Status NPM Version js-standard-style
Telegraf Rate Limit
Rate-limiting middleware for Telegraf (Telegram bot framework).

Installation

$ npm install telegraf-ratelimit

Example


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()

API

Options

  • 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
}