Module: Utils::FlagFloodProtection

Defined in:
lib/erasmus/utils.rb

Class Method Summary collapse

Class Method Details

.extended(obj) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/erasmus/utils.rb', line 27

def self.extended(obj)
  obj.instance_eval {
    @userMessages = Hash.new(Queue.new)
    @blacklists << lambda { |user|
      @userMessages[user] << Time.now
      
      # don't allow messages from users who have sent
      # 5 messages in 15 seconds
      if @userMessages[user].length > 4 \
      and Time.now - @userMessages[user].pop < 15
        say("#{user} is flooding!")
        raise Erasmus::NotAllowedException
      end
    }
  }
end