Class: SlackRubyBot::Server

Inherits:
Object
  • Object
show all
Includes:
Hooks::Hello, Hooks::Message, Loggable
Defined in:
lib/slack-ruby-bot/server.rb

Direct Known Subclasses

App

Constant Summary collapse

TRAPPED_SIGNALS =
%w(INT TERM).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Hooks::Message

#message

Methods included from Hooks::Base

#included

Methods included from Hooks::Hello

#hello

Constructor Details

#initialize(options = {}) ⇒ Server

Returns a new instance of Server.



12
13
14
15
16
# File 'lib/slack-ruby-bot/server.rb', line 12

def initialize(options = {})
  @token = options[:token]
  @aliases = options[:aliases]
  @send_gifs = options.key?(:send_gifs) ? !!options[:send_gifs] : true
end

Instance Attribute Details

#aliasesObject

Returns the value of attribute aliases.



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

def aliases
  @aliases
end

#send_gifsObject

Returns the value of attribute send_gifs.



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

def send_gifs
  @send_gifs
end

#tokenObject

Returns the value of attribute token.



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

def token
  @token
end

Instance Method Details

#auth!Object



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

def auth!
  client.auth = client.web_client.auth_test
  logger.info "Welcome '#{client.auth['user']}' to the '#{client.auth['team']}' team at #{client.auth['url']}."
end

#restart!(wait = 1) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/slack-ruby-bot/server.rb', line 50

def restart!(wait = 1)
  @async ? start_async : start!
rescue StandardError => e
  sleep wait
  logger.error "#{e.message}, reconnecting in #{wait} second(s)."
  logger.debug e
  restart! [wait * 2, 60].min
end

#runObject



18
19
20
21
22
23
24
25
26
# File 'lib/slack-ruby-bot/server.rb', line 18

def run
  auth!
  loop do
    handle_execeptions do
      handle_signals
      start!
    end
  end
end

#start!Object



33
34
35
36
37
# File 'lib/slack-ruby-bot/server.rb', line 33

def start!
  @stopping = false
  @async = false
  client.start!
end

#start_asyncObject



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

def start_async
  @stopping = false
  @async = true
  client.start_async
end

#stop!Object



45
46
47
48
# File 'lib/slack-ruby-bot/server.rb', line 45

def stop!
  @stopping = true
  client.stop! if @client
end