ruboty-slack_rtm 1.1.0 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f95736f27208e55dcea4fad8b2cd2335ca3bfcd3
4
- data.tar.gz: 141a8135f8c1765193d09834f4a452ce034f0124
3
+ metadata.gz: 45e73d77b1b4391c773714eb6f44b0221ad8dabf
4
+ data.tar.gz: b97942197c1b6ac18f0b29a7bbf11bcb1fbdb97a
5
5
  SHA512:
6
- metadata.gz: 8f9413b2f75f3de4854295805c4ef7ecb878b9f2eb5fe55f2595265ef0e54e7ed46c26f8c290d22973b107c9cdc3a9e25e75fb25ad304d7f7a990739fd0ad4c9
7
- data.tar.gz: 484e7ce9b6ec14d2222d2278f4599d964a78c3e9adfe4b5db5fd71ec9ea7e65df632b41b0b9926b60cdf3388e6d551495f7f599b0391e5038caaa01d520fa524
6
+ metadata.gz: 196669e7298354cc24f308c5b95634c169b4cbb655163fd13f99aff566f06e4fe0f8157fe07cb81b72efb8ade73bcf6d5875e5e88c98634c96718fd2823cf3cc
7
+ data.tar.gz: f30da17bd38608e2d2b0914cc85d1f8519607a046f77d474eceab2cdc6d72211b33fc784464e46deb10db75ee31b360a2281bac74e70438f76e5cc639f88d3c7
data/README.md CHANGED
@@ -12,13 +12,11 @@ gem 'ruboty-slack_rtm'
12
12
 
13
13
  ## ENV
14
14
 
15
- ```
16
- SLACK_TOKEN - Account's token. get one on https://api.slack.com/web#basics
17
- ```
18
-
19
- Do not requires real user account. using with bot is recommended.
15
+ - `SLACK_TOKEN`: Account's token. get one on https://api.slack.com/web#basics
16
+ - `SLACK_EXPOSE_CHANNEL_NAME_AS_FROM`: if this set to 1, `message.from` will be channel name instead of id (optional)
20
17
 
21
- see: https://api.slack.com/bot-users
18
+ This adapter doesn't require a real user account. Using with bot integration's API token is recommended.
19
+ See: https://api.slack.com/bot-users
22
20
 
23
21
  ## Contributing
24
22
 
@@ -7,6 +7,7 @@ module Ruboty
7
7
  module Adapters
8
8
  class SlackRTM < Base
9
9
  env :SLACK_TOKEN, "Account's token. get one on https://api.slack.com/web#basics"
10
+ env :SLACK_EXPOSE_CHANNEL_NAME_AS_FROM, "if this set to 1, message.from will be channel name instead of id", optional: true
10
11
 
11
12
  def run
12
13
  init
@@ -35,7 +36,7 @@ module Ruboty
35
36
  def init
36
37
  response = client.auth_test
37
38
  @user_info_caches = {}
38
- @channel_info_cahces = {}
39
+ @channel_info_caches = {}
39
40
 
40
41
  ENV['RUBOTY_NAME'] ||= response['user']
41
42
 
@@ -73,6 +74,14 @@ module Ruboty
73
74
  @realtime ||= ::SlackRTM::Client.new(websocket_url: url)
74
75
  end
75
76
 
77
+ def expose_channel_name_as_from?
78
+ if @expose_channel_name_as_from.nil?
79
+ @expose_channel_name_as_from = ENV['SLACK_EXPOSE_CHANNEL_NAME_AS_FROM'] == '1'
80
+ else
81
+ @expose_channel_name_as_from
82
+ end
83
+ end
84
+
76
85
  def set_active
77
86
  client.users_setActive
78
87
  end
@@ -83,12 +92,15 @@ module Ruboty
83
92
  data = resolve_mention!(data)
84
93
  user = user_info(data['user']) || {}
85
94
 
95
+ channel = channel_info(data['channel'])
96
+ channel_from = expose_channel_name_as_from? ? "##{channel['name']}" : channel['id']
97
+
86
98
  robot.receive(
87
99
  body: data['text'],
88
- from: data['channel'],
100
+ from: channel_from,
89
101
  from_name: user['name'],
90
102
  to: data['channel'],
91
- channel: channel_info(data['channel']),
103
+ channel: channel,
92
104
  user: user,
93
105
  mention_to: data['mention_to'],
94
106
  time: Time.at(data['ts'].to_f)
@@ -154,13 +166,13 @@ module Ruboty
154
166
 
155
167
  def resolve_send_mention(text)
156
168
  text = text.to_s
157
- text.gsub!(/@(?<mention>[0-9a-z_-]+)/) do |_|
169
+ text.gsub!(/@(?<mention>[0-9a-z._-]+)/) do |_|
158
170
  mention = Regexp.last_match[:mention]
159
171
  msg = "@#{mention}"
160
172
 
161
173
  @user_info_caches.each_pair do |id, user|
162
174
  if user['name'].downcase == mention.downcase
163
- msg = "<@#{id}|#{mention}>"
175
+ msg = "<@#{id}>"
164
176
  end
165
177
  end
166
178
 
@@ -175,7 +187,7 @@ module Ruboty
175
187
  room_id = Regexp.last_match[:room_id]
176
188
  msg = "##{room_id}"
177
189
 
178
- @channel_info_cahces.each_pair do |id, channel|
190
+ @channel_info_caches.each_pair do |id, channel|
179
191
  if channel && channel['name'] == room_id
180
192
  msg = "<##{id}|#{room_id}>"
181
193
  end
@@ -200,7 +212,7 @@ module Ruboty
200
212
  resp = client.channels_list
201
213
  if resp['ok']
202
214
  resp['channels'].each do |channel|
203
- @channel_info_cahces[channel['id']] = channel
215
+ @channel_info_caches[channel['id']] = channel
204
216
  end
205
217
  end
206
218
  end
@@ -216,7 +228,7 @@ module Ruboty
216
228
  end
217
229
 
218
230
  def channel_info(channel_id)
219
- @channel_info_cahces[channel_id] ||= begin
231
+ @channel_info_caches[channel_id] ||= begin
220
232
  resp = case channel_id
221
233
  when /^C/
222
234
  client.channels_info(channel: channel_id)
@@ -1,5 +1,5 @@
1
1
  module Ruboty
2
2
  module SlackRTM
3
- VERSION = '1.1.0'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  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: 1.1.0
4
+ version: 1.2.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: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler