@@ -234,17 +234,20 @@ slackAPI.prototype.getUserByEmail = function(term) {
234234} ;
235235
236236slackAPI . 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
268285slackAPI . prototype . events = events ;
269286
270- module . exports = slackAPI ;
287+ module . exports = slackAPI ;
0 commit comments