slack-bot-server 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2057d536126e6a0d8c97aeaae58e2e3daaf91de1
4
- data.tar.gz: 88d0b466fd378b2478eeb5daf8195e67b28aaa1a
3
+ metadata.gz: 8cc965f9cb1a969b0ea3f1b58f467084aa308552
4
+ data.tar.gz: b409898adb366f5420d6403f83015b0c05a366d1
5
5
  SHA512:
6
- metadata.gz: 691c0b764c00490f6dab7fbd3af1b1aefac684c03dc26260bd182f491cca8a4b928197799b9d6ad0023ae388c3ec84cfaed1bca3512052518f21506f2ce7a557
7
- data.tar.gz: ecf4e0f45c96aa35ebe37d46dd06a8cc28d31734f8db62e3cc67ba70d299dcf1c95291ad7929f1bfa995dce0c606b46ea185fb9ea31f4ab3fdbda4425a04276c
6
+ metadata.gz: e0488b12f7bb24e7310e974e07f24d0775bc4d977783066c94bd0460c27e36d56540807cbd498362d6b163cff19aff16266388dacd8f43123b056031288cba89
7
+ data.tar.gz: c6a89f534877ea4ca3433ad8ee2e732f2fc4c848750f90a6e7a129a98d4d0e724e2d0af7b027ba5b8b44f452d0f1514246d68e58bb3463acf7ab875a0bb3b55f
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Unreleased
2
+
3
+ ### Changes
4
+ - Re-use error raising from within Slack::Web::Api
5
+ - Prevent bots with the same key as existing bots from being added (@keydunov)
6
+
1
7
  ## 0.4.1
2
8
 
3
9
  ### Changes
data/README.md CHANGED
@@ -11,7 +11,7 @@ This server is designed to hopefully make it easier to manage running bots for m
11
11
  Add this line to your application's Gemfile:
12
12
 
13
13
  ```ruby
14
- gem 'slack_bot_server'
14
+ gem 'slack-bot-server'
15
15
  ```
16
16
 
17
17
  And then execute:
@@ -20,7 +20,7 @@ And then execute:
20
20
 
21
21
  Or install it yourself as:
22
22
 
23
- $ gem install slack_bot_server
23
+ $ gem install slack-bot-server
24
24
 
25
25
  ## Usage
26
26
 
@@ -53,7 +53,16 @@ end
53
53
  server.start
54
54
  ```
55
55
 
56
- Running this script will start a server and keep it running; you may wish to use a tool like [Foreman](http://ddollar.github.io/foreman/) to actually start it and manage it in production.
56
+ If you're using Rails, I'd suggest you create your script as `bin/slack_server` (i.e. a file called `slack_server` in the `bin` directory you already have)
57
+
58
+ Running this script will start a server and keep it running; you may wish to use a tool like [Foreman](http://ddollar.github.io/foreman/) to actually start it and manage it in production. Here's a sample `Procfile`:
59
+
60
+ ```
61
+ web: bundle exec rails server
62
+ slack_server: bundle exec rails runner bin/slack_server
63
+ ```
64
+
65
+ By running the `bin/slack_server` script using `rails runner`, your bots get access to all the Rails models and libraries even when they are running outside of the main Rails web processes.
57
66
 
58
67
  ### Advanced server example
59
68
 
@@ -37,8 +37,8 @@ class SlackBotServer::Bot
37
37
 
38
38
  attr_reader :key, :token, :client
39
39
 
40
- # Raised if Slack rejected the token during authentication.
41
- class InvalidToken < RuntimeError; end
40
+ # Raised if there was an error while trying to connect to Slack
41
+ class ConnectionError < Slack::Web::Api::Error; end
42
42
 
43
43
  # Create a new bot.
44
44
  # This is normally called from within the block passed to
@@ -51,13 +51,10 @@ class SlackBotServer::Bot
51
51
  def initialize(token:, key: nil)
52
52
  @token = token
53
53
  @key = key || @token
54
- @client = ::Slack::RealTime::Client.new(token: @token)
55
54
  @im_channels = []
56
55
  @channels = []
57
56
  @connected = false
58
57
  @running = false
59
-
60
- raise InvalidToken unless @client.web_client.auth_test['ok']
61
58
  end
62
59
 
63
60
  # Returns the username (for @ replying) of the bot user we are connected as,
@@ -151,6 +148,7 @@ class SlackBotServer::Bot
151
148
  # when it is ready for the bot to connect
152
149
  # @see Server#start
153
150
  def start
151
+ @client = ::Slack::RealTime::Client.new(token: @token)
154
152
  @running = true
155
153
 
156
154
  @client.on :open do |event|
@@ -192,6 +190,8 @@ class SlackBotServer::Bot
192
190
  end
193
191
 
194
192
  @client.start_async
193
+ rescue Slack::Web::Api::Error => e
194
+ raise ConnectionError.new(e.message, e.response)
195
195
  end
196
196
 
197
197
  # Stops the bot from running. You should not call this method; instead
@@ -353,9 +353,7 @@ class SlackBotServer::Bot
353
353
  end
354
354
 
355
355
  on :finish do
356
- if @running
357
- start
358
- end
356
+ start if @running
359
357
  end
360
358
 
361
359
  # Returns a String representation of this {Bot}
@@ -396,11 +394,11 @@ class SlackBotServer::Bot
396
394
  end
397
395
 
398
396
  def load_channels
399
- log "Loading channels"
397
+ debug "Loading channels"
400
398
  @im_channels = @client.ims
401
- log im_channels: @im_channels
399
+ debug im_channels: @im_channels
402
400
  @channels = @client.channels.select { |d| d['is_member'] == true }
403
- log channels: @channels
401
+ debug channels: @channels
404
402
  end
405
403
 
406
404
  def channel(id)
@@ -99,7 +99,7 @@ class SlackBotServer::Server
99
99
  # @see #on_add
100
100
  def add_bot(*args)
101
101
  bot = @add_proc.call(*args)
102
- if bot.respond_to?(:start)
102
+ if bot.respond_to?(:start) && !bot(bot.key)
103
103
  log "adding bot #{bot}"
104
104
  @bots[bot.key.to_sym] = bot
105
105
  bot.start if @running
@@ -136,7 +136,7 @@ class SlackBotServer::Server
136
136
  def process_instruction(instruction)
137
137
  type, *args = instruction
138
138
  bot_key = args.shift
139
- if type == :add_bot
139
+ if type.to_sym == :add_bot
140
140
  log "adding bot: #{bot_key} #{args.inspect}"
141
141
  add_bot(bot_key, *args)
142
142
  else
@@ -1,4 +1,4 @@
1
1
  module SlackBotServer
2
2
  # The current version of the +SlackBotServer+ framework
3
- VERSION = "0.4.1"
3
+ VERSION = "0.4.2"
4
4
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "slack-ruby-client", "~> 0.5"
22
+ spec.add_dependency "slack-ruby-client", "~> 0.5.3"
23
23
  spec.add_dependency "faye-websocket", "~> 0.10"
24
24
  spec.add_dependency "multi_json"
25
25
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-bot-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Adam
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-17 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slack-ruby-client
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.5'
19
+ version: 0.5.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.5'
26
+ version: 0.5.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faye-websocket
29
29
  requirement: !ruby/object:Gem::Requirement