slack-ruby-bot 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.rubocop_todo.yml +3 -9
- data/.travis.yml +6 -10
- data/CHANGELOG.md +9 -0
- data/DEPLOYMENT.md +3 -5
- data/Dangerfile +2 -0
- data/Gemfile +1 -4
- data/MIGRATION.md +13 -0
- data/README.md +50 -61
- data/UPGRADING.md +14 -0
- data/lib/slack-ruby-bot/bot.rb +1 -1
- data/lib/slack-ruby-bot/client.rb +22 -23
- data/lib/slack-ruby-bot/commands/about.rb +1 -1
- data/lib/slack-ruby-bot/commands/base.rb +0 -19
- 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/config.rb +1 -8
- data/lib/slack-ruby-bot/hooks/hook_support.rb +0 -6
- data/lib/slack-ruby-bot/hooks/message.rb +6 -17
- data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_error.rb +0 -2
- data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_message.rb +0 -2
- data/lib/slack-ruby-bot/rspec/support/slack-ruby-bot/respond_with_slack_messages.rb +0 -2
- data/lib/slack-ruby-bot/server.rb +3 -4
- data/lib/slack-ruby-bot/version.rb +1 -1
- data/spec/slack-ruby-bot/client_spec.rb +101 -28
- data/spec/slack-ruby-bot/config_spec.rb +0 -57
- data/spec/slack-ruby-bot/hooks/hook_support_spec.rb +0 -5
- data/spec/slack-ruby-bot/hooks/message_spec.rb +6 -53
- data/spec/slack-ruby-bot/server_spec.rb +4 -16
- data/spec/spec_helper.rb +0 -6
- metadata +9 -23
- data/lib/initializers/giphy.rb +0 -10
- data/lib/initializers/giphy_client.rb +0 -41
- data/spec/slack-ruby-bot/commands/send_gif_spec.rb +0 -27
- data/spec/slack-ruby-bot/commands/send_message_with_gif_spec.rb +0 -40
- data/spec/slack-ruby-bot/initializers/giphy_client_spec.rb +0 -30
- data/spec/slack-ruby-bot/initializers/giphy_spec.rb +0 -20
- data/spec/support/fixtures/slack/giphy_burrito.yml +0 -69
- data/spec/support/fixtures/slack/giphy_client_burrito.yml +0 -71
- data/spec/support/fixtures/slack/giphy_client_burrito_rated_pg.yml +0 -80
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9684c9f89d4dfb8fa0b6d57c65392979f40a6371bac3021d427f662e0a4c64db
|
4
|
+
data.tar.gz: 67d12056a667d6670b9f3f90c1df15f9e437a87b11a5aa438616bb3774d27b89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a702d1e2016adf8903fa0283201e51e572663e0bafa8fd2b4ffa255764ce99779022bc653ed8dbc5888490521c6d9ebe8b24774084afb056526c62d9c4b3507c
|
7
|
+
data.tar.gz: d05e13f9c714eb5c97e1257e775126a42579cd5f41181e285aa79df54ceb0175f6138a056c4c7a89160e5ff53fa13fa53fff02a7d2f507c9c05fea0d9ef958f2
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
github: [dblock]
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2020-
|
3
|
+
# on 2020-06-27 10:38:47 -0400 using RuboCop version 0.80.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -11,13 +11,6 @@ Lint/DuplicateMethods:
|
|
11
11
|
Exclude:
|
12
12
|
- 'lib/slack-ruby-bot/hooks/set.rb'
|
13
13
|
|
14
|
-
# Offense count: 2
|
15
|
-
# Configuration parameters: AllowComments.
|
16
|
-
Lint/SuppressedException:
|
17
|
-
Exclude:
|
18
|
-
- 'lib/initializers/giphy.rb'
|
19
|
-
- 'lib/initializers/giphy_client.rb'
|
20
|
-
|
21
14
|
# Offense count: 1
|
22
15
|
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
|
23
16
|
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
|
@@ -39,9 +32,10 @@ Style/AccessModifierDeclarations:
|
|
39
32
|
Exclude:
|
40
33
|
- 'lib/slack-ruby-bot/hooks/hook_support.rb'
|
41
34
|
|
42
|
-
# Offense count:
|
35
|
+
# Offense count: 5
|
43
36
|
Style/DoubleNegation:
|
44
37
|
Exclude:
|
38
|
+
- 'lib/slack-ruby-bot/client.rb'
|
45
39
|
- 'lib/slack-ruby-bot/commands/base.rb'
|
46
40
|
- 'lib/slack-ruby-bot/config.rb'
|
47
41
|
|
data/.travis.yml
CHANGED
@@ -7,22 +7,18 @@ matrix:
|
|
7
7
|
- rvm: 2.6.5
|
8
8
|
script:
|
9
9
|
- bundle exec danger
|
10
|
-
- rvm: 2.
|
10
|
+
- rvm: 2.4.0
|
11
11
|
env: CONCURRENCY=celluloid-io
|
12
|
-
- rvm: 2.
|
12
|
+
- rvm: 2.4.0
|
13
13
|
env: CONCURRENCY=faye-websocket
|
14
|
-
- rvm: 2.
|
14
|
+
- rvm: 2.4.0
|
15
15
|
env: CONCURRENCY=async-websocket
|
16
16
|
- rvm: 2.6.5
|
17
|
-
env: CONCURRENCY=celluloid-io
|
18
|
-
- rvm: 2.6.5
|
19
|
-
env: CONCURRENCY=faye-websocket WITH_GIPHY=true
|
20
|
-
- rvm: 2.6.5
|
21
|
-
env: CONCURRENCY=celluloid-io WITH_GIPHY_CLIENT=true
|
17
|
+
env: CONCURRENCY=celluloid-io
|
22
18
|
- rvm: 2.6.5
|
23
|
-
env: CONCURRENCY=faye-websocket
|
19
|
+
env: CONCURRENCY=faye-websocket
|
24
20
|
- rvm: 2.6.5
|
25
|
-
env: CONCURRENCY=async-websocket
|
21
|
+
env: CONCURRENCY=async-websocket
|
26
22
|
- rvm: ruby-head
|
27
23
|
- rvm: jruby-head
|
28
24
|
allow_failures:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
### 0.16.0 (2020/7/26)
|
2
|
+
|
3
|
+
* [#263](https://github.com/slack-ruby/slack-ruby-bot/pull/263): Removed Giphy support - [@dblock](https://github.com/dblock).
|
4
|
+
* [#260](https://github.com/slack-ruby/slack-ruby-bot/pull/260): Added a brief migration guide - [@wasabigeek](https://github.com/wasabigeek).
|
5
|
+
* [#264](https://github.com/slack-ruby/slack-ruby-bot/pull/264): Added TOC to README - [@dblock](https://github.com/dblock).
|
6
|
+
* [#265](https://github.com/slack-ruby/slack-ruby-bot/pull/265): Made `allow_bot_messages` and `allow_message_loops` available in `SlackRubyBot::Client` - [@dblock](https://github.com/dblock).
|
7
|
+
* [#266](https://github.com/slack-ruby/slack-ruby-bot/pull/266): Removed deprecated `Server#hooks` - [@dblock](https://github.com/dblock).
|
8
|
+
* [#267](https://github.com/slack-ruby/slack-ruby-bot/pull/267): Require Faraday >= 1.0 - [@dblock](https://github.com/dblock).
|
9
|
+
|
1
10
|
### 0.15.0 (2020/5/8)
|
2
11
|
|
3
12
|
* [#258](https://github.com/slack-ruby/slack-ruby-bot/pull/258): Extract development dependencies (VCR) from shared rspec configuraion - [@dikond](https://github.com/dikond).
|
data/DEPLOYMENT.md
CHANGED
@@ -12,6 +12,8 @@ Once created, go to the app's Basic Info tab and grab the Client ID and Client S
|
|
12
12
|
|
13
13
|
Alternatively, you can still [generate a legacy API token](https://api.slack.com/custom-integrations/legacy-tokens) for your app and use it for some interactions.
|
14
14
|
|
15
|
+
If you have a legacy API token, and would like to migrate to [slack-ruby-bot-server](https://github.com/slack-ruby/slack-ruby-bot-server), a brief [migration guide](MIGRATION.md) is provided.
|
16
|
+
|
15
17
|
#### SLACK_API_TOKEN
|
16
18
|
|
17
19
|
Set the SLACK_API_TOKEN environment variable using the token received above.
|
@@ -20,10 +22,6 @@ Set the SLACK_API_TOKEN environment variable using the token received above.
|
|
20
22
|
heroku config:add SLACK_API_TOKEN=...
|
21
23
|
```
|
22
24
|
|
23
|
-
#### GIPHY_API_KEY
|
24
|
-
|
25
|
-
The bot replies with animated GIFs. While it's currently not necessary, you may need to set GIPHY_API_KEY in the future, see [github.com/Giphy/GiphyAPI](https://github.com/Giphy/GiphyAPI) for details.
|
26
|
-
|
27
25
|
#### SLACK_RUBY_BOT_ALIASES
|
28
26
|
|
29
27
|
Optional names for this bot.
|
@@ -81,7 +79,7 @@ passenger_pre_start http://example.com:80/;
|
|
81
79
|
<Directory /var/www/bot/public>
|
82
80
|
Allow from all
|
83
81
|
Options -MultiViews
|
84
|
-
Require all granted
|
82
|
+
Require all granted
|
85
83
|
</Directory>
|
86
84
|
</VirtualHost>
|
87
85
|
|
data/Dangerfile
CHANGED
data/Gemfile
CHANGED
@@ -13,9 +13,6 @@ if ENV.key?('CONCURRENCY')
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
gem 'giphy', require: false if ENV.key?('WITH_GIPHY')
|
17
|
-
gem 'GiphyClient', require: false if ENV.key?('WITH_GIPHY_CLIENT')
|
18
|
-
|
19
16
|
group :test do
|
20
|
-
gem 'slack-ruby-danger', '~> 0.
|
17
|
+
gem 'slack-ruby-danger', '~> 0.2.0', require: false
|
21
18
|
end
|
data/MIGRATION.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Migrating from Legacy API Tokens
|
2
|
+
|
3
|
+
New Slack Apps require authentication via OAuth, returning an access token that should be a drop-in replacement for `SLACK_API_TOKEN`. As of the time of writing, the tokens never expire, so you could potentially write your own OAuth flow to retrieve the access token separately.
|
4
|
+
|
5
|
+
Alternatively, you could migrate to [slack-ruby-bot-server](https://github.com/slack-ruby/slack-ruby-bot-server). Note that this requires more infrastructure to support the OAuth flow.
|
6
|
+
|
7
|
+
## Migrating to slack-ruby-bot-server
|
8
|
+
1. Setup a new `slack-ruby-bot-server` project, following the [guidelines](https://github.com/slack-ruby/slack-ruby-bot-server#run-your-own).
|
9
|
+
2. Copy over the `SlackRubyBot::Commands::Base` or `SlackRubyBot::Bot` concrete classes from your `slack-ruby-bot` project into the new project. If you used a [sample app](https://github.com/slack-ruby/slack-ruby-bot-server/tree/master/sample_apps), copy them into the [`commands` folder](https://github.com/slack-ruby/slack-ruby-bot-server/tree/master/sample_apps/sample_app_activerecord/commands) and require it in `commands.rb`.
|
10
|
+
3. Create a [Slack Button](https://api.slack.com/docs/slack-button), setting the redirect URL to your OAuth grant endpoint. In the sample app, this would be `<ROOT_URL>/api/teams`.
|
11
|
+
4. Run your app and authenticate with the Slack button.
|
12
|
+
|
13
|
+
**NOTE**: By default, other teams would be able to authenticate and connect their workspaces using the same Slack button. If this is not what you want, you would need to prevent it.
|
data/README.md
CHANGED
@@ -11,6 +11,51 @@ If you are not familiar with Slack bots or Slack API concepts, you might want to
|
|
11
11
|
|
12
12
|
![](slack.png)
|
13
13
|
|
14
|
+
# Table of Contents
|
15
|
+
|
16
|
+
- [Useful to Me?](#useful-to-me)
|
17
|
+
- [Stable Release](#stable-release)
|
18
|
+
- [Usage](#usage)
|
19
|
+
- [A Minimal Bot](#a-minimal-bot)
|
20
|
+
- [Gemfile](#gemfile)
|
21
|
+
- [pongbot.rb](#pongbotrb)
|
22
|
+
- [A Production Bot](#a-production-bot)
|
23
|
+
- [More Involved Examples](#more-involved-examples)
|
24
|
+
- [Commands and Operators](#commands-and-operators)
|
25
|
+
- [Threaded Messages](#threaded-messages)
|
26
|
+
- [Bot Aliases](#bot-aliases)
|
27
|
+
- [Generic Routing](#generic-routing)
|
28
|
+
- [Matching text in message attachments](#matching-text-in-message-attachments)
|
29
|
+
- [Providing description for your bot and commands](#providing-description-for-your-bot-and-commands)
|
30
|
+
- [Customize your command help output](#customize-your-command-help-output)
|
31
|
+
- [SlackRubyBot::Commands::Base](#slackrubybotcommandsbase)
|
32
|
+
- [Authorization](#authorization)
|
33
|
+
- [Built-In Commands](#built-in-commands)
|
34
|
+
- [[bot name]](#bot-name)
|
35
|
+
- [[bot name] hi](#bot-name-hi)
|
36
|
+
- [[bot name] help](#bot-name-help)
|
37
|
+
- [Hooks](#hooks)
|
38
|
+
- [Implementing and registering a Hook Handler](#implementing-and-registering-a-hook-handler)
|
39
|
+
- [Hooks registration on SlackRubyBot::Server initialization](#hooks-registration-on-slackrubybotserver-initialization)
|
40
|
+
- [Hooks registration on a SlackRubyBot::Server instance](#hooks-registration-on-a-slackrubybotserver-instance)
|
41
|
+
- [Hooks registration on SlackRubyBot::Server class](#hooks-registration-on-slackrubybotserver-class)
|
42
|
+
- [Bot Message Protection](#bot-message-protection)
|
43
|
+
- [Message Loop Protection](#message-loop-protection)
|
44
|
+
- [Logging](#logging)
|
45
|
+
- [Advanced Integration](#advanced-integration)
|
46
|
+
- [Proxy Configuration](#proxy-configuration)
|
47
|
+
- [Model-View-Controller Design](#model-view-controller-design)
|
48
|
+
- [Controller](#controller)
|
49
|
+
- [Model](#model)
|
50
|
+
- [View](#view)
|
51
|
+
- [Testing](#testing)
|
52
|
+
- [RSpec Shared Behaviors](#rspec-shared-behaviors)
|
53
|
+
- [Testing Lower Level Messages](#testing-lower-level-messages)
|
54
|
+
- [Useful Libraries](#useful-libraries)
|
55
|
+
- [Contributing](#contributing)
|
56
|
+
- [Upgrading](#upgrading)
|
57
|
+
- [Copyright and License](#copyright-and-license)
|
58
|
+
|
14
59
|
## Useful to Me?
|
15
60
|
|
16
61
|
* If you are just trying to send messages to Slack, use [slack-ruby-client](https://github.com/slack-ruby/slack-ruby-client), which this library is built on top of.
|
@@ -19,7 +64,7 @@ If you are not familiar with Slack bots or Slack API concepts, you might want to
|
|
19
64
|
|
20
65
|
## Stable Release
|
21
66
|
|
22
|
-
You're reading the documentation for the **stable** release of slack-ruby-bot, v0.
|
67
|
+
You're reading the documentation for the **stable** release of slack-ruby-bot, v0.16.0.
|
23
68
|
See [CHANGELOG](CHANGELOG.md) for a history of changes and [UPGRADING](UPGRADING.md) for how to upgrade to more recent versions.
|
24
69
|
|
25
70
|
## Usage
|
@@ -141,8 +186,6 @@ SlackRubyBot.configure do |config|
|
|
141
186
|
end
|
142
187
|
```
|
143
188
|
|
144
|
-
This is particularly fun with emoji.
|
145
|
-
|
146
189
|
![](screenshots/aliases.gif)
|
147
190
|
|
148
191
|
Bots will also respond to a direct message, with or without the bot name in the message itself.
|
@@ -320,47 +363,6 @@ class AuthorizedBot < SlackRubyBot::Commands::Base
|
|
320
363
|
end
|
321
364
|
```
|
322
365
|
|
323
|
-
### Animated GIFs
|
324
|
-
|
325
|
-
The `SlackRubyBot::Client` implementation comes with GIF support. To enable it add `gem GiphyClient` (official Giphy SDK) or `gem giphy` (older SDK, deprecated) to your **Gemfile** and set a Giphy key via `ENV['GIPHY_API_KEY']`. Obtain one from [developers.giphy.com](https://developers.giphy.com).
|
326
|
-
|
327
|
-
**Note:** Bots send animated GIFs in default commands and errors.
|
328
|
-
|
329
|
-
```ruby
|
330
|
-
class Phone < SlackRubyBot::Commands::Base
|
331
|
-
command 'call'
|
332
|
-
|
333
|
-
def self.call(client, data, match)
|
334
|
-
client.say(channel: data.channel, text: 'called', gif: 'phone')
|
335
|
-
# Sends the text 'called' and a random GIF that matches the keyword 'phone'.
|
336
|
-
end
|
337
|
-
end
|
338
|
-
```
|
339
|
-
|
340
|
-
Giphy API key is set automatically via `ENV['GIPHY_API_KEY']`. You can override this manually.
|
341
|
-
|
342
|
-
```ruby
|
343
|
-
Giphy.configure do |config|
|
344
|
-
config.api_key = 'key'
|
345
|
-
end
|
346
|
-
```
|
347
|
-
|
348
|
-
With `GiphyClient` you can configure the default GIF [content rating](https://developers.giphy.com/docs/optional-settings#rating), which supports G, PG, PG-13, and R. The default value is `G`.
|
349
|
-
|
350
|
-
```ruby
|
351
|
-
Giphy.configure do |config|
|
352
|
-
config.rating = 'PG'
|
353
|
-
end
|
354
|
-
```
|
355
|
-
|
356
|
-
If you use giphy for something else but don't want your bots to send GIFs you can set `ENV['SLACK_RUBY_BOT_SEND_GIFS']` or `SlackRubyBot::Config.send_gifs` to `false`. The latter takes precedence.
|
357
|
-
|
358
|
-
```ruby
|
359
|
-
SlackRubyBot.configure do |config|
|
360
|
-
config.send_gifs = false
|
361
|
-
end
|
362
|
-
```
|
363
|
-
|
364
366
|
### Built-In Commands
|
365
367
|
|
366
368
|
Slack-ruby-bot comes with several built-in commands. You can re-define built-in commands, normally, as described above.
|
@@ -458,22 +460,9 @@ These will get pushed into the hook set on initialization.
|
|
458
460
|
|
459
461
|
Either by configuration, explicit assignment or hook blocks, multiple handlers can exist for the same event type.
|
460
462
|
|
461
|
-
|
462
|
-
#### Deprecated hook registration
|
463
|
-
|
464
|
-
Registering a hook method using `hooks.add` is considered deprecated and
|
465
|
-
will be removed on future versions.
|
466
|
-
|
467
|
-
```ruby
|
468
|
-
# [DEPRECATED]
|
469
|
-
server.hooks.add(:hello, MyBot::Hooks::UserChange.new)
|
470
|
-
server.hooks.add(:hello, ->(client, data) { puts "Hello!" })
|
471
|
-
|
472
|
-
```
|
473
|
-
|
474
463
|
### Bot Message Protection
|
475
464
|
|
476
|
-
By default bots do not respond to self or other bots. If you wish to change that behavior, set `allow_bot_messages` to `true`.
|
465
|
+
By default bots do not respond to self or other bots. If you wish to change that behavior globally, set `allow_bot_messages` to `true`.
|
477
466
|
|
478
467
|
```ruby
|
479
468
|
SlackRubyBot.configure do |config|
|
@@ -483,7 +472,7 @@ end
|
|
483
472
|
|
484
473
|
### Message Loop Protection
|
485
474
|
|
486
|
-
By default bots do not respond to their own messages. If you wish to change that behavior, set `allow_message_loops` to `true`.
|
475
|
+
By default bots do not respond to their own messages. If you wish to change that behavior globally, set `allow_message_loops` to `true`.
|
487
476
|
|
488
477
|
```ruby
|
489
478
|
SlackRubyBot.configure do |config|
|
@@ -511,14 +500,14 @@ end
|
|
511
500
|
|
512
501
|
### Advanced Integration
|
513
502
|
|
514
|
-
You may want to integrate a bot or multiple bots into other systems, in which case a globally configured bot may not work for you. You may create instances of [SlackRubyBot::Server](lib/slack-ruby-bot/server.rb) which accepts `token
|
503
|
+
You may want to integrate a bot or multiple bots into other systems, in which case a globally configured bot may not work for you. You may create instances of [SlackRubyBot::Server](lib/slack-ruby-bot/server.rb) which accepts `token` and `aliases`.
|
515
504
|
|
516
505
|
```ruby
|
517
506
|
EM.run do
|
518
507
|
bot1 = SlackRubyBot::Server.new(token: token1, aliases: ['bot1'])
|
519
508
|
bot1.start_async
|
520
509
|
|
521
|
-
bot2 = SlackRubyBot::Server.new(token: token2,
|
510
|
+
bot2 = SlackRubyBot::Server.new(token: token2, aliases: ['bot2'])
|
522
511
|
bot2.start_async
|
523
512
|
end
|
524
513
|
```
|
data/UPGRADING.md
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
Upgrading SlackRubyBot
|
2
2
|
======================
|
3
3
|
|
4
|
+
### Upgrading to >= 0.16.0
|
5
|
+
|
6
|
+
#### Removed GIF support
|
7
|
+
|
8
|
+
GIF, Giphy and other animated GIF support has been removed. Remove `gif` options from all `client.say(gif: 'keyword')` method calls, the `GIPHY_API_KEY` ENV var, `gem 'giphy'` or `gem 'GiphyClient'`, and any references to `send_gifs`. The previously deprecated `SlackRubyBot::Commands::Base#send_message`, `send_message_with_gif` and `send_gif` methods have also been removed.
|
9
|
+
|
10
|
+
See [#261](https://github.com/slack-ruby/slack-ruby-bot/issues/261) for details.
|
11
|
+
|
12
|
+
#### Removed deprecated `server.hooks`
|
13
|
+
|
14
|
+
The previously deprecated `SlackRubyBot::Server#hooks` has been removed.
|
15
|
+
|
16
|
+
See [#266](https://github.com/slack-ruby/slack-ruby-bot/issues/266) for details.
|
17
|
+
|
4
18
|
### Upgrading to >= 0.15.0
|
5
19
|
|
6
20
|
#### Set up VCR explicitly
|
data/lib/slack-ruby-bot/bot.rb
CHANGED
@@ -13,7 +13,7 @@ module SlackRubyBot
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.call(client, data, _match)
|
16
|
-
client.say(channel: data.channel, text: "Sorry <@#{data.user}>, I don't understand that command!"
|
16
|
+
client.say(channel: data.channel, text: "Sorry <@#{data.user}>, I don't understand that command!")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -4,12 +4,30 @@ module SlackRubyBot
|
|
4
4
|
class Client < Slack::RealTime::Client
|
5
5
|
include Loggable
|
6
6
|
attr_accessor :aliases
|
7
|
-
attr_accessor :
|
7
|
+
attr_accessor :allow_bot_messages
|
8
|
+
attr_accessor :allow_message_loops
|
8
9
|
|
9
10
|
def initialize(attrs = {})
|
10
11
|
super(attrs)
|
11
12
|
@aliases = attrs[:aliases]
|
12
|
-
@
|
13
|
+
@allow_message_loops = attrs[:allow_message_loops]
|
14
|
+
@allow_bot_messages = attrs[:allow_bot_messages]
|
15
|
+
end
|
16
|
+
|
17
|
+
def allow_message_loops?
|
18
|
+
@allow_message_loops.nil? ? SlackRubyBot::Config.allow_message_loops? : !!@allow_message_loops
|
19
|
+
end
|
20
|
+
|
21
|
+
def allow_bot_messages?
|
22
|
+
@allow_bot_messages.nil? ? SlackRubyBot::Config.allow_bot_messages? : !!@allow_bot_messages
|
23
|
+
end
|
24
|
+
|
25
|
+
def message_to_self?(data)
|
26
|
+
!!(self.self && self.self.id == data.user)
|
27
|
+
end
|
28
|
+
|
29
|
+
def bot_message?(data)
|
30
|
+
data.subtype == 'bot_message'
|
13
31
|
end
|
14
32
|
|
15
33
|
def names
|
@@ -31,12 +49,6 @@ module SlackRubyBot
|
|
31
49
|
name && names.include?(name.downcase)
|
32
50
|
end
|
33
51
|
|
34
|
-
def send_gifs?
|
35
|
-
return false unless defined?(Giphy)
|
36
|
-
|
37
|
-
send_gifs.nil? ? SlackRubyBot::Config.send_gifs? : send_gifs
|
38
|
-
end
|
39
|
-
|
40
52
|
def name
|
41
53
|
SlackRubyBot.config.user || self.self&.name
|
42
54
|
end
|
@@ -46,21 +58,8 @@ module SlackRubyBot
|
|
46
58
|
end
|
47
59
|
|
48
60
|
def say(options = {})
|
49
|
-
|
50
|
-
|
51
|
-
keywords = options.delete(:gif)
|
52
|
-
# text
|
53
|
-
text = options.delete(:text)
|
54
|
-
if keywords && send_gifs?
|
55
|
-
gif = begin
|
56
|
-
Giphy.random(keywords)
|
57
|
-
rescue StandardError => e
|
58
|
-
logger.warn "Giphy.random: #{e.message}"
|
59
|
-
nil
|
60
|
-
end
|
61
|
-
end
|
62
|
-
text = [text, gif && gif.image_url.to_s].compact.join("\n")
|
63
|
-
message({ text: text }.merge(options))
|
61
|
+
logger.warn '[DEPRECATION] `gif:` is deprecated and has no effect.' if options.key?(:gif)
|
62
|
+
message({ text: '' }.merge(options))
|
64
63
|
end
|
65
64
|
end
|
66
65
|
end
|
@@ -16,25 +16,6 @@ module SlackRubyBot
|
|
16
16
|
SlackRubyBot::Commands::Base.command_classes << subclass
|
17
17
|
end
|
18
18
|
|
19
|
-
def send_message(client, channel, text, options = {})
|
20
|
-
logger.warn '[DEPRECATION] `send_message` is deprecated. Please use `client.say` instead.'
|
21
|
-
if text && !text.length.empty?
|
22
|
-
client.say(options.merge(channel: channel, text: text))
|
23
|
-
else
|
24
|
-
client.say(options.merge(channel: channel, text: 'Nothing to see here.', gif: 'nothing'))
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def send_message_with_gif(client, channel, text, keywords, options = {})
|
29
|
-
logger.warn '[DEPRECATION] `send_message_with_gif` is deprecated. Please use `client.say` instead.'
|
30
|
-
client.say(options.merge(channel: channel, text: text, gif: keywords))
|
31
|
-
end
|
32
|
-
|
33
|
-
def send_gif(client, channel, keywords, options = {})
|
34
|
-
logger.warn '[DEPRECATION] `send_gif` is deprecated. Please use `client.say` instead.'
|
35
|
-
client.say(options.merge(channel: channel, text: '', gif: keywords))
|
36
|
-
end
|
37
|
-
|
38
19
|
def help(&block)
|
39
20
|
Support::Help.instance.capture_help(self, &block)
|
40
21
|
end
|