class Slack::Client
Attributes
options[R]
token[R]
Public Class Methods
new(token)
click to toggle source
# File lib/slack/client.rb, line 5 def initialize(token) @token = token end
Public Instance Methods
channels()
click to toggle source
# File lib/slack/client.rb, line 53 def channels @channels ||= JSON.parse(get('channels.list', { exclude_archived: 1 }))['channels'] end
filter_message(text)
click to toggle source
# File lib/slack/client.rb, line 29 def filter_message(text) text = text.dup scan = text.scan(/\<@[0-9A-Z]+\>/) return text unless scan scan.each do |pattern| user_id = pattern.match(/<@(?<user_id>.*)>/)[:user_id] text.gsub!(/#{pattern}/, "@#{user_by_id(user_id)['name']}") end text end
get(api, options = {})
click to toggle source
# File lib/slack/client.rb, line 69 def get(api, options = {}) RestClient.get("https://slack.com/api/#{api}", { params: options.merge(token: token) }) end
groups()
click to toggle source
# File lib/slack/client.rb, line 57 def groups @groups ||= JSON.parse(get('groups.list', { exclude_archived: 1 }))['groups'] end
ims()
click to toggle source
# File lib/slack/client.rb, line 61 def ims @ims ||= JSON.parse(get('im.list'))['ims'] end
messages(name, type, options)
click to toggle source
# File lib/slack/client.rb, line 9 def messages(name, type, options) channel = case type when 'channel' then channels.find { |item| item['name'] == name } when 'group' then groups.find { |item| item['name'] == name } when 'direct' then im.find { |item| item['user'] == name } when 'multi_direct' then mpim.find { |item| item['name'] == name } end messages = JSON.parse(get('channels.history', options.merge(channel: channel['id'])))['messages'] messages.select { |message| message['type'] == 'message' && message['subtype'].nil? }.map do |message| [ Time.at(message['ts'].to_i), channel['id'], channel['name'], message['user'], user_by_id(message['user'])['name'], filter_message(message['text']) ] end.reverse end
mpim()
click to toggle source
# File lib/slack/client.rb, line 65 def mpim @mpims ||= JSON.parse(get('mpim.list'))['groups'] end
user_by_id(id)
click to toggle source
# File lib/slack/client.rb, line 41 def user_by_id(id) users.find { |user| user['id'] == id } end
user_by_name(name)
click to toggle source
# File lib/slack/client.rb, line 45 def user_by_name(name) users.find { |user| user['name'] == name } end
users()
click to toggle source
# File lib/slack/client.rb, line 49 def users @users ||= JSON.parse(get('users.list', { presence: 0 }))['members'] end