package utils import ( "time" ) type RateLimiter struct { lastTime time.Time minInterval time.Duration } func NewRateLimiter(interval time.Duration) *RateLimiter { return &RateLimiter{ minInterval: interval, } } func (r *RateLimiter) Allow() bool { now := time.Now() if now.Sub(r.lastTime) >= r.minInterval { r.lastTime = now return true } return false } func (r *RateLimiter) Reset() { r.lastTime = time.Time{} }