slack-bot-server 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58eb298f86ae1232eae9487d0fc28c27eb15a9b4
4
- data.tar.gz: 7cfe32f6ff625b0e6cee19872378d50021502396
3
+ metadata.gz: f1086fe2f192f0ea950041f91799d67bc8e7966e
4
+ data.tar.gz: 85e02d179a2fb1ca62c8064206244fb3da90c197
5
5
  SHA512:
6
- metadata.gz: 906ea70d84f329a2b4ef0e3968c33dd32892d55a7c3d6db18f6a9d9ba1cfbf3177587f9bf0ae6399e371ffdcbe0312231c18e44f132088140cb9942fcb4219a7
7
- data.tar.gz: 963d701368d4038051b42d63b1869831fb3c03163b9bce3737822e2a8df5fbe4c44407851e8c4ebeb4cb0cc21703b2ea67c84d81ee317463403d1005b68605a6
6
+ metadata.gz: 6c48425cac63a28ffe08a8af43702183b532127307f61807db94088470e6a4d050011fb5c5b732ba10d00ab8eab51736b73b9c98aa7d2e97fbc6fb5d803e6daa
7
+ data.tar.gz: 3a09cc3baa9e35cf4193a7638627e584b7b7413ea85fe06ed2b9470393fb295890255bd66cdb6bde928946c44df03d873c3fc373f7151a0a1210392d1b212b45
@@ -1,28 +1,42 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.4.5
4
+
5
+ ### Added
6
+ - Add `on_slack_event` for adding low-level event callbacks like `team_join` or `presence_changed`
7
+
8
+
3
9
  ## 0.4.4
4
10
 
5
- ### Changes
11
+ ### Added
6
12
  - Add new bot-private API method `user_message?(data)`, which returns true if the message is some utterance from a user
13
+
14
+ ### Changes
7
15
  - Allow replying from the low-level `on(:message)` callback, although caution should be exercised when doing this (i.e. make sure you aren't replying to bot or other low-level API messages!)
8
16
 
17
+
9
18
  ## 0.4.3
10
19
 
11
- ### Changes
20
+ ### Added
12
21
  - Add `clear` method to queues
22
+
23
+ ### Changes
13
24
  - Upgrate `slack-ruby-client` dependency to latest version
14
25
 
26
+
15
27
  ## 0.4.2
16
28
 
17
29
  ### Changes
18
30
  - Re-use error raising from within Slack::Web::Api
19
31
  - Prevent bots with the same key as existing bots from being added (@keydunov)
20
32
 
33
+
21
34
  ## 0.4.1
22
35
 
23
36
  ### Changes
24
37
  - Fixed detection of RTM-compatible messages
25
38
 
39
+
26
40
  ## 0.4.0
27
41
 
28
42
  ### Added
@@ -1,3 +1,4 @@
1
+ require 'slack_bot_server/logging'
1
2
  require 'slack'
2
3
  require 'slack-ruby-client'
3
4
 
@@ -31,6 +32,8 @@ require 'slack-ruby-client'
31
32
  # end
32
33
  #
33
34
  class SlackBotServer::Bot
35
+ include SlackBotServer::Logging
36
+ extend SlackBotServer::Logging
34
37
 
35
38
  # The user ID of the special slack user +SlackBot+
36
39
  SLACKBOT_USER_ID = 'USLACKBOT'
@@ -161,8 +164,7 @@ class SlackBotServer::Bot
161
164
  @last_received_user_message = data if user_message?(data)
162
165
  handle_message(data)
163
166
  rescue => e
164
- log error: e
165
- log backtrace: e.backtrace
167
+ log_error e
166
168
  end
167
169
  end
168
170
 
@@ -172,6 +174,8 @@ class SlackBotServer::Bot
172
174
  run_callbacks(:finish)
173
175
  end
174
176
 
177
+ register_low_level_callbacks_on(@client)
178
+
175
179
  @client.start_async
176
180
  rescue Slack::Web::Api::Error => e
177
181
  raise ConnectionError.new(e.message, e.response)
@@ -329,11 +333,16 @@ class SlackBotServer::Bot
329
333
  end
330
334
  end
331
335
  end
332
- end
333
336
 
334
- # on :start do
335
- # load_channels
336
- # end
337
+ def low_level_callbacks
338
+ @low_level_callbacks ||= []
339
+ end
340
+
341
+ # Define a callback to use when a low-level slack event is fired
342
+ def on_slack_event(name, &block)
343
+ self.low_level_callbacks << [name, block]
344
+ end
345
+ end
337
346
 
338
347
  on :finish do
339
348
  start if @running
@@ -359,21 +368,16 @@ class SlackBotServer::Bot
359
368
  end
360
369
  end
361
370
 
362
- def log(*args)
363
- SlackBotServer.logger.info(log_string(*args))
364
- end
365
-
366
- def debug(*args)
367
- SlackBotServer.logger.debug(log_string(*args))
368
- end
369
-
370
- def log_string(*args)
371
- text = if args.length == 1 && args.first.is_a?(String)
372
- args.first
373
- else
374
- args.map { |a| a.is_a?(String) ? a : a.inspect }.join(", ")
371
+ def register_low_level_callbacks_on(client)
372
+ self.class.low_level_callbacks.each do |(type, callback)|
373
+ client.on(type) do |*args|
374
+ begin
375
+ callback.call(*args)
376
+ rescue => e
377
+ log_error e
378
+ end
379
+ end
375
380
  end
376
- "[BOT/#{bot_user_name}] #{text}"
377
381
  end
378
382
 
379
383
  def is_im_channel?(id)
@@ -0,0 +1,28 @@
1
+ module SlackBotServer::Logging
2
+ def log(*args)
3
+ SlackBotServer.logger.info(log_string(*args))
4
+ end
5
+
6
+ def debug(*args)
7
+ SlackBotServer.logger.debug(log_string(*args))
8
+ end
9
+
10
+ def log_error(e)
11
+ SlackBotServer.logger.warn("ERROR: #{e} - #{e.message}")
12
+ SlackBotServer.logger.warn(e.backtrace.join("\n"))
13
+ end
14
+
15
+ def log_string(*args)
16
+ text = if args.length == 1 && args.first.is_a?(String)
17
+ args.first
18
+ else
19
+ args.map { |a| a.is_a?(String) ? a : a.inspect }.join(", ")
20
+ end
21
+ prefix = if self.respond_to?(:bot_user_name)
22
+ "[BOT/#{bot_user_name}]"
23
+ else
24
+ nil
25
+ end
26
+ [prefix, text].join(" ")
27
+ end
28
+ end
@@ -1,6 +1,7 @@
1
1
  require 'slack_bot_server/bot'
2
2
  require 'slack_bot_server/simple_bot'
3
3
  require 'slack_bot_server/redis_queue'
4
+ require 'slack_bot_server/logging'
4
5
  require 'eventmachine'
5
6
 
6
7
  # Implements a server for running multiple Slack bots. Bots can be
@@ -48,6 +49,8 @@ require 'eventmachine'
48
49
  # itself
49
50
  #
50
51
  class SlackBotServer::Server
52
+ include SlackBotServer::Logging
53
+
51
54
  attr_reader :queue
52
55
 
53
56
  # Creates a new {Server}
@@ -164,15 +167,10 @@ class SlackBotServer::Server
164
167
  end
165
168
  end
166
169
 
167
- def log(message)
168
- text = message.is_a?(String) ? message : message.inspect
169
- SlackBotServer.logger.info(text)
170
- end
171
-
172
- def log_error(e)
173
- SlackBotServer.logger.warn("Error in server: #{e} - #{e.message}")
174
- SlackBotServer.logger.warn(e.backtrace.join("\n"))
175
- end
170
+ # def log(message)
171
+ # text = message.is_a?(String) ? message : message.inspect
172
+ # SlackBotServer.logger.info(text)
173
+ # end
176
174
 
177
175
  def with_bot(key)
178
176
  if bot = bot(key)
@@ -1,4 +1,4 @@
1
1
  module SlackBotServer
2
2
  # The current version of the +SlackBotServer+ framework
3
- VERSION = "0.4.4"
3
+ VERSION = "0.4.5"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-bot-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Adam
@@ -156,6 +156,7 @@ files:
156
156
  - lib/slack_bot_server.rb
157
157
  - lib/slack_bot_server/bot.rb
158
158
  - lib/slack_bot_server/local_queue.rb
159
+ - lib/slack_bot_server/logging.rb
159
160
  - lib/slack_bot_server/redis_queue.rb
160
161
  - lib/slack_bot_server/remote_control.rb
161
162
  - lib/slack_bot_server/server.rb