Sha256: 726b956b86a6b9320fa35043f8487c6f7260d8fa8c55658ea9171476763db55a

Contents?: true

Size: 1.03 KB

Versions: 12

Compression:

Stored size: 1.03 KB

Contents

module Bot
  class Handler
    @@responder_chain = nil

    def self.use(responder)
      responder_chain.add(responder)
    end

    def self.handle(messages)
      new.handle(messages)
    end

    def handle(messages)
      messages.flat_map { |m| handle_message(m) }
    end

    def execute_chain(message, responses, user)
      context = Bot::Context.new(user, Bot.configuration.redis)
      responder_chain.responders.each do |responder|
        responder = responder.new(message, user, responses, self, context)
        if responder.can_respond_to_type?(message['type']) && responder.can_handle?
          responses << responder.handle
          break
        end
      end
      responses
    end

    def responder_chain
      @@responder_chain ||= Bot::ResponderChain.new
    end

    def self.responder_chain
      @@responder_chain ||= Bot::ResponderChain.new
    end

  protected

    def handle_message(message)
      user = user_for(message)
      execute_chain(message, [], user).flatten
    end

    def user_for(message)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
bot-0.0.41 lib/bot/handler.rb
bot-0.0.40 lib/bot/handler.rb
bot-0.0.39 lib/bot/handler.rb
bot-0.0.38 lib/bot/handler.rb
bot-0.0.37 lib/bot/handler.rb
bot-0.0.35 lib/bot/handler.rb
bot-0.0.34 lib/bot/handler.rb
bot-0.0.33 lib/bot/handler.rb
bot-0.0.32 lib/bot/handler.rb
bot-0.0.31 lib/bot/handler.rb
bot-0.0.30 lib/bot/handler.rb
bot-0.0.29 lib/bot/handler.rb