Rate Limiting

Built-in rate limiting middleware with per-user token bucket and customizable responses.

Usage

from pyrogram_patch.middleware import RateLimitMiddleware

rate_limiter = RateLimitMiddleware(
    limit=5,              # max requests
    period=60,            # per 60 seconds
    on_limited=lambda u: u.reply("Too many requests. Please wait."),
)
await manager.add_middleware(rate_limiter, kind="before", priority=100)

Parameters

ParameterTypeDefaultDescription
limitintMax number of requests per period
periodfloatTime window in seconds
on_limitedCallableNoneCallback when rate limit is hit
key_funcCallableuser IDFunction to extract rate limit key from update