slackbot_frd 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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