slack-bot-server 0.4.4 → 0.4.5

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: 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