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