lib/boty/session.rb in boty-0.0.17.1 vs lib/boty/session.rb in boty-0.1.0
- old
+ new
@@ -8,51 +8,55 @@
def start(&block)
EM.run do
login
@bot = initialize_bot(&block)
- stablish_connection do |ws|
- ws.on :message do |event|
- begin
- on_message event, @bot
- rescue StandardError => e
- logger.error "Message #{event} could not be processed. #{e.message}"
- end
- end
- end
+ stablish_connection
end
self
end
private
+ def on_connect(ws)
+ ws.on :message do |event|
+ begin
+ on_message event, @bot
+ rescue StandardError => e
+ logger.error "Message #{event} could not be processed. #{e.message}"
+ logger.debug e.backtrace.reduce("") { |msg, line| msg << "#{line}\n" }
+ end
+ end
+ end
+
def login
- logger.debug { "logging in against slack right now" }
+ logger.debug { "Logging in against slack right now" }
@slack_info = Slack.rtm.start
logger.debug { "yep! logged in!" }
@session_url = @slack_info["url"]
end
def initialize_bot(&block)
- Bot.new(@slack_info["self"], self).tap { |bot|
- block.call ScriptDSL.new(bot) if block_given?
- logger.debug { "bot is configured and ready to go!" }
+ Bot.new(@slack_info["self"]).tap { |bot|
+ DSL.new(bot).instance_eval(&block) if block_given?
+ logger.debug { "Bot is configured and ready to go!" }
}
end
def on_message(event, bot)
- logger.debug { "message arrived #{event.data}" }
+ logger.debug { "Message arrived. Creating bot event" }
bot.event JSON.parse(event.data)
end
def on_close
- logger.debug { "bye byeb." }
+ logger.debug { "bye bye" }
+ #todo try to reconnect (stablish_connection) unless is an em interrupt
end
def stablish_connection
- logger.debug { "starting to listen on #{@session_url}" }
+ logger.debug { "Starting to listen on #{@session_url}" }
ws = Faye::WebSocket::Client.new @session_url
ws.on :close do on_close end
- yield ws if block_given?
+ on_connect ws
end
end
end