class FuckBot::Client
Attributes
store[R]
token[R]
url[R]
user[R]
ws[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/fuck_bot/client.rb, line 5 def initialize(options = {}) @token = options.fetch(:token, ENV['FUCK_BOT_TOKEN']) @logger = options.fetch(:logger, Logger.new(STDOUT)) @store = FuckBot::Store.new(options[:store]) rtm_start end
Public Instance Methods
run()
click to toggle source
# File lib/fuck_bot/client.rb, line 13 def run @ws = Faye::WebSocket::Client.new(@url) @ws.on(:open, on_open) @ws.on(:message, on_message) @ws.on(:close, on_close) end
Private Instance Methods
on_close()
click to toggle source
# File lib/fuck_bot/client.rb, line 39 def on_close lambda do |_event| @logger.info(:close) EM.stop end end
on_message()
click to toggle source
# File lib/fuck_bot/client.rb, line 29 def on_message lambda do |event| data = Oj.load(event.data) @logger.info(data.inspect) MessageResolver.new(data, self).call end end
on_open()
click to toggle source
# File lib/fuck_bot/client.rb, line 23 def on_open lambda do |_event| @logger.info(:open) end end
rtm_start()
click to toggle source
# File lib/fuck_bot/client.rb, line 47 def rtm_start response = RestClient.post( 'https://slack.com/api/rtm.start', token: @token, simple_latest: true, no_unreads: true ) response = Oj.load(response.body) @user = response['self'] @url = response['url'] end