Module: Discordrb::Commands::RateLimiter
- Included in:
- CommandContainer, SimpleRateLimiter
- Defined in:
- lib/discordrb/commands/rate_limiter.rb
Overview
Represents a collection of Buckets.
Instance Method Summary collapse
- 
  
    
      #bucket(key, attributes)  ⇒ Bucket 
    
    
  
  
  
  
  
  
  
  
  
    Defines a new bucket for this rate limiter. 
- 
  
    
      #clean  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Cleans all buckets. 
- 
  
    
      #include_buckets(limiter)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Adds all the buckets from another RateLimiter onto this one. 
- 
  
    
      #rate_limited?(key, thing, increment: 1)  ⇒ Integer, false 
    
    
  
  
  
  
  
  
  
  
  
    Performs a rate limit request. 
Instance Method Details
#bucket(key, attributes) ⇒ Bucket
Defines a new bucket for this rate limiter.
| 101 102 103 104 | # File 'lib/discordrb/commands/rate_limiter.rb', line 101 def bucket(key, attributes) @buckets ||= {} @buckets[key] = Bucket.new(attributes[:limit], attributes[:time_span], attributes[:delay]) end | 
#clean ⇒ Object
Cleans all buckets
| 121 122 123 | # File 'lib/discordrb/commands/rate_limiter.rb', line 121 def clean @buckets.each(&:clean) end | 
#include_buckets(limiter) ⇒ Object
Adds all the buckets from another RateLimiter onto this one.
| 127 128 129 130 131 | # File 'lib/discordrb/commands/rate_limiter.rb', line 127 def include_buckets(limiter) buckets = limiter.instance_variable_get(:@buckets) || {} @buckets ||= {} @buckets.merge! buckets end | 
#rate_limited?(key, thing, increment: 1) ⇒ Integer, false
Performs a rate limit request.
| 112 113 114 115 116 117 | # File 'lib/discordrb/commands/rate_limiter.rb', line 112 def rate_limited?(key, thing, increment: 1) # Check whether the bucket actually exists return false unless @buckets && @buckets[key] @buckets[key].rate_limited?(thing, increment: increment) end |