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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eba2b910b92cbe628a3fb697a08dd62d0af70e5b
4
- data.tar.gz: 470fb9481c91e1203ca4ef6ed320f86d3edfbb9d
3
+ metadata.gz: d913551cd5d7c5dd77eca6b408afc4f429db43dc
4
+ data.tar.gz: 5e96cb15043a4cf9cd39a661182ba0a1320872a6
5
5
  SHA512:
6
- metadata.gz: 5147a284b8b37f26417bddb8dc96c8a656e3426b108592b06d0815afb42725ba894dee61a72cc8d56526f0c184b76df160ed64f40fb20a8c0004f8377b9ef288
7
- data.tar.gz: 96dc0cce71969ab11ef68f30f970876859d21c8a7aedf09222139bb80d6159c215a6218a1999fea8d4708423078af54137a2826e88051c2394e1574e9e2f58fe
6
+ metadata.gz: e01fadbae26b2a4bb53794dbe587b635b72ec30dc1b1d18cab3a71adbf061446084890ad9851c9814336ed09c6f48589fa76a82498010ce5f00ebb21dacb3034
7
+ data.tar.gz: 19df60970882c526023310c6b33aae3f7c8236f71aa59aae0ec741290bc0fb6ffb27a2ddef1bd757483a49ad73109661cc3ddf620531b806a67157d9829b8bf7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.5.5 (1/4/2016)
2
+
3
+ * Added `SlackRubyBot::Bot` DSL sugar - [@dblock](https://github.com/dblock).
4
+
1
5
  ### 0.5.4 (1/3/2016)
2
6
 
3
7
  * Enable setting `send_gifs` per instance of `SlackRubyBot::Server` - [@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.5.4.
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
- module PongBot
40
- class App < SlackRubyBot::App
41
- end
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::App.instance.run
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. 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.
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
- class Phone < SlackRubyBot::Commands::Base
102
- command 'call', '呼び出し' do |client, data, _match|
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
- class Calculator < SlackRubyBot::Commands::Base
114
- operator '=' do |_data, _match|
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::Commands::Base
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
  ![](screenshots/weather.gif)
157
125
 
158
- ### SlackRubyBot::Commands::Base Functions
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
 
@@ -1,14 +1,9 @@
1
1
  require 'slack-ruby-bot'
2
2
 
3
- module PongBot
4
- class App < SlackRubyBot::App
5
- end
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
- PongBot::App.instance.run
9
+ Bot.run
@@ -1,14 +1,9 @@
1
1
  require 'slack-ruby-bot'
2
2
 
3
- module WeatherBot
4
- class App < SlackRubyBot::App
5
- end
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::App.instance.run
9
+ WeatherBot.run
@@ -22,3 +22,4 @@ require 'slack-ruby-bot/commands'
22
22
  require 'slack-ruby-bot/client'
23
23
  require 'slack-ruby-bot/server'
24
24
  require 'slack-ruby-bot/app'
25
+ require 'slack-ruby-bot/bot'
@@ -0,0 +1,7 @@
1
+ module SlackRubyBot
2
+ class Bot < SlackRubyBot::Commands::Base
3
+ def self.run
4
+ SlackRubyBot::App.instance.run
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module SlackRubyBot
2
- VERSION = '0.5.4'
2
+ VERSION = '0.5.5'
3
3
  end
@@ -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
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-03 00:00:00.000000000 Z
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