slack-ruby-bot 0.5.3 → 0.5.4
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/.rubocop_todo.yml +6 -2
- data/CHANGELOG.md +4 -0
- data/LICENSE.md +1 -1
- data/README.md +4 -4
- data/lib/slack-ruby-bot/app.rb +2 -1
- data/lib/slack-ruby-bot/client.rb +6 -0
- data/lib/slack-ruby-bot/commands/base.rb +2 -2
- data/lib/slack-ruby-bot/server.rb +3 -1
- data/lib/slack-ruby-bot/version.rb +1 -1
- data/spec/slack-ruby-bot/commands/send_message_with_gif_spec.rb +14 -1
- data/spec/slack-ruby-bot/server_spec.rb +20 -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: eba2b910b92cbe628a3fb697a08dd62d0af70e5b
|
4
|
+
data.tar.gz: 470fb9481c91e1203ca4ef6ed320f86d3edfbb9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5147a284b8b37f26417bddb8dc96c8a656e3426b108592b06d0815afb42725ba894dee61a72cc8d56526f0c184b76df160ed64f40fb20a8c0004f8377b9ef288
|
7
|
+
data.tar.gz: 96dc0cce71969ab11ef68f30f970876859d21c8a7aedf09222139bb80d6159c215a6218a1999fea8d4708423078af54137a2826e88051c2394e1574e9e2f58fe
|
data/.rubocop_todo.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
-
# on
|
2
|
+
# on 2016-01-03 14:51:05 -0700 using RuboCop version 0.32.1.
|
3
3
|
# The point is for the user to remove these configuration records
|
4
4
|
# one by one as the offenses are removed from the code base.
|
5
5
|
# Note that changes in the inspected code, or installation of new
|
@@ -26,7 +26,7 @@ Metrics/ClassLength:
|
|
26
26
|
Metrics/CyclomaticComplexity:
|
27
27
|
Max: 8
|
28
28
|
|
29
|
-
# Offense count:
|
29
|
+
# Offense count: 104
|
30
30
|
# Configuration parameters: AllowURI, URISchemes.
|
31
31
|
Metrics/LineLength:
|
32
32
|
Max: 145
|
@@ -44,6 +44,10 @@ Metrics/PerceivedComplexity:
|
|
44
44
|
Style/Documentation:
|
45
45
|
Enabled: false
|
46
46
|
|
47
|
+
# Offense count: 2
|
48
|
+
Style/DoubleNegation:
|
49
|
+
Enabled: false
|
50
|
+
|
47
51
|
# Offense count: 1
|
48
52
|
# Configuration parameters: Exclude.
|
49
53
|
Style/FileName:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
### 0.5.4 (1/3/2016)
|
2
|
+
|
3
|
+
* Enable setting `send_gifs` per instance of `SlackRubyBot::Server` - [@dblock](https://github.com/dblock).
|
4
|
+
|
1
5
|
### 0.5.3 (12/28/2015)
|
2
6
|
|
3
7
|
* [#36](https://github.com/dblock/slack-ruby-bot/issues/36): Fix: non-English bot aliases now work - [@dblock](https://github.com/dblock).
|
data/LICENSE.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2015 Daniel Doubrovkine, Artsy and Contributors
|
3
|
+
Copyright (c) 2015-2016 Daniel Doubrovkine, Artsy and Contributors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
6
|
a copy of this software and associated documentation files (the
|
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.4.
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
@@ -229,7 +229,7 @@ end
|
|
229
229
|
|
230
230
|
### Advanced Integration
|
231
231
|
|
232
|
-
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 `
|
232
|
+
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`, `aliases` and `send_gifs`.
|
233
233
|
|
234
234
|
```ruby
|
235
235
|
EM.run do
|
@@ -237,7 +237,7 @@ EM.run do
|
|
237
237
|
bot1.auth!
|
238
238
|
bot1.start_async
|
239
239
|
|
240
|
-
bot2 = SlackRubyBot::Server.new(token: token2, aliases: ['bot2'])
|
240
|
+
bot2 = SlackRubyBot::Server.new(token: token2, send_gifs: false, aliases: ['bot2'])
|
241
241
|
bot2.auth!
|
242
242
|
bot2.start_async
|
243
243
|
end
|
@@ -263,6 +263,6 @@ See [CHANGELOG](CHANGELOG.md) for a history of changes and [UPGRADING](UPGRADING
|
|
263
263
|
|
264
264
|
## Copyright and License
|
265
265
|
|
266
|
-
Copyright (c) 2015, [Daniel Doubrovkine](https://twitter.com/dblockdotorg), [Artsy](https://www.artsy.net) and [Contributors](CHANGELOG.md).
|
266
|
+
Copyright (c) 2015-2016, [Daniel Doubrovkine](https://twitter.com/dblockdotorg), [Artsy](https://www.artsy.net) and [Contributors](CHANGELOG.md).
|
267
267
|
|
268
268
|
This project is licensed under the [MIT License](LICENSE.md).
|
data/lib/slack-ruby-bot/app.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module SlackRubyBot
|
2
2
|
class App < Server
|
3
|
-
def initialize
|
3
|
+
def initialize(options = {})
|
4
4
|
SlackRubyBot.configure do |config|
|
5
5
|
config.token = ENV['SLACK_API_TOKEN'] || fail("Missing ENV['SLACK_API_TOKEN'].")
|
6
6
|
config.aliases = ENV['SLACK_RUBY_BOT_ALIASES'].split(' ') if ENV['SLACK_RUBY_BOT_ALIASES']
|
@@ -8,6 +8,7 @@ module SlackRubyBot
|
|
8
8
|
Slack.configure do |config|
|
9
9
|
config.token = SlackRubyBot.config.token
|
10
10
|
end
|
11
|
+
super
|
11
12
|
end
|
12
13
|
|
13
14
|
def config
|
@@ -2,10 +2,12 @@ module SlackRubyBot
|
|
2
2
|
class Client < Slack::RealTime::Client
|
3
3
|
attr_accessor :auth
|
4
4
|
attr_accessor :aliases
|
5
|
+
attr_accessor :send_gifs
|
5
6
|
|
6
7
|
def initialize(attrs = {})
|
7
8
|
super(attrs)
|
8
9
|
@aliases = attrs[:aliases]
|
10
|
+
@send_gifs = attrs.key?(:send_gifs) ? !!attrs[:send_gifs] : true
|
9
11
|
end
|
10
12
|
|
11
13
|
def names
|
@@ -27,6 +29,10 @@ module SlackRubyBot
|
|
27
29
|
name && names.include?(name.downcase)
|
28
30
|
end
|
29
31
|
|
32
|
+
def send_gifs?
|
33
|
+
send_gifs
|
34
|
+
end
|
35
|
+
|
30
36
|
def name
|
31
37
|
SlackRubyBot.config.user || (auth && auth['user'])
|
32
38
|
end
|
@@ -101,13 +101,13 @@ module SlackRubyBot
|
|
101
101
|
def self.get_gif_and_send(options = {})
|
102
102
|
options = options.dup
|
103
103
|
keywords = options.delete(:keywords)
|
104
|
+
client = options.delete(:client)
|
104
105
|
gif = begin
|
105
106
|
Giphy.random(keywords)
|
106
107
|
rescue StandardError => e
|
107
108
|
logger.warn "Giphy.random: #{e.message}"
|
108
109
|
nil
|
109
|
-
end if SlackRubyBot::Config.send_gifs?
|
110
|
-
client = options.delete(:client)
|
110
|
+
end if SlackRubyBot::Config.send_gifs? && client.send_gifs?
|
111
111
|
text = options.delete(:text)
|
112
112
|
text = [text, gif && gif.image_url.to_s].compact.join("\n")
|
113
113
|
send_client_message(client, { text: text }.merge(options))
|
@@ -3,6 +3,7 @@ module SlackRubyBot
|
|
3
3
|
cattr_accessor :hooks
|
4
4
|
attr_accessor :token
|
5
5
|
attr_accessor :aliases
|
6
|
+
attr_accessor :send_gifs
|
6
7
|
|
7
8
|
include SlackRubyBot::Hooks::Hello
|
8
9
|
include SlackRubyBot::Hooks::Message
|
@@ -10,6 +11,7 @@ module SlackRubyBot
|
|
10
11
|
def initialize(options = {})
|
11
12
|
@token = options[:token]
|
12
13
|
@aliases = options[:aliases]
|
14
|
+
@send_gifs = options.key?(:send_gifs) ? !!options[:send_gifs] : true
|
13
15
|
end
|
14
16
|
|
15
17
|
def run
|
@@ -83,7 +85,7 @@ module SlackRubyBot
|
|
83
85
|
|
84
86
|
def client
|
85
87
|
@client ||= begin
|
86
|
-
client = SlackRubyBot::Client.new(aliases: aliases, token: token)
|
88
|
+
client = SlackRubyBot::Client.new(aliases: aliases, send_gifs: send_gifs, token: token)
|
87
89
|
client.on :close do |_data|
|
88
90
|
@client = nil
|
89
91
|
restart! unless @stopping
|
@@ -30,7 +30,20 @@ describe SlackRubyBot::Commands do
|
|
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
|
33
|
-
context 'set to false' do
|
33
|
+
context 'set to false via client' do
|
34
|
+
before do
|
35
|
+
client.send_gifs = false
|
36
|
+
end
|
37
|
+
it 'does not send a gif' do
|
38
|
+
expect(Giphy).to_not receive(:random)
|
39
|
+
expect(SlackRubyBot::Commands::Base).to receive(:send_client_message).with(client, channel: 'channel', text: 'message')
|
40
|
+
app.send(:message, client, text: "#{SlackRubyBot.config.user} send_message_with_gif_spec message", channel: 'channel', user: 'user')
|
41
|
+
end
|
42
|
+
after do
|
43
|
+
client.send_gifs = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
context 'set to false via config' do
|
34
47
|
before do
|
35
48
|
SlackRubyBot::Config.send_gifs = false
|
36
49
|
end
|
@@ -1,9 +1,21 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SlackRubyBot::Server do
|
4
|
+
let(:logger) { subject.send :logger }
|
5
|
+
let(:client) { Slack::RealTime::Client.new }
|
6
|
+
context 'with a token and disabled GIFs' do
|
7
|
+
subject do
|
8
|
+
SlackRubyBot::Server.new(token: 'token', send_gifs: false)
|
9
|
+
end
|
10
|
+
before do
|
11
|
+
allow(subject).to receive(:sleep)
|
12
|
+
allow(logger).to receive(:error)
|
13
|
+
end
|
14
|
+
it 'sets GIFs' do
|
15
|
+
expect(subject.send(:client).send_gifs?).to be false
|
16
|
+
end
|
17
|
+
end
|
4
18
|
context 'with a token and aliases' do
|
5
|
-
let(:client) { Slack::RealTime::Client.new }
|
6
|
-
let(:logger) { subject.send :logger }
|
7
19
|
subject do
|
8
20
|
SlackRubyBot::Server.new(token: 'token', aliases: %w(foo bar))
|
9
21
|
end
|
@@ -15,26 +27,27 @@ describe SlackRubyBot::Server do
|
|
15
27
|
expect(subject.send(:client).aliases).to eq %w(foo bar)
|
16
28
|
expect(subject.send(:client).names).to include 'foo'
|
17
29
|
end
|
30
|
+
it 'sets GIFs' do
|
31
|
+
expect(subject.send(:client).send_gifs?).to be true
|
32
|
+
end
|
18
33
|
it 'creates a client with a token' do
|
19
34
|
expect(client).to receive(:start!) { fail 'expected' }
|
20
|
-
expect(Slack::RealTime::Client).to receive(:new).with(token: 'token', aliases: %w(foo bar)).and_return(client)
|
35
|
+
expect(Slack::RealTime::Client).to receive(:new).with(token: 'token', send_gifs: true, aliases: %w(foo bar)).and_return(client)
|
21
36
|
expect { subject.start! }.to raise_error RuntimeError, 'expected'
|
22
37
|
end
|
23
38
|
it 'asynchronously creates a client with a token' do
|
24
39
|
expect(client).to receive(:start_async) { fail 'expected' }
|
25
|
-
expect(Slack::RealTime::Client).to receive(:new).with(token: 'token', aliases: %w(foo bar)).and_return(client)
|
40
|
+
expect(Slack::RealTime::Client).to receive(:new).with(token: 'token', send_gifs: true, aliases: %w(foo bar)).and_return(client)
|
26
41
|
expect { subject.start_async }.to raise_error RuntimeError, 'expected'
|
27
42
|
end
|
28
43
|
it 'stops client' do
|
29
|
-
expect(Slack::RealTime::Client).to receive(:new).with(token: 'token', aliases: %w(foo bar)).and_return(client)
|
44
|
+
expect(Slack::RealTime::Client).to receive(:new).with(token: 'token', send_gifs: true, aliases: %w(foo bar)).and_return(client)
|
30
45
|
expect(subject.send(:client)).to_not be nil
|
31
46
|
expect(client).to receive(:started?).and_return(true)
|
32
47
|
subject.stop!
|
33
48
|
end
|
34
49
|
end
|
35
50
|
context 'retries on rtm.start errors' do
|
36
|
-
let(:client) { Slack::RealTime::Client.new }
|
37
|
-
let(:logger) { subject.send :logger }
|
38
51
|
before do
|
39
52
|
allow(subject).to receive(:auth!)
|
40
53
|
allow(subject).to receive(:sleep)
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Doubrovkine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|