class Lita::Handlers::Ai

Public Class Methods

api_key() click to toggle source
# File lib/lita/handlers/ai.rb, line 16
def self.api_key
  Lita.config.handlers.ai.api_key
end
api_user() click to toggle source
# File lib/lita/handlers/ai.rb, line 12
def self.api_user
  Lita.config.handlers.ai.api_user
end
cleverbot() click to toggle source
# File lib/lita/handlers/ai.rb, line 8
def self.cleverbot
  @cleverbot ||= Cleverbot.new(api_user, api_key)
end

Public Instance Methods

chat(payload) click to toggle source
# File lib/lita/handlers/ai.rb, line 20
def chat(payload)
  message = payload[:message]
  return unless should_reply?(message)
  robot.send_message(message.source, build_response(message))
end

Private Instance Methods

aliases() click to toggle source
# File lib/lita/handlers/ai.rb, line 48
def aliases
  [robot.mention_name, robot.alias].map{|a| a unless a == ''}.compact
end
build_response(message) click to toggle source
# File lib/lita/handlers/ai.rb, line 32
def build_response(message)
  message = extract_aliases(message)
  reply = self.class.cleverbot.say(message.body)
  clean_response(reply.to_s) if reply
end
clean_response(response) click to toggle source
# File lib/lita/handlers/ai.rb, line 38
def clean_response(response)
  response.gsub!(/\|([0-9A-F]{4})/) { ["#{$1}".hex].pack("U") }
  HTMLEntities.new.decode(response)
end
extract_aliases(message) click to toggle source
# File lib/lita/handlers/ai.rb, line 43
def extract_aliases(message)
  body = message.body.sub(/#{aliases.join('|')}/i, '').strip
  Message.new(robot, body, message.source)
end
should_reply?(message) click to toggle source
# File lib/lita/handlers/ai.rb, line 28
def should_reply?(message)
  message.command? || message.body =~ /#{aliases.join('|')}/i
end