ruboty-slack_rtm 2.2.0 → 2.3.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/lib/ruboty/adapters/slack_rtm.rb +10 -3
- data/lib/ruboty/slack_rtm/client.rb +16 -6
- data/lib/ruboty/slack_rtm/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8b132d94e6b54aadda6cfe398f55e4431b165f5
|
4
|
+
data.tar.gz: 224dd734bc0e1bffdae46932d819c97ac74ef8e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e34dcdc874d34b809eae3aedf9c95a3faa8892f69ccf6cb31658caedf95500f9ecee5ba87ff91be2dcb364eeceba067818f254bfd85d63cb758265545969ce37
|
7
|
+
data.tar.gz: 163740287c666ca50ac2b96237c5b7bed57a51a1b395d80f71a9756c54f5c9f0977e7ce6eeb17643918d0e1e0122d8029070a8919dbbf0bfb8a76ddee1074591
|
@@ -8,6 +8,7 @@ module Ruboty
|
|
8
8
|
class SlackRTM < Base
|
9
9
|
env :SLACK_TOKEN, "Account's token. get one on https://api.slack.com/web#basics"
|
10
10
|
env :SLACK_EXPOSE_CHANNEL_NAME, "if this set to 1, message.to will be channel name instead of id", optional: true
|
11
|
+
env :SLACK_IGNORE_BOT_MESSAGE, "If this set to 1, bot ignores bot_messages", optional: true
|
11
12
|
env :SLACK_IGNORE_GENERAL, "if this set to 1, bot ignores all messages on #general channel", optional: true
|
12
13
|
env :SLACK_GENERAL_NAME, "Set general channel name if your Slack changes general name", optional: true
|
13
14
|
|
@@ -25,7 +26,7 @@ module Ruboty
|
|
25
26
|
|
26
27
|
return unless channel
|
27
28
|
|
28
|
-
realtime.
|
29
|
+
realtime.send_message(
|
29
30
|
type: 'message',
|
30
31
|
channel: channel,
|
31
32
|
text: message[:code] ? "```\n#{message[:body]}\n```" : resolve_send_mention(message[:body]),
|
@@ -49,7 +50,7 @@ module Ruboty
|
|
49
50
|
end
|
50
51
|
|
51
52
|
def bind
|
52
|
-
realtime.
|
53
|
+
realtime.on_text do |data|
|
53
54
|
method_name = "on_#{data['type']}".to_sym
|
54
55
|
send(method_name, data) if respond_to?(method_name, true)
|
55
56
|
end
|
@@ -103,6 +104,10 @@ module Ruboty
|
|
103
104
|
|
104
105
|
channel = channel_info(data['channel'])
|
105
106
|
|
107
|
+
if data['type'] == 'bot_message' && ENV['SLACK_IGNORE_BOT_MESSAGE'] == '1'
|
108
|
+
return
|
109
|
+
end
|
110
|
+
|
106
111
|
if channel
|
107
112
|
return if channel['name'] == (ENV['SLACK_GENERAL_NAME'] || 'general') && ENV['SLACK_IGNORE_GENERAL'] == '1'
|
108
113
|
|
@@ -123,6 +128,8 @@ module Ruboty
|
|
123
128
|
)
|
124
129
|
end
|
125
130
|
|
131
|
+
alias on_bot_message on_message
|
132
|
+
|
126
133
|
def on_channel_change(data)
|
127
134
|
make_channels_cache
|
128
135
|
end
|
@@ -289,7 +296,7 @@ module Ruboty
|
|
289
296
|
|
290
297
|
def resolve_channel_id(name)
|
291
298
|
ret_id = nil
|
292
|
-
@
|
299
|
+
@channel_info_caches.each_pair do |id, channel|
|
293
300
|
if channel['name'] == name
|
294
301
|
ret_id = id
|
295
302
|
break
|
@@ -10,14 +10,24 @@ module Ruboty
|
|
10
10
|
@queue = Queue.new
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def send_message(data)
|
14
14
|
data[:id] = Time.now.to_i * 10 + rand(10)
|
15
15
|
@queue.enq(data.to_json)
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
@client.on(
|
20
|
-
|
18
|
+
def on_text(&block)
|
19
|
+
@client.on(:message) do |message|
|
20
|
+
case message.type
|
21
|
+
when :ping
|
22
|
+
Ruboty.logger.debug("#{Client.name}: Received ping message")
|
23
|
+
send('', type: 'pong')
|
24
|
+
when :pong
|
25
|
+
Ruboty.logger.debug("#{Client.name}: Received pong message")
|
26
|
+
when :text
|
27
|
+
block.call(JSON.parse(message.data))
|
28
|
+
else
|
29
|
+
Ruboty.logger.warn("#{Client.name}: Received unknown message type=#{message.type}: #{message.data}")
|
30
|
+
end
|
21
31
|
end
|
22
32
|
end
|
23
33
|
|
@@ -33,7 +43,7 @@ module Ruboty
|
|
33
43
|
private
|
34
44
|
|
35
45
|
def create_client(url)
|
36
|
-
WebSocket::Client::Simple.connect(url).tap do |client|
|
46
|
+
WebSocket::Client::Simple.connect(url, verify_mode: OpenSSL::SSL::VERIFY_PEER).tap do |client|
|
37
47
|
client.on(:error) do |err|
|
38
48
|
Ruboty.logger.error("#{err.class}: #{err.message}\n#{err.backtrace.join("\n")}")
|
39
49
|
end
|
@@ -44,7 +54,7 @@ module Ruboty
|
|
44
54
|
Thread.start do
|
45
55
|
loop do
|
46
56
|
sleep(30)
|
47
|
-
@client.send(type: 'ping')
|
57
|
+
@client.send('', type: 'ping')
|
48
58
|
end
|
49
59
|
end
|
50
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruboty-slack_rtm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sho Kusano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
132
|
version: '0'
|
133
133
|
requirements: []
|
134
134
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
135
|
+
rubygems_version: 2.5.1
|
136
136
|
signing_key:
|
137
137
|
specification_version: 4
|
138
138
|
summary: Slack real time messaging adapter for Ruboty
|