Class: Sinbotra::Bot

Inherits:
Object
  • Object
show all
Includes:
SuckerPunch::Job
Defined in:
lib/sinbotra/bot.rb,
lib/sinbotra/bot/user.rb,
lib/sinbotra/bot/user_repo.rb,
lib/sinbotra/bot/user_store.rb,
lib/sinbotra/bot/redis_store.rb,
lib/sinbotra/bot/conversation.rb

Defined Under Namespace

Classes: Conversation, RedisStore, User, UserRepo, UserStore

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.add_handler(provider, handler) ⇒ Object



21
22
23
24
# File 'lib/sinbotra/bot.rb', line 21

def add_handler(provider, handler)
  @handlers ||= {}
  @handlers[provider.to_sym] = handler
end

.handle(provider, entry) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/sinbotra/bot.rb', line 12

def handle(provider, entry)
  Sinbotra::Config.logger.debug("ENTRY DEBUG:\n" + entry.inspect) if ENV["DEBUG"]
  if ENV["SINBOTRA_SYNCHRONOUS"]
    new.perform(provider, entry)
  else
    perform_async(provider, entry)
  end
end

.handle_action(action_name, provider, handler, opts = {}) ⇒ Object



34
35
36
# File 'lib/sinbotra/bot.rb', line 34

def handle_action(action_name, provider, handler, opts={})
  handler.handle_action(action_name, opts)
end

.receive(provider, msg) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/sinbotra/bot.rb', line 26

def receive(provider, msg)
  handler = @handlers[provider.to_sym]
  Sinbotra::Config.logger.debug("MESSAGE DEBUG:\n" + msg.inspect) if ENV["DEBUG"]
  user = Sinbotra::User.from_message(msg)
  bot = handler.new(user)
  bot.handle_message(msg)
end

Instance Method Details

#perform(provider, msgs) ⇒ Object



41
42
43
44
45
# File 'lib/sinbotra/bot.rb', line 41

def perform(provider, msgs)
  msgs.each do |msg|
    Sinbotra::Bot.receive(provider, msg)
  end
end