slack-ruby-bot 0.5.5 → 0.6.0
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/CHANGELOG.md +4 -0
- data/README.md +22 -24
- data/TUTORIAL.md +7 -7
- data/UPGRADING.md +105 -0
- data/examples/minimal/pongbot.rb +1 -1
- data/examples/weather/weatherbot.rb +1 -1
- data/lib/slack-ruby-bot/bot.rb +7 -1
- data/lib/slack-ruby-bot/client.rb +23 -0
- data/lib/slack-ruby-bot/commands/about.rb +1 -1
- data/lib/slack-ruby-bot/commands/base.rb +7 -32
- data/lib/slack-ruby-bot/commands/help.rb +1 -1
- data/lib/slack-ruby-bot/commands/hi.rb +1 -1
- data/lib/slack-ruby-bot/commands/unknown.rb +1 -1
- data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_message.rb +1 -1
- data/lib/slack-ruby-bot/version.rb +1 -1
- data/spec/slack-ruby-bot/commands/bot_spec.rb +6 -3
- data/spec/slack-ruby-bot/commands/commands_precedence_spec.rb +2 -2
- data/spec/slack-ruby-bot/commands/commands_regexp_escape_spec.rb +1 -1
- data/spec/slack-ruby-bot/commands/commands_spaces_spec.rb +1 -1
- data/spec/slack-ruby-bot/commands/commands_spec.rb +1 -1
- data/spec/slack-ruby-bot/commands/commands_with_block_spec.rb +2 -2
- data/spec/slack-ruby-bot/commands/empty_text_spec.rb +2 -2
- data/spec/slack-ruby-bot/commands/match_spec.rb +1 -1
- data/spec/slack-ruby-bot/commands/message_loop_spec.rb +2 -2
- data/spec/slack-ruby-bot/commands/nil_message_spec.rb +1 -1
- data/spec/slack-ruby-bot/commands/operators_spec.rb +1 -1
- data/spec/slack-ruby-bot/commands/operators_with_block_spec.rb +2 -2
- data/spec/slack-ruby-bot/commands/send_gif_spec.rb +4 -4
- data/spec/slack-ruby-bot/commands/send_message_spec.rb +2 -2
- data/spec/slack-ruby-bot/commands/send_message_with_gif_spec.rb +7 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b27b94f1f7396de181c038e27e4896b1754dc4b
|
4
|
+
data.tar.gz: aae8cf08bbc1839ee45efa03fb752080290c3216
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96b648ba4ab3cc77c37bc351f5cdb77efd92b427763e0f90627d8e2d1389035cf3ff7fb06ef0a59f7be70fe7e06cd95af3cfd67adb007a2f9bef769b0387e9e3
|
7
|
+
data.tar.gz: 3a8d709cda131675445dc986ecb67d7e62f63a17bae29820a89622f4dff2701d3d7f2b701ee416e2cde9b67577b38e51f628bb14d4ad48514d0b46516f390a7b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
### 0.6.0 (1/9/2016)
|
2
|
+
|
3
|
+
* Deprecated `SlackRubyBot::Base#send_message`, `send_message_with_gif` and `send_gif` in favor of `client.say` - [@dblock](https://github.com/dblock).
|
4
|
+
|
1
5
|
### 0.5.5 (1/4/2016)
|
2
6
|
|
3
7
|
* Added `SlackRubyBot::Bot` DSL sugar - [@dblock](https://github.com/dblock).
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ A generic Slack bot framework written in Ruby on top of [slack-ruby-client](http
|
|
17
17
|
|
18
18
|
## Stable Release
|
19
19
|
|
20
|
-
You're reading the documentation for the **stable** release of slack-ruby-bot, 0.
|
20
|
+
You're reading the documentation for the **stable** release of slack-ruby-bot, 0.6.0. See [CHANGELOG](CHANGELOG.md) for a history of changes and [UPGRADING](UPGRADING.md) for how to upgrade to more recent versions.
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
@@ -38,7 +38,7 @@ require 'slack-ruby-bot'
|
|
38
38
|
|
39
39
|
class PongBot < SlackRubyBot::Bot
|
40
40
|
command 'ping' do |client, data, match|
|
41
|
-
client.
|
41
|
+
client.say(text: 'pong', channel: data.channel)
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -65,13 +65,13 @@ The following examples of bots based on slack-ruby-bot are listed in growing ord
|
|
65
65
|
|
66
66
|
### Commands and Operators
|
67
67
|
|
68
|
-
Bots are addressed by name, they respond to commands and operators.
|
69
|
-
|
70
|
-
You can combine multiple commands and use a block to implement them.
|
68
|
+
Bots are addressed by name, they respond to commands and operators. You can combine multiple commands.
|
71
69
|
|
72
70
|
```ruby
|
73
|
-
|
74
|
-
|
71
|
+
class CallBot < SlackRubyBot::Bot
|
72
|
+
command 'call', '呼び出し' do |client, data, match|
|
73
|
+
client.say(channel: data.channel, text: 'called')
|
74
|
+
end
|
75
75
|
end
|
76
76
|
```
|
77
77
|
|
@@ -80,8 +80,10 @@ Command match data includes `match['bot']`, `match['command']` and `match['expre
|
|
80
80
|
Operators are 1-letter long and are similar to commands. They don't require addressing a bot nor separating an operator from its arguments. The following class responds to `=2+2`.
|
81
81
|
|
82
82
|
```ruby
|
83
|
-
|
84
|
-
|
83
|
+
class MathBot < SlackRubyBot::Bot
|
84
|
+
operator '=' do |client, data, match|
|
85
|
+
# implementation detail
|
86
|
+
end
|
85
87
|
end
|
86
88
|
```
|
87
89
|
|
@@ -116,7 +118,7 @@ Commands and operators are generic versions of bot routes. You can respond to ju
|
|
116
118
|
```ruby
|
117
119
|
class Weather < SlackRubyBot::Bot
|
118
120
|
match /^How is the weather in (?<location>\w*)\?$/ do |client, data, match|
|
119
|
-
|
121
|
+
client.say(channel: data.channel, text: "The weather in #{match[:location]} is nice.")
|
120
122
|
end
|
121
123
|
end
|
122
124
|
```
|
@@ -125,14 +127,14 @@ end
|
|
125
127
|
|
126
128
|
### SlackRubyBot::Commands::Base
|
127
129
|
|
128
|
-
The `SlackRubyBot::Bot` class is
|
130
|
+
The `SlackRubyBot::Bot` class is DSL sugar deriving from `SlackRubyBot::Commands::Base`. For more involved bots you can organize the bot implementation into subclasses of `SlackRubyBot::Commands::Base` manually. By default a command class responds, case-insensitively, to its name. A class called `Phone` that inherits from `SlackRubyBot::Commands::Base` responds to `phone` and `Phone` and calls the `call` method when implemented.
|
129
131
|
|
130
132
|
```ruby
|
131
133
|
class Phone < SlackRubyBot::Commands::Base
|
132
134
|
command 'call'
|
133
135
|
|
134
136
|
def self.call(client, data, match)
|
135
|
-
|
137
|
+
client.say(channel: data.channel, text: 'called')
|
136
138
|
end
|
137
139
|
end
|
138
140
|
```
|
@@ -145,24 +147,16 @@ class Phone < SlackRubyBot::Commands::Base
|
|
145
147
|
command '呼び出し'
|
146
148
|
|
147
149
|
def self.call(client, data, match)
|
148
|
-
|
150
|
+
client.say(channel: data.channel, text: 'called')
|
149
151
|
end
|
150
152
|
end
|
151
153
|
```
|
152
154
|
|
153
|
-
|
154
|
-
|
155
|
-
#### send_message(client, channel, text)
|
156
|
-
|
157
|
-
Send text using a RealTime client to a channel.
|
155
|
+
The `SlackRubyBot::Client` implementation comes with GIF support.
|
158
156
|
|
159
|
-
####
|
157
|
+
#### say(channel: ..., text: ..., gif: ...)
|
160
158
|
|
161
|
-
|
162
|
-
|
163
|
-
## send_gif(client, channel, keyword)
|
164
|
-
|
165
|
-
Send a random animated GIF based on a keyword.
|
159
|
+
Sends text and/or a random GIF that matches a keyword using a RealTime client to a channel.
|
166
160
|
|
167
161
|
### Built-In Commands
|
168
162
|
|
@@ -248,6 +242,10 @@ Slack-ruby-bot ships with a number of shared RSpec behaviors that can be used in
|
|
248
242
|
* [respond with slack message](lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_message.rb): The bot responds with a message.
|
249
243
|
* [respond with error](lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_error.rb): An exception is raised inside a bot command.
|
250
244
|
|
245
|
+
### Useful Libraries
|
246
|
+
|
247
|
+
* [newrelic-slack-ruby-bot](https://github.com/dblock/newrelic-slack-ruby-bot): NewRelic instrumentation for slack-ruby-bot.
|
248
|
+
|
251
249
|
## Contributing
|
252
250
|
|
253
251
|
See [CONTRIBUTING](CONTRIBUTING.md).
|
data/TUTORIAL.md
CHANGED
@@ -34,11 +34,11 @@ Run `bundle install` to get all the gems.
|
|
34
34
|
|
35
35
|
#### Application
|
36
36
|
|
37
|
-
Create a folder called `slack-mathbot` and inside of it create `
|
37
|
+
Create a folder called `slack-mathbot` and inside of it create `bot.rb`.
|
38
38
|
|
39
39
|
```ruby
|
40
40
|
module SlackMathbot
|
41
|
-
class
|
41
|
+
class Bot < SlackRubyBot::Bot
|
42
42
|
end
|
43
43
|
end
|
44
44
|
```
|
@@ -52,7 +52,7 @@ module SlackMathbot
|
|
52
52
|
module Commands
|
53
53
|
class Calculate < SlackRubyBot::Commands::Base
|
54
54
|
command 'calculate' do |client, data, _match|
|
55
|
-
|
55
|
+
client.say(chanbel: data.channel, text: '4')
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -66,7 +66,7 @@ Create a `slack-mathbot.rb` at the root and require the above files.
|
|
66
66
|
```ruby
|
67
67
|
require 'slack-ruby-bot'
|
68
68
|
require 'slack-mathbot/commands/calculate'
|
69
|
-
require 'slack-mathbot/
|
69
|
+
require 'slack-mathbot/bot'
|
70
70
|
```
|
71
71
|
|
72
72
|
#### Web Server
|
@@ -99,7 +99,7 @@ Thread.abort_on_exception = true
|
|
99
99
|
|
100
100
|
Thread.new do
|
101
101
|
begin
|
102
|
-
SlackMathbot::
|
102
|
+
SlackMathbot::Bot.run
|
103
103
|
rescue Exception => e
|
104
104
|
STDERR.puts "ERROR: #{e}"
|
105
105
|
STDERR.puts e.backtrace
|
@@ -175,7 +175,7 @@ require 'spec_helper'
|
|
175
175
|
|
176
176
|
describe SlackMathbot::App do
|
177
177
|
def app
|
178
|
-
SlackMathbot::
|
178
|
+
SlackMathbot::Bot.instance
|
179
179
|
end
|
180
180
|
it_behaves_like 'a slack ruby bot'
|
181
181
|
end
|
@@ -190,7 +190,7 @@ require 'spec_helper'
|
|
190
190
|
|
191
191
|
describe SlackMathbot::Commands::Calculate do
|
192
192
|
def app
|
193
|
-
SlackMathbot::
|
193
|
+
SlackMathbot::Bot.instance
|
194
194
|
end
|
195
195
|
it 'returns 4' do
|
196
196
|
expect(message: "#{SlackRubyBot.config.user} calculate 2+2", channel: 'channel').to respond_with_slack_message('4')
|
data/UPGRADING.md
CHANGED
@@ -1,6 +1,111 @@
|
|
1
1
|
Upgrading SlackRubyBot
|
2
2
|
======================
|
3
3
|
|
4
|
+
### Upgrading to >= 0.6.0
|
5
|
+
|
6
|
+
While entirely compatible with the 0.5.x series, a number of methods have been deprecated and will be removed in the next release.
|
7
|
+
|
8
|
+
#### Replace SlackRubyBot::Commands::Base#call with command, operator or match
|
9
|
+
|
10
|
+
Prefer `command`, `operator` or `match` with a block instead of implementing a `self.call` method.
|
11
|
+
|
12
|
+
Before:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
require 'slack-ruby-bot'
|
16
|
+
|
17
|
+
class Bot < SlackRubyBot::Bot
|
18
|
+
command 'ping'
|
19
|
+
|
20
|
+
def self.call(client, data, match)
|
21
|
+
...
|
22
|
+
end
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
After:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
require 'slack-ruby-bot'
|
30
|
+
|
31
|
+
class Bot < SlackRubyBot::Bot
|
32
|
+
command 'ping' do |client, data, match|
|
33
|
+
...
|
34
|
+
end
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
#### Replace send_message, send_message_with_gif and send_gif with client.say
|
39
|
+
|
40
|
+
Use `client.say` instead of `send_message`, `send_message_with_gif` and `send_gif` in commands.
|
41
|
+
|
42
|
+
Before:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
class Bot < SlackRubyBot::Bot
|
46
|
+
command 'one' do |client, data, match|
|
47
|
+
send_message client, data.channel, 'Text.'
|
48
|
+
end
|
49
|
+
|
50
|
+
command 'two' do |client, data, match|
|
51
|
+
send_message_with_gif client, data.channel, "Text.", 'keyword'
|
52
|
+
end
|
53
|
+
|
54
|
+
command 'three' do |client, data, match|
|
55
|
+
send_gif client, data.channel, 'keyword'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
```
|
59
|
+
|
60
|
+
After:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
class Bot < SlackRubyBot::Bot
|
64
|
+
command 'one' do |client, data, match|
|
65
|
+
client.say(channel: data.channel, text: 'Text.')
|
66
|
+
end
|
67
|
+
|
68
|
+
command 'two' do |client, data, match|
|
69
|
+
client.say(channel: data.channel, text: 'Text.', gif: 'keyword')
|
70
|
+
end
|
71
|
+
|
72
|
+
command 'three' do |client, data, match|
|
73
|
+
client.say(channel: data.channel, gif: 'keyword')
|
74
|
+
end
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
#### For basic bots replace SlackRubyBot::App with SlackRubyBot::Bot and implement commands inline
|
79
|
+
|
80
|
+
Before:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
module PongBot
|
84
|
+
class App < SlackRubyBot::App
|
85
|
+
end
|
86
|
+
|
87
|
+
class Ping < SlackRubyBot::Commands::Base
|
88
|
+
command 'ping' do |client, data, _match|
|
89
|
+
client.message(text: 'pong', channel: data.channel)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
PongBot::App.instance.run
|
95
|
+
```
|
96
|
+
|
97
|
+
After:
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
class Bot < SlackRubyBot::Bot
|
101
|
+
command 'ping' do |client, data, _match|
|
102
|
+
client.say(text: 'pong', channel: data.channel)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
Bot.run
|
107
|
+
```
|
108
|
+
|
4
109
|
### Upgrading to >= 0.4.0
|
5
110
|
|
6
111
|
This version uses [slack-ruby-client](https://github.com/dblock/slack-ruby-client) instead of [slack-ruby-gem](https://github.com/aki017/slack-ruby-gem).
|
data/examples/minimal/pongbot.rb
CHANGED
@@ -2,7 +2,7 @@ require 'slack-ruby-bot'
|
|
2
2
|
|
3
3
|
class WeatherBot < SlackRubyBot::Bot
|
4
4
|
match(/^How is the weather in (?<location>\w*)\?$/i) do |client, data, match|
|
5
|
-
|
5
|
+
client.say(channel: data.channel, text: "The weather in #{match[:location]} is nice.")
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
data/lib/slack-ruby-bot/bot.rb
CHANGED
@@ -40,5 +40,28 @@ module SlackRubyBot
|
|
40
40
|
def url
|
41
41
|
SlackRubyBot.config.url || (auth && auth['url'])
|
42
42
|
end
|
43
|
+
|
44
|
+
def logger
|
45
|
+
@logger ||= begin
|
46
|
+
$stdout.sync = true
|
47
|
+
Logger.new(STDOUT)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def say(options = {})
|
52
|
+
options = options.dup
|
53
|
+
# get GIF
|
54
|
+
keywords = options.delete(:gif)
|
55
|
+
# text
|
56
|
+
text = options.delete(:text)
|
57
|
+
gif = begin
|
58
|
+
Giphy.random(keywords)
|
59
|
+
rescue StandardError => e
|
60
|
+
logger.warn "Giphy.random: #{e.message}"
|
61
|
+
nil
|
62
|
+
end if SlackRubyBot::Config.send_gifs? && send_gifs? && keywords
|
63
|
+
text = [text, gif && gif.image_url.to_s].compact.join("\n")
|
64
|
+
message({ text: text }.merge(options))
|
65
|
+
end
|
43
66
|
end
|
44
67
|
end
|
@@ -5,7 +5,7 @@ module SlackRubyBot
|
|
5
5
|
match(/^(?<bot>[[:alnum:][:punct:]@<>]*)$/u)
|
6
6
|
|
7
7
|
def self.call(client, data, _match)
|
8
|
-
|
8
|
+
client.say(channel: data.channel, text: SlackRubyBot::ABOUT, gif: 'selfie')
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -4,28 +4,22 @@ module SlackRubyBot
|
|
4
4
|
class_attribute :routes
|
5
5
|
|
6
6
|
def self.send_message(client, channel, text, options = {})
|
7
|
+
logger.warn '[DEPRECATION] `send_message` is deprecated. Please use `client.say` instead.'
|
7
8
|
if text && text.length > 0
|
8
|
-
|
9
|
+
client.say(options.merge(channel: channel, text: text))
|
9
10
|
else
|
10
|
-
|
11
|
+
client.say(options.merge(channel: channel, text: 'Nothing to see here.', gif: 'nothing'))
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
15
|
def self.send_message_with_gif(client, channel, text, keywords, options = {})
|
15
|
-
|
16
|
-
|
17
|
-
channel: channel,
|
18
|
-
text: text,
|
19
|
-
keywords: keywords
|
20
|
-
}.merge(options))
|
16
|
+
logger.warn '[DEPRECATION] `send_message_with_gif` is deprecated. Please use `client.say` instead.'
|
17
|
+
client.say(options.merge(channel: channel, text: text, gif: keywords))
|
21
18
|
end
|
22
19
|
|
23
20
|
def self.send_gif(client, channel, keywords, options = {})
|
24
|
-
|
25
|
-
|
26
|
-
channel: channel,
|
27
|
-
keywords: keywords
|
28
|
-
}.merge(options))
|
21
|
+
logger.warn '[DEPRECATION] `send_gif` is deprecated. Please use `client.say` instead.'
|
22
|
+
client.say(options.merge(channel: channel, text: '', gif: keywords))
|
29
23
|
end
|
30
24
|
|
31
25
|
def self.logger
|
@@ -97,25 +91,6 @@ module SlackRubyBot
|
|
97
91
|
return if self.routes && self.routes.any?
|
98
92
|
command default_command_name
|
99
93
|
end
|
100
|
-
|
101
|
-
def self.get_gif_and_send(options = {})
|
102
|
-
options = options.dup
|
103
|
-
keywords = options.delete(:keywords)
|
104
|
-
client = options.delete(:client)
|
105
|
-
gif = begin
|
106
|
-
Giphy.random(keywords)
|
107
|
-
rescue StandardError => e
|
108
|
-
logger.warn "Giphy.random: #{e.message}"
|
109
|
-
nil
|
110
|
-
end if SlackRubyBot::Config.send_gifs? && client.send_gifs?
|
111
|
-
text = options.delete(:text)
|
112
|
-
text = [text, gif && gif.image_url.to_s].compact.join("\n")
|
113
|
-
send_client_message(client, { text: text }.merge(options))
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.send_client_message(client, data)
|
117
|
-
client.message(data)
|
118
|
-
end
|
119
94
|
end
|
120
95
|
end
|
121
96
|
end
|
@@ -2,7 +2,7 @@ module SlackRubyBot
|
|
2
2
|
module Commands
|
3
3
|
class Help < Base
|
4
4
|
def self.call(client, data, _match)
|
5
|
-
|
5
|
+
client.say(channel: data.channel, text: 'See https://github.com/dblock/slack-ruby-bot, please.', gif: 'help')
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
@@ -4,7 +4,7 @@ module SlackRubyBot
|
|
4
4
|
match(/^(?<bot>\S*)[\s]*(?<expression>.*)$/)
|
5
5
|
|
6
6
|
def self.call(client, data, _match)
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "Sorry <@#{data.user}>, I don't understand that command!", gif: 'idiot')
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -5,7 +5,7 @@ RSpec::Matchers.define :respond_with_slack_message do |expected|
|
|
5
5
|
channel, user, message = parse(actual)
|
6
6
|
allow(Giphy).to receive(:random)
|
7
7
|
client = app.send(:client)
|
8
|
-
expect(
|
8
|
+
expect(client).to receive(:message).with(channel: channel, text: expected)
|
9
9
|
app.send(:message, client, text: message, channel: channel, user: user)
|
10
10
|
true
|
11
11
|
end
|
@@ -4,16 +4,19 @@ describe SlackRubyBot::Bot do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Bot) do
|
6
6
|
command 'bot_spec' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: match['expression'])
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
11
11
|
def app
|
12
|
-
SlackRubyBot::
|
12
|
+
SlackRubyBot::Bot.instance
|
13
13
|
end
|
14
14
|
let(:client) { app.send(:client) }
|
15
15
|
it 'sends a message' do
|
16
|
-
expect(
|
16
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
17
17
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} bot_spec message", channel: 'channel', user: 'user')
|
18
18
|
end
|
19
|
+
it 'sends a message' do
|
20
|
+
expect(message: "#{SlackRubyBot.config.user} bot_spec message").to respond_with_slack_message('message')
|
21
|
+
end
|
19
22
|
end
|
@@ -4,11 +4,11 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command 'tomato' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
8
8
|
end
|
9
9
|
|
10
10
|
command 'tomatoes' do |client, data, match|
|
11
|
-
|
11
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -4,7 +4,7 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command '(' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -4,7 +4,7 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command 'space' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -7,7 +7,7 @@ describe SlackRubyBot::Commands do
|
|
7
7
|
command 'saybye'
|
8
8
|
|
9
9
|
def self.call(client, data, match)
|
10
|
-
|
10
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -4,11 +4,11 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command 'sayhi' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
8
8
|
end
|
9
9
|
|
10
10
|
command 'one', 'two' do |client, data, match|
|
11
|
-
|
11
|
+
client.say(channel: data.channel, text: "#{match[:command]}: #{match[:expression]}")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -6,7 +6,7 @@ describe SlackRubyBot::Commands do
|
|
6
6
|
command 'empty_text'
|
7
7
|
|
8
8
|
def self.call(client, data, _match)
|
9
|
-
|
9
|
+
client.say(channel: data.channel)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -16,7 +16,7 @@ describe SlackRubyBot::Commands do
|
|
16
16
|
let(:client) { app.send(:client) }
|
17
17
|
it 'sends default text' do
|
18
18
|
allow(Giphy).to receive(:random)
|
19
|
-
expect(
|
19
|
+
expect(client).to receive(:message).with(channel: 'channel', text: '')
|
20
20
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} empty_text", channel: 'channel', user: 'user')
|
21
21
|
end
|
22
22
|
end
|
@@ -4,7 +4,7 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
match(/^Reticulate (?<spline_name>\w*)$/) do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "Reticulated #{match[:spline_name]}.")
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -11,7 +11,7 @@ describe SlackRubyBot::App do
|
|
11
11
|
end
|
12
12
|
context 'default' do
|
13
13
|
it 'does not respond to self' do
|
14
|
-
expect(
|
14
|
+
expect(client).to_not receive(:message)
|
15
15
|
subject.send(:message, client, text: "#{SlackRubyBot.config.user} hi", channel: 'channel', user: 'UDEADBEEF')
|
16
16
|
end
|
17
17
|
end
|
@@ -27,7 +27,7 @@ describe SlackRubyBot::App do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
it 'responds to self' do
|
30
|
-
expect(
|
30
|
+
expect(client).to receive(:message)
|
31
31
|
subject.send(:message, client, text: "#{SlackRubyBot.config.user} hi", channel: 'channel', user: 'UDEADBEEF')
|
32
32
|
end
|
33
33
|
end
|
@@ -16,7 +16,7 @@ describe SlackRubyBot::Commands do
|
|
16
16
|
let(:client) { app.send(:client) }
|
17
17
|
it 'ignores nil messages' do
|
18
18
|
allow(Giphy).to receive(:random)
|
19
|
-
expect(
|
19
|
+
expect(client).to_not receive(:message)
|
20
20
|
app.send(:message, client, text: nil, channel: 'channel', user: 'user')
|
21
21
|
end
|
22
22
|
end
|
@@ -7,7 +7,7 @@ describe SlackRubyBot::Commands do
|
|
7
7
|
operator '-'
|
8
8
|
|
9
9
|
def self.call(client, data, match)
|
10
|
-
|
10
|
+
client.say(channel: data.channel, text: "#{match[:operator]}: #{match[:expression]}")
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -4,11 +4,11 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
operator '=' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: "#{match[:operator]}: #{match[:expression]}")
|
8
8
|
end
|
9
9
|
|
10
10
|
operator '+', '-' do |client, data, match|
|
11
|
-
|
11
|
+
client.say(channel: data.channel, text: "#{match[:operator]}: #{match[:expression]}")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -4,7 +4,7 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command 'send_gif_spec' do |client, data, _match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, gif: 'dummy')
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -16,17 +16,17 @@ describe SlackRubyBot::Commands do
|
|
16
16
|
it 'sends a gif' do
|
17
17
|
gif = Giphy::RandomGif.new('image_url' => gif_image_url)
|
18
18
|
expect(Giphy).to receive(:random).and_return(gif)
|
19
|
-
expect(
|
19
|
+
expect(client).to receive(:message).with(channel: 'channel', text: gif_image_url)
|
20
20
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_gif_spec message", channel: 'channel', user: 'user')
|
21
21
|
end
|
22
22
|
it 'eats up the error' do
|
23
23
|
expect(Giphy).to receive(:random) { fail 'oh no!' }
|
24
|
-
expect(
|
24
|
+
expect(client).to receive(:message).with(channel: 'channel', text: '')
|
25
25
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_gif_spec message", channel: 'channel', user: 'user')
|
26
26
|
end
|
27
27
|
it 'eats up nil gif' do
|
28
28
|
expect(Giphy).to receive(:random).and_return(nil)
|
29
|
-
expect(
|
29
|
+
expect(client).to receive(:message).with(channel: 'channel', text: '')
|
30
30
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_gif_spec message", channel: 'channel', user: 'user')
|
31
31
|
end
|
32
32
|
end
|
@@ -4,7 +4,7 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command 'send_message_spec' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: match['expression'])
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -13,7 +13,7 @@ describe SlackRubyBot::Commands do
|
|
13
13
|
end
|
14
14
|
let(:client) { app.send(:client) }
|
15
15
|
it 'sends a message' do
|
16
|
-
expect(
|
16
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
17
17
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_spec message", channel: 'channel', user: 'user')
|
18
18
|
end
|
19
19
|
end
|
@@ -4,7 +4,7 @@ describe SlackRubyBot::Commands do
|
|
4
4
|
let! :command do
|
5
5
|
Class.new(SlackRubyBot::Commands::Base) do
|
6
6
|
command 'send_message_with_gif_spec' do |client, data, match|
|
7
|
-
|
7
|
+
client.say(channel: data.channel, text: match['expression'], gif: 'dummy')
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -16,17 +16,17 @@ describe SlackRubyBot::Commands do
|
|
16
16
|
it 'sends a message with gif' do
|
17
17
|
gif = Giphy::RandomGif.new('image_url' => gif_image_url)
|
18
18
|
expect(Giphy).to receive(:random).and_return(gif)
|
19
|
-
expect(
|
19
|
+
expect(client).to receive(:message).with(channel: 'channel', text: "message\n#{gif_image_url}")
|
20
20
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
21
21
|
end
|
22
22
|
it 'eats up the error' do
|
23
23
|
expect(Giphy).to receive(:random) { fail 'oh no!' }
|
24
|
-
expect(
|
24
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
25
25
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
26
26
|
end
|
27
27
|
it 'eats up nil gif' do
|
28
28
|
expect(Giphy).to receive(:random).and_return(nil)
|
29
|
-
expect(
|
29
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
30
30
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
31
31
|
end
|
32
32
|
context 'send_gifs' do
|
@@ -36,7 +36,7 @@ describe SlackRubyBot::Commands do
|
|
36
36
|
end
|
37
37
|
it 'does not send a gif' do
|
38
38
|
expect(Giphy).to_not receive(:random)
|
39
|
-
expect(
|
39
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
40
40
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
41
41
|
end
|
42
42
|
after do
|
@@ -49,7 +49,7 @@ describe SlackRubyBot::Commands do
|
|
49
49
|
end
|
50
50
|
it 'does not send a gif' do
|
51
51
|
expect(Giphy).to_not receive(:random)
|
52
|
-
expect(
|
52
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
53
53
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
54
54
|
end
|
55
55
|
after do
|
@@ -62,7 +62,7 @@ describe SlackRubyBot::Commands do
|
|
62
62
|
end
|
63
63
|
it 'does not send a gif' do
|
64
64
|
expect(Giphy).to_not receive(:random)
|
65
|
-
expect(
|
65
|
+
expect(client).to receive(:message).with(channel: 'channel', text: 'message')
|
66
66
|
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
67
67
|
end
|
68
68
|
after do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack-ruby-bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Doubrovkine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|