Sha256: 16a416d4dec3cc1da5dec6a3bc81649046acebf5f7b56c8800761f62643973a6

Contents?: true

Size: 985 Bytes

Versions: 10

Compression:

Stored size: 985 Bytes

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)
      responder_chain.responders.each do |responder|
        responder = responder.new(message, user, responses, self)
        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

10 entries across 10 versions & 1 rubygems

Version Path
bot-0.0.28 lib/bot/handler.rb
bot-0.0.27 lib/bot/handler.rb
bot-0.0.26 lib/bot/handler.rb
bot-0.0.23 lib/bot/handler.rb
bot-0.0.22 lib/bot/handler.rb
bot-0.0.20 lib/bot/handler.rb
bot-0.0.19 lib/bot/handler.rb
bot-0.0.18 lib/bot/handler.rb
bot-0.0.17 lib/bot/handler.rb
bot-0.0.16 lib/bot/handler.rb