slappy 0.6.0 → 0.6.1
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 +4 -4
- data/README.md +36 -3
- data/lib/slappy/client.rb +14 -6
- data/lib/slappy/configuration.rb +10 -5
- data/lib/slappy/event.rb +1 -1
- data/lib/slappy/listeners/concerns/validatable.rb +1 -0
- data/lib/slappy/messenger.rb +5 -4
- data/lib/slappy/slack_api/concerns/findable.rb +17 -12
- data/lib/slappy/version.rb +1 -1
- data/templates/slappy_config.rb +6 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08b2f8a7bb472cacd6e51da0269ee094156f5c3a
|
4
|
+
data.tar.gz: d48fb38cd54741eb27c1fbf5da175b83b6d43066
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 718627aa86b2ea59910af1088b9625b4059e6b98d21cca3a685bb469ae1e9c2666e0878d0f566881bcf9c0a6c335e12cb26afea5e93bff0887b1ba6c21c52706
|
7
|
+
data.tar.gz: 02c6b3286816b055d29a596d01a5a8a22c41ceed109f0a09f82c836e3aa9fb5cf1ff08fd67c26cdb0ac9490195041e109c825b7c5b4fce856fe5b2c0f4dff439
|
data/README.md
CHANGED
@@ -106,6 +106,7 @@ Slappy.say 'hello!' #=> username: slappy, channel: '#general', icon_emoji: ':sla
|
|
106
106
|
```
|
107
107
|
token - default: ENV['SLACK_TOKEN']
|
108
108
|
scripts_dir_path - default : 'slappy-scripts'
|
109
|
+
stop_with_error - default: true
|
109
110
|
|
110
111
|
robot.botname - not effect now
|
111
112
|
robot.username - default: 'slappy'
|
@@ -178,12 +179,34 @@ There conditions, this event be called:
|
|
178
179
|
- `raise StandardError` in script
|
179
180
|
- trap SIGTERM or SIGINT
|
180
181
|
|
181
|
-
```
|
182
|
+
```ruby
|
182
183
|
goodnight do
|
183
184
|
logger.info 'goodnight'
|
184
185
|
end
|
185
186
|
```
|
186
187
|
|
188
|
+
#### From Option
|
189
|
+
|
190
|
+
From Option enable to `hear`, `monitor`, and `respond`.
|
191
|
+
This option specify reaction target!
|
192
|
+
|
193
|
+
```ruby
|
194
|
+
# specify target channel
|
195
|
+
hear 'slappy', from: { channel: '#slappy' } do |event|
|
196
|
+
logger.info 'slappy!'
|
197
|
+
end
|
198
|
+
|
199
|
+
# specify target user
|
200
|
+
hear 'slappy', from: { username: '@slappy' } do |event|
|
201
|
+
logger.info 'slappy!'
|
202
|
+
end
|
203
|
+
|
204
|
+
# specify target user and channel
|
205
|
+
hear 'slappy', from: { channel: '#slappy', username: '@slappy' } do |event|
|
206
|
+
logger.info 'slappy!'
|
207
|
+
end
|
208
|
+
```
|
209
|
+
|
187
210
|
### DSL Methods
|
188
211
|
|
189
212
|
|method|when execute callback|
|
@@ -197,7 +220,7 @@ end
|
|
197
220
|
|
198
221
|
### Event Methods
|
199
222
|
|
200
|
-
```
|
223
|
+
```ruby
|
201
224
|
hear 'slappy' do |event|
|
202
225
|
return if event.bot_message? #=> check message from webhook or integration
|
203
226
|
event.relpy 'slappy' #=> relpy to event channel
|
@@ -207,6 +230,7 @@ end
|
|
207
230
|
|
208
231
|
|method|description|
|
209
232
|
|:---:|:---|
|
233
|
+
|data|get response JSON Hash (Hashie::Mash) from Slack API|
|
210
234
|
|bot_message?|check message from bot (webhook or integration is true)|
|
211
235
|
|reply|reply message to event channel|
|
212
236
|
|reaction|add reaction to event message|
|
@@ -216,7 +240,7 @@ end
|
|
216
240
|
|
217
241
|
If you not want execute `slappy start` command, written by (require `'slappy/dsl'` use DSL):
|
218
242
|
|
219
|
-
```
|
243
|
+
```ruby
|
220
244
|
require 'slappy'
|
221
245
|
|
222
246
|
Slappy.hello do
|
@@ -230,7 +254,16 @@ Slappy.start #=> Start WebSocket connection
|
|
230
254
|
|
231
255
|
## Release Note
|
232
256
|
|
257
|
+
- v0.6.1
|
258
|
+
- Fix ts validation
|
259
|
+
- validation skil when ts be nil
|
260
|
+
- Fix option be bang change in Messenger#initialize
|
261
|
+
- Add Event#data
|
262
|
+
- Add stop_with_error option
|
263
|
+
|
233
264
|
- v0.6.0
|
265
|
+
- Add from option to hear, monitor
|
266
|
+
- specify event target
|
234
267
|
- respond method
|
235
268
|
- respond event call when add message to botname prefix
|
236
269
|
- goodnight method
|
data/lib/slappy/client.rb
CHANGED
@@ -14,19 +14,17 @@ module Slappy
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def start
|
17
|
-
|
18
|
-
|
19
|
-
register_event event_name, listeners
|
20
|
-
end
|
21
|
-
set_signal_trap
|
17
|
+
setup
|
18
|
+
|
22
19
|
Debug.log 'Slappy start'
|
20
|
+
|
23
21
|
begin
|
24
22
|
client.start
|
25
23
|
rescue StandardError => e
|
26
24
|
@callbacks[:goodnight].each(&:call) if @callbacks[:goodnight]
|
27
25
|
STDERR.puts e.backtrace.slice!(0) + ': ' + e.message
|
28
26
|
STDERR.puts "\tfrom " + e.backtrace.join("\n\tfrom ")
|
29
|
-
exit 1
|
27
|
+
exit 1 if config.stop_with_error
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
@@ -66,6 +64,16 @@ module Slappy
|
|
66
64
|
|
67
65
|
private
|
68
66
|
|
67
|
+
def setup
|
68
|
+
@start_time = Time.now
|
69
|
+
|
70
|
+
@callbacks.each do |event_name, listeners|
|
71
|
+
register_event event_name, listeners
|
72
|
+
end
|
73
|
+
|
74
|
+
set_signal_trap
|
75
|
+
end
|
76
|
+
|
69
77
|
def register_callback(name, type, callback)
|
70
78
|
@callbacks[type] ||= []
|
71
79
|
@callbacks[type].push callback
|
data/lib/slappy/configuration.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
module Slappy
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :robot, :token, :scripts_dir_path, :lib_dir_path, :logger
|
3
|
+
attr_accessor :robot, :token, :scripts_dir_path, :lib_dir_path, :logger, :stop_with_error
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
@robot = Robot.new
|
7
7
|
end
|
8
8
|
|
9
|
+
def stop_with_error
|
10
|
+
@stop_with_error = true if @stop_with_error.nil?
|
11
|
+
@stop_with_error
|
12
|
+
end
|
13
|
+
|
9
14
|
def logger
|
10
15
|
unless @logger
|
11
16
|
@logger = Logger.new(STDOUT)
|
@@ -15,7 +20,7 @@ module Slappy
|
|
15
20
|
end
|
16
21
|
|
17
22
|
def token
|
18
|
-
@token
|
23
|
+
@token ||= ENV['SLACK_TOKEN']
|
19
24
|
end
|
20
25
|
|
21
26
|
def config_file_path
|
@@ -23,15 +28,15 @@ module Slappy
|
|
23
28
|
end
|
24
29
|
|
25
30
|
def lib_dir_path
|
26
|
-
@lib_dir_path
|
31
|
+
@lib_dir_path ||= './lib'
|
27
32
|
end
|
28
33
|
|
29
34
|
def scripts_dir_path
|
30
|
-
@scripts_dir_path
|
35
|
+
@scripts_dir_path ||= './slappy-scripts'
|
31
36
|
end
|
32
37
|
|
33
38
|
def dsl
|
34
|
-
@dsl
|
39
|
+
@dsl ||= :enabled
|
35
40
|
end
|
36
41
|
|
37
42
|
def dsl=(symbol)
|
data/lib/slappy/event.rb
CHANGED
data/lib/slappy/messenger.rb
CHANGED
@@ -4,11 +4,12 @@ module Slappy
|
|
4
4
|
|
5
5
|
CHANNEL_APIS = [SlackAPI::Channel, SlackAPI::Group, SlackAPI::Direct]
|
6
6
|
|
7
|
-
def initialize(options)
|
7
|
+
def initialize(options = {})
|
8
|
+
opt = options.dup
|
8
9
|
@destination = {}
|
9
|
-
@destination =
|
10
|
-
|
11
|
-
@options =
|
10
|
+
@destination = opt[:channel]
|
11
|
+
opt.delete :channel
|
12
|
+
@options = opt
|
12
13
|
end
|
13
14
|
|
14
15
|
def message
|
@@ -38,18 +38,7 @@ module Slappy
|
|
38
38
|
|
39
39
|
def list(options = {})
|
40
40
|
register_monitor
|
41
|
-
|
42
|
-
unless @list
|
43
|
-
method_name = "#{api_name}_list"
|
44
|
-
|
45
|
-
options[:channel] = SlackAPI.find(options[:channel]).id if options[:channel]
|
46
|
-
result = Slack.send(method_name, options)
|
47
|
-
unless result['ok']
|
48
|
-
exception = SlackError.new "Error message from slack (#{result['error']})"
|
49
|
-
fail exception, exception.message
|
50
|
-
end
|
51
|
-
@list = result[list_name].map { |data| new(data) }
|
52
|
-
end
|
41
|
+
@list = get_list(options) unless @list
|
53
42
|
@list
|
54
43
|
end
|
55
44
|
|
@@ -69,6 +58,22 @@ module Slappy
|
|
69
58
|
def find_by_keyword(hash)
|
70
59
|
hash.map { |key, value| list.find { |obj| obj.send(key) == value } }.first
|
71
60
|
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def get_list(options = {})
|
65
|
+
method_name = "#{api_name}_list"
|
66
|
+
|
67
|
+
options[:channel] = SlackAPI.find(options[:channel]).id if options[:channel]
|
68
|
+
result = Slack.send(method_name, options)
|
69
|
+
|
70
|
+
unless result['ok']
|
71
|
+
exception = SlackError.new "Error message from slack (#{result['error']})"
|
72
|
+
fail exception, exception.message
|
73
|
+
end
|
74
|
+
|
75
|
+
result[list_name].map { |data| new(data) }
|
76
|
+
end
|
72
77
|
end
|
73
78
|
end
|
74
79
|
end
|
data/lib/slappy/version.rb
CHANGED
data/templates/slappy_config.rb
CHANGED
@@ -29,6 +29,12 @@ Slappy.configure do |config|
|
|
29
29
|
#
|
30
30
|
# config.dsl = :enabled
|
31
31
|
|
32
|
+
# stop_with_error:
|
33
|
+
# Select bot be stop when catch StandardError.
|
34
|
+
# If false, puts stack trace but be not stop when bot catch StandardError.
|
35
|
+
#
|
36
|
+
# config.stop_with_exception = true
|
37
|
+
|
32
38
|
## Default parameters
|
33
39
|
#
|
34
40
|
# There parameters use in say method when send to Slack.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slappy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wakaba260
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slack-api
|
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
292
292
|
version: '0'
|
293
293
|
requirements: []
|
294
294
|
rubyforge_project:
|
295
|
-
rubygems_version: 2.
|
295
|
+
rubygems_version: 2.5.0
|
296
296
|
signing_key:
|
297
297
|
specification_version: 4
|
298
298
|
summary: Simple Slack Bot Framework
|