class Ruboty::Adapters::Slack
Public Instance Methods
run()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 11 def run init bind connect end
say(message)
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 17 def say(message) client.say( body: message[:code] ? "```\n#{message[:body]}\n```" : message[:body], from: message[:from], to: message[:original][:type] == "chat" ? message[:to] + "/resource" : message[:to].split("/", 2).first, type: message[:original][:type], ) end
Private Instance Methods
bind()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 75 def bind client.on_private_message(&method(:on_message)) client.on_room_message(&method(:on_message)) end
client()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 28 def client @client ||= Xrc::Client.new( jid: jid, nickname: username, password: password, room_jid: room_jids.join(","), ) end
connect()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 80 def connect client.connect end
host()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 51 def host "#{team}.xmpp.slack.com" end
init()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 37 def init ENV["RUBOTY_NAME"] ||= username end
jid()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 41 def jid "#{username}@#{host}" end
on_message(message)
click to toggle source
@note Ignores delayed messages when ruboty was logging out
# File lib/ruboty/adapters/slack.rb, line 85 def on_message(message) unless message.delayed? robot.receive( body: message.body, from: message.from, from_name: username_of(message), to: message.to, type: message.type, ) end end
password()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 67 def password ENV["SLACK_PASSWORD"] end
room_host()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 55 def room_host "conference.#{host}" end
room_jids()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 45 def room_jids rooms.map do |room| "#{room}@#{room_host}" end end
rooms()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 59 def rooms ENV["SLACK_ROOM"].split(",") end
team()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 71 def team ENV["SLACK_TEAM"] end
username()
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 63 def username ENV["SLACK_USERNAME"] end
username_of(message)
click to toggle source
# File lib/ruboty/adapters/slack.rb, line 97 def username_of(message) case message.type when "groupchat" Xrc::Jid.new(message.from).resource else Xrc::Jid.new(message.from).node end end