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 +4 -4
- data/CHANGELOG.md +16 -2
- data/lib/slack_bot_server/bot.rb +24 -20
- data/lib/slack_bot_server/logging.rb +28 -0
- data/lib/slack_bot_server/server.rb +7 -9
- data/lib/slack_bot_server/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1086fe2f192f0ea950041f91799d67bc8e7966e
|
4
|
+
data.tar.gz: 85e02d179a2fb1ca62c8064206244fb3da90c197
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c48425cac63a28ffe08a8af43702183b532127307f61807db94088470e6a4d050011fb5c5b732ba10d00ab8eab51736b73b9c98aa7d2e97fbc6fb5d803e6daa
|
7
|
+
data.tar.gz: 3a09cc3baa9e35cf4193a7638627e584b7b7413ea85fe06ed2b9470393fb295890255bd66cdb6bde928946c44df03d873c3fc373f7151a0a1210392d1b212b45
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
###
|
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
|
-
###
|
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
|
data/lib/slack_bot_server/bot.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
335
|
-
|
336
|
-
|
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
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
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
|
-
|
169
|
-
|
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)
|
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
|
+
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
|