slackbot_frd 0.2.0 → 0.2.1

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: 8f18d78abc8751ff7cf6ccab669a856f3e5896eb
4
- data.tar.gz: 7ccd3d4e72331455e3ae954225dea63421cbc696
3
+ metadata.gz: 9f7493d31b22bcf1ce011a8966d80c54bc11e6e2
4
+ data.tar.gz: e201692f2be3a8b5fdadd40cce393ceecc4f2937
5
5
  SHA512:
6
- metadata.gz: cd865011f64fd16a8d53f39ce099f0ca62308b0228117b598471817cf06be91eab66d4e8ee84e3b388c1a345a7bd94e4dbe1c56b45bd46cd46d7894f4a98e529
7
- data.tar.gz: 088ccc188cc9f8f4b1bad887ce5beb91107e8053393a927aa6bf36ef29f265036c51c7cfd46ca25994533119ab8101688a6fab6c5c2fe75d78e3e34368bc9740
6
+ metadata.gz: 7585d262c05115e8878ca21dedf8f53903354a35c7a59449f970ddea9d62e875a8c761c495ffcd6efbbb21d2b7869ed260f476f20040dce33eeec60f2813d3c9
7
+ data.tar.gz: f7ed2227c9ee666af0535e6f8d5602f2cef915d67ab9f330809aad1c9a52343e600478ef1cc6b5ebf71a963d0595e6ff49a63c60f2c10496668db34f485b60a7
@@ -128,17 +128,29 @@ module SlackbotFrd
128
128
  end
129
129
  end
130
130
 
131
- def send_message(channel:, message:, username: nil, avatar_emoji: nil, avatar_url: nil)
131
+ def send_im(user:, message:, username: nil, avatar_emoji: nil, avatar_url: nil)
132
+ send_message(
133
+ channel: im_channel_for_user(user),
134
+ message: message,
135
+ username: username,
136
+ avatar_emoji: avatar_emoji,
137
+ avatar_url: avatar_url,
138
+ channel_is_id: true
139
+ )
140
+ end
141
+
142
+ def send_message(channel:, message:, username: nil, avatar_emoji: nil, avatar_url: nil, channel_is_id: false)
132
143
  if username && (avatar_emoji || avatar_url)
133
144
  send_message_as_bot(
134
145
  channel: channel,
135
146
  message: message,
136
147
  username: username,
137
148
  avatar_emoji: avatar_emoji,
138
- avatar_url: avatar_url
149
+ avatar_url: avatar_url,
150
+ channel_id_id: channel_is_id
139
151
  )
140
152
  else
141
- send_message_as_user(channel: channel, message: message)
153
+ send_message_as_user(channel: channel, message: message, channel_is_id: channel_is_id)
142
154
  end
143
155
  end
144
156
 
@@ -183,6 +195,21 @@ module SlackbotFrd
183
195
  SlackbotFrd::Log.debug("#{self.class}: Received response: #{resp}")
184
196
  end
185
197
 
198
+ def im_channel_for_user(user:)
199
+ SlackbotFrd::Log.debug(
200
+ "#{self.class}: Opening or retrieving IM channel for user '#{user}'"
201
+ )
202
+
203
+ resp = JSON.parse(SlackbotFrd::SlackMethods::ImOpen.openChannel(
204
+ token: @token,
205
+ user: user_name_to_id(user)
206
+ ))
207
+
208
+ SlackbotFrd::Log.debug("#{self.class}: Received response: #{resp}")
209
+ return resp["channel"]["id"] if resp["channel"]
210
+ resp
211
+ end
212
+
186
213
  def users_in_channel(channel)
187
214
  a = SlackMethods::ChannelsInfo.members(
188
215
  token: @token,
@@ -258,13 +285,15 @@ module SlackbotFrd
258
285
  end
259
286
 
260
287
  private
261
- def send_message_as_user(channel:, message:)
288
+ def send_message_as_user(channel:, message:, channel_is_id: false)
262
289
  unless @ws
263
290
  log_and_add_to_error_file(
264
291
  "Cannot send message '#{message}' as user to channel '#{channel}' because not connected to wss stream"
265
292
  )
266
293
  end
267
294
 
295
+ channel_id = channel_is_id ? channel : channel_name_to_id(channel)
296
+
268
297
  SlackbotFrd::Log.debug(
269
298
  "#{self.class}: Sending message '#{message}' as user to channel '#{channel}'"
270
299
  )
@@ -273,7 +302,7 @@ module SlackbotFrd
273
302
  resp = @ws.send({
274
303
  id: event_id,
275
304
  type: 'message',
276
- channel: channel_name_to_id(channel),
305
+ channel: channel_id,
277
306
  text: message
278
307
  }.to_json)
279
308
 
@@ -284,14 +313,16 @@ module SlackbotFrd
284
313
  end
285
314
 
286
315
  private
287
- def send_message_as_bot(channel:, message:, username:, avatar_emoji: nil, avatar_url: nil)
316
+ def send_message_as_bot(channel:, message:, username:, avatar_emoji: nil, avatar_url: nil, channel_is_id: false)
288
317
  SlackbotFrd::Log.debug(
289
318
  "#{self.class}: Sending message '#{message}' as bot user '#{username}' to channel '#{channel}'"
290
319
  )
291
320
 
321
+ channel_id = channel_is_id ? channel : channel_name_to_id(channel)
322
+
292
323
  resp = SlackbotFrd::SlackMethods::ChatPostMessage.postMessage(
293
324
  token: @token,
294
- channel: channel_name_to_id(channel),
325
+ channel: channel_id,
295
326
  message: message,
296
327
  username: username,
297
328
  avatar_emoji: avatar_emoji,
@@ -0,0 +1,34 @@
1
+ require 'httparty'
2
+ require 'json'
3
+
4
+ module SlackbotFrd
5
+ module SlackMethods
6
+ class ImOpen
7
+ include HTTParty
8
+ base_uri 'https://slack.com/api/im.open'
9
+
10
+ def self.openChannel(token:, user:)
11
+ r = ImOpen.new(
12
+ token: token,
13
+ user: user
14
+ )
15
+ r.openChannel
16
+ end
17
+
18
+ def initialize(token:, user:)
19
+ @token = token
20
+ @user = user
21
+ end
22
+
23
+ def openChannel
24
+ body = {
25
+ token: @token,
26
+ user: @user
27
+ }
28
+
29
+ @response = self.class.post('', :body => body)
30
+ @response.body
31
+ end
32
+ end
33
+ end
34
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slackbot_frd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Porter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-11 00:00:00.000000000 Z
11
+ date: 2015-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -179,6 +179,7 @@ files:
179
179
  - lib/slackbot_frd/slack_methods/chat_post_message.rb
180
180
  - lib/slackbot_frd/slack_methods/groups_list.rb
181
181
  - lib/slackbot_frd/slack_methods/im_channels_list.rb
182
+ - lib/slackbot_frd/slack_methods/im_open.rb
182
183
  - lib/slackbot_frd/slack_methods/reactions_add.rb
183
184
  - lib/slackbot_frd/slack_methods/rtm_start.rb
184
185
  - lib/slackbot_frd/slack_methods/users_list.rb