Skip to content

Commit 06d495c

Browse files
committed
Merge pull request #10 from Galavantier/master
Fixed a couple of bugs related to the PM functionality
2 parents 8ce7314 + 4c7059b commit 06d495c

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

index.js

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -234,17 +234,20 @@ slackAPI.prototype.getUserByEmail = function(term) {
234234
};
235235

236236
slackAPI.prototype.getIM = function(term) {
237-
var im = null;
237+
var im = null, self = this;
238238
for (var i in self.slackData.ims) {
239239
if(self.slackData.ims[i]['user'] === term) {
240240
im = self.slackData.ims[i];
241241
}
242242
}
243243
if (im === null) {
244-
for (var i_ in self.slackData.ims) {
245-
if (self.slackData.ims[i_]['user'] === this.getUser(term).id) {
246-
im = self.slackData.ims[i_];
247-
}
244+
var user = this.getUser(term);
245+
if(user !== null) {
246+
for (var i_ in self.slackData.ims) {
247+
if (self.slackData.ims[i_]['user'] === user.id) {
248+
im = self.slackData.ims[i_];
249+
}
250+
}
248251
}
249252
}
250253
if (im === null) {
@@ -261,10 +264,24 @@ slackAPI.prototype.sendMsg = function(channel, text) {
261264
this.sendSock({'type': 'message', 'channel': channel, 'text': text});
262265
};
263266

264-
slackAPI.prototype.sendPM = function(user, text) {
265-
this.sendSock({'type': 'message', 'channel': this.getIM(user).id, 'text': text});
267+
slackAPI.prototype.sendPM = function(userID, text) {
268+
var self = this;
269+
channel = self.getIM(userID);
270+
if(channel !== null) {
271+
self.sendSock({'type': 'message', 'channel': channel.id, 'text': text});
272+
} else {
273+
self.reqAPI('im.open', { user : this.getUser(userID).id }, function(data){
274+
if(data.ok === true) {
275+
self.slackData.ims.push(data.channel);
276+
self.sendSock({'type': 'message', 'channel': data.channel.id, 'text': text});
277+
} else {
278+
self.out('error', 'Error. Unable to create an im channel: ' + data);
279+
self.emit("error", data);
280+
}
281+
});
282+
}
266283
};
267284

268285
slackAPI.prototype.events = events;
269286

270-
module.exports = slackAPI;
287+
module.exports = slackAPI;

0 commit comments

Comments
 (0)