slack-ruby-bot 0.5.4 → 0.5.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +39 -44
- data/examples/minimal/pongbot.rb +4 -9
- data/examples/weather/weatherbot.rb +4 -9
- data/lib/slack-ruby-bot.rb +1 -0
- data/lib/slack-ruby-bot/bot.rb +7 -0
- data/lib/slack-ruby-bot/version.rb +1 -1
- data/spec/slack-ruby-bot/commands/bot_spec.rb +19 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d913551cd5d7c5dd77eca6b408afc4f429db43dc
|
4
|
+
data.tar.gz: 5e96cb15043a4cf9cd39a661182ba0a1320872a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e01fadbae26b2a4bb53794dbe587b635b72ec30dc1b1d18cab3a71adbf061446084890ad9851c9814336ed09c6f48589fa76a82498010ce5f00ebb21dacb3034
|
7
|
+
data.tar.gz: 19df60970882c526023310c6b33aae3f7c8236f71aa59aae0ec741290bc0fb6ffb27a2ddef1bd757483a49ad73109661cc3ddf620531b806a67157d9829b8bf7
|
data/CHANGELOG.md
CHANGED
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.5.
|
20
|
+
You're reading the documentation for the **stable** release of slack-ruby-bot, 0.5.5.
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
@@ -36,18 +36,13 @@ gem 'slack-ruby-bot'
|
|
36
36
|
```ruby
|
37
37
|
require 'slack-ruby-bot'
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
class Ping < SlackRubyBot::Commands::Base
|
44
|
-
command 'ping' do |client, data, _match|
|
45
|
-
client.message text: 'pong', channel: data.channel
|
46
|
-
end
|
39
|
+
class PongBot < SlackRubyBot::Bot
|
40
|
+
command 'ping' do |client, data, match|
|
41
|
+
client.message text: 'pong', channel: data.channel
|
47
42
|
end
|
48
43
|
end
|
49
44
|
|
50
|
-
PongBot
|
45
|
+
PongBot.run
|
51
46
|
```
|
52
47
|
|
53
48
|
After [registering the bot](DEPLOYMENT.md), run with `SLACK_API_TOKEN=... bundle exec ruby pongbot.rb`. Have the bot join a channel and send it a ping.
|
@@ -70,38 +65,13 @@ The following examples of bots based on slack-ruby-bot are listed in growing ord
|
|
70
65
|
|
71
66
|
### Commands and Operators
|
72
67
|
|
73
|
-
Bots are addressed by name, they respond to commands and operators.
|
74
|
-
|
75
|
-
```ruby
|
76
|
-
class Phone < SlackRubyBot::Commands::Base
|
77
|
-
command 'call'
|
78
|
-
|
79
|
-
def self.call(client, data, _match)
|
80
|
-
send_message client, data.channel, 'called'
|
81
|
-
end
|
82
|
-
end
|
83
|
-
```
|
84
|
-
|
85
|
-
To respond to custom commands and to disable automatic class name matching, use the `command` keyword. The following command responds to `call` and `呼び出し` (call in Japanese).
|
86
|
-
|
87
|
-
```ruby
|
88
|
-
class Phone < SlackRubyBot::Commands::Base
|
89
|
-
command 'call'
|
90
|
-
command '呼び出し'
|
91
|
-
|
92
|
-
def self.call(client, data, _match)
|
93
|
-
send_message client, data.channel, 'called'
|
94
|
-
end
|
95
|
-
end
|
96
|
-
```
|
68
|
+
Bots are addressed by name, they respond to commands and operators.
|
97
69
|
|
98
70
|
You can combine multiple commands and use a block to implement them.
|
99
71
|
|
100
72
|
```ruby
|
101
|
-
|
102
|
-
|
103
|
-
send_message client, data.channel, 'called'
|
104
|
-
end
|
73
|
+
command 'call', '呼び出し' do |client, data, match|
|
74
|
+
send_message client, data.channel, 'called'
|
105
75
|
end
|
106
76
|
```
|
107
77
|
|
@@ -110,10 +80,8 @@ Command match data includes `match['bot']`, `match['command']` and `match['expre
|
|
110
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`.
|
111
81
|
|
112
82
|
```ruby
|
113
|
-
|
114
|
-
|
115
|
-
# implementation detail
|
116
|
-
end
|
83
|
+
operator '=' do |data, match|
|
84
|
+
# implementation detail
|
117
85
|
end
|
118
86
|
```
|
119
87
|
|
@@ -146,7 +114,7 @@ Bots also will respond to a direct message, with or without the bot name in the
|
|
146
114
|
Commands and operators are generic versions of bot routes. You can respond to just about anything by defining a custom route.
|
147
115
|
|
148
116
|
```ruby
|
149
|
-
class Weather < SlackRubyBot::
|
117
|
+
class Weather < SlackRubyBot::Bot
|
150
118
|
match /^How is the weather in (?<location>\w*)\?$/ do |client, data, match|
|
151
119
|
send_message client, data.channel, "The weather in #{match[:location]} is nice."
|
152
120
|
end
|
@@ -155,7 +123,34 @@ end
|
|
155
123
|
|
156
124
|

|
157
125
|
|
158
|
-
### SlackRubyBot::Commands::Base
|
126
|
+
### SlackRubyBot::Commands::Base
|
127
|
+
|
128
|
+
The `SlackRubyBot::Bot` class is just sugare deriving from `SlackRubyBot::Commands::Base`. You can divide 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
|
+
|
130
|
+
```ruby
|
131
|
+
class Phone < SlackRubyBot::Commands::Base
|
132
|
+
command 'call'
|
133
|
+
|
134
|
+
def self.call(client, data, match)
|
135
|
+
send_message client, data.channel, 'called'
|
136
|
+
end
|
137
|
+
end
|
138
|
+
```
|
139
|
+
|
140
|
+
To respond to custom commands and to disable automatic class name matching, use the `command` keyword. The following command responds to `call` and `呼び出し` (call in Japanese).
|
141
|
+
|
142
|
+
```ruby
|
143
|
+
class Phone < SlackRubyBot::Commands::Base
|
144
|
+
command 'call'
|
145
|
+
command '呼び出し'
|
146
|
+
|
147
|
+
def self.call(client, data, match)
|
148
|
+
send_message client, data.channel, 'called'
|
149
|
+
end
|
150
|
+
end
|
151
|
+
```
|
152
|
+
|
153
|
+
Other available functions include the following.
|
159
154
|
|
160
155
|
#### send_message(client, channel, text)
|
161
156
|
|
data/examples/minimal/pongbot.rb
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
require 'slack-ruby-bot'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
class Ping < SlackRubyBot::Commands::Base
|
8
|
-
def self.call(client, data, _match)
|
9
|
-
client.message text: 'pong', channel: data.channel
|
10
|
-
end
|
3
|
+
class Bot < SlackRubyBot::Bot
|
4
|
+
command 'ping' do |client, data, _match|
|
5
|
+
client.message text: 'pong', channel: data.channel
|
11
6
|
end
|
12
7
|
end
|
13
8
|
|
14
|
-
|
9
|
+
Bot.run
|
@@ -1,14 +1,9 @@
|
|
1
1
|
require 'slack-ruby-bot'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
class Weather < SlackRubyBot::Commands::Base
|
8
|
-
match(/^How is the weather in (?<location>\w*)\?$/i) do |client, data, match|
|
9
|
-
send_message client, data.channel, "The weather in #{match[:location]} is nice."
|
10
|
-
end
|
3
|
+
class WeatherBot < SlackRubyBot::Bot
|
4
|
+
match(/^How is the weather in (?<location>\w*)\?$/i) do |client, data, match|
|
5
|
+
send_message client, data.channel, "The weather in #{match[:location]} is nice."
|
11
6
|
end
|
12
7
|
end
|
13
8
|
|
14
|
-
WeatherBot
|
9
|
+
WeatherBot.run
|
data/lib/slack-ruby-bot.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SlackRubyBot::Bot do
|
4
|
+
let! :command do
|
5
|
+
Class.new(SlackRubyBot::Bot) do
|
6
|
+
command 'bot_spec' do |client, data, match|
|
7
|
+
send_message client, data.channel, match['expression']
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
def app
|
12
|
+
SlackRubyBot::App.new
|
13
|
+
end
|
14
|
+
let(:client) { app.send(:client) }
|
15
|
+
it 'sends a message' do
|
16
|
+
expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
|
17
|
+
app.send(:message, client, text: "#{SlackRubyBot.config.user} bot_spec message", channel: 'channel', user: 'user')
|
18
|
+
end
|
19
|
+
end
|
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.5.
|
4
|
+
version: 0.5.5
|
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-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|
@@ -198,6 +198,7 @@ files:
|
|
198
198
|
- lib/slack-ruby-bot.rb
|
199
199
|
- lib/slack-ruby-bot/about.rb
|
200
200
|
- lib/slack-ruby-bot/app.rb
|
201
|
+
- lib/slack-ruby-bot/bot.rb
|
201
202
|
- lib/slack-ruby-bot/client.rb
|
202
203
|
- lib/slack-ruby-bot/commands.rb
|
203
204
|
- lib/slack-ruby-bot/commands/about.rb
|
@@ -232,6 +233,7 @@ files:
|
|
232
233
|
- spec/slack-ruby-bot/app_spec.rb
|
233
234
|
- spec/slack-ruby-bot/commands/about_spec.rb
|
234
235
|
- spec/slack-ruby-bot/commands/aliases_spec.rb
|
236
|
+
- spec/slack-ruby-bot/commands/bot_spec.rb
|
235
237
|
- spec/slack-ruby-bot/commands/commands_precedence_spec.rb
|
236
238
|
- spec/slack-ruby-bot/commands/commands_regexp_escape_spec.rb
|
237
239
|
- spec/slack-ruby-bot/commands/commands_spaces_spec.rb
|
@@ -284,6 +286,7 @@ test_files:
|
|
284
286
|
- spec/slack-ruby-bot/app_spec.rb
|
285
287
|
- spec/slack-ruby-bot/commands/about_spec.rb
|
286
288
|
- spec/slack-ruby-bot/commands/aliases_spec.rb
|
289
|
+
- spec/slack-ruby-bot/commands/bot_spec.rb
|
287
290
|
- spec/slack-ruby-bot/commands/commands_precedence_spec.rb
|
288
291
|
- spec/slack-ruby-bot/commands/commands_regexp_escape_spec.rb
|
289
292
|
- spec/slack-ruby-bot/commands/commands_spaces_spec.rb
|