Class: SlackRubyBot::Client

Inherits:
Slack::RealTime::Client
  • Object
show all
Includes:
Loggable
Defined in:
lib/slack-ruby-bot/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Loggable

included

Constructor Details

#initialize(attrs = {}) ⇒ Client

Returns a new instance of Client.


7
8
9
10
11
# File 'lib/slack-ruby-bot/client.rb', line 7

def initialize(attrs = {})
  super(attrs)
  @aliases = attrs[:aliases]
  @send_gifs = attrs[:send_gifs]
end

Instance Attribute Details

#aliasesObject

Returns the value of attribute aliases


4
5
6
# File 'lib/slack-ruby-bot/client.rb', line 4

def aliases
  @aliases
end

#send_gifsObject

Returns the value of attribute send_gifs


5
6
7
# File 'lib/slack-ruby-bot/client.rb', line 5

def send_gifs
  @send_gifs
end

Instance Method Details

#nameObject


37
38
39
# File 'lib/slack-ruby-bot/client.rb', line 37

def name
  SlackRubyBot.config.user || (self.self && self.self.name)
end

#name?(name) ⇒ Boolean

Returns:

  • (Boolean)

28
29
30
# File 'lib/slack-ruby-bot/client.rb', line 28

def name?(name)
  name && names.include?(name.downcase)
end

#namesObject


13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/slack-ruby-bot/client.rb', line 13

def names
  [
    SlackRubyBot::Config.user,
    self.self ? self.self.name : nil,
    aliases ? aliases.map(&:downcase) : nil,
    SlackRubyBot::Config.aliases ? SlackRubyBot::Config.aliases.map(&:downcase) : nil,
    self.self && self.self.id ? "<@#{self.self.id.downcase}>" : nil,
    SlackRubyBot::Config.user_id ? "<@#{SlackRubyBot::Config.user_id.downcase}>" : nil,
    self.self && self.self.id ? "<@#{self.self.id.downcase}>:" : nil,
    SlackRubyBot::Config.user_id ? "<@#{SlackRubyBot::Config.user_id.downcase}>:" : nil,
    self.self && self.self.name ? "#{self.self.name.downcase}:" : nil,
    SlackRubyBot::Config.user ? "#{SlackRubyBot::Config.user}:" : nil
  ].compact.flatten
end

#say(options = {}) ⇒ Object


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/slack-ruby-bot/client.rb', line 45

def say(options = {})
  options = options.dup
  # get GIF
  keywords = options.delete(:gif)
  # text
  text = options.delete(:text)
  if keywords && send_gifs?
    gif = begin
      Giphy.random(keywords)
    rescue StandardError => e
      logger.warn "Giphy.random: #{e.message}"
      nil
    end
  end
  text = [text, gif && gif.image_url.to_s].compact.join("\n")
  message({ text: text }.merge(options))
end

#send_gifs?Boolean

Returns:

  • (Boolean)

32
33
34
35
# File 'lib/slack-ruby-bot/client.rb', line 32

def send_gifs?
  return false unless defined?(Giphy)
  send_gifs.nil? ? SlackRubyBot::Config.send_gifs? : send_gifs
end

#urlObject


41
42
43
# File 'lib/slack-ruby-bot/client.rb', line 41

def url
  SlackRubyBot.config.url || super
end