@@ -303,7 +303,15 @@ async function manageDingRoom() {
303
303
/**
304
304
* Event: Leave
305
305
*/
306
- room . on ( 'leave' , ( leaverList , remover ) => {
306
+ room . on ( 'leave' , async function ( leaverList ) {
307
+
308
+ log . info ( 'Bot' , 'EVENT: room-leave - Room "%s" lost member "%s"' ,
309
+ await room . topic ( ) ,
310
+ const members = await room . memberAll ( )
311
+ if ( members . length < 3 ) {
312
+ await room . quit ( )
313
+ }
314
+ } )
307
315
log . info ( 'Bot' , 'Room EVENT: leave - "%s" leave(remover "%s"), byebye' , leaverList . join ( ',' ) , remover || 'unknown' )
308
316
} )
309
317
@@ -399,31 +407,36 @@ async function createDingRoom(contact) {
399
407
log . info ( 'Bot' , 'createDingRoom("%s")' , contact )
400
408
401
409
try {
402
- const helperContact = await getHelperContact ( )
403
-
404
- if ( ! helperContact ) {
405
- log . warn ( 'Bot' , 'getHelperContact() found nobody' )
406
- await contact . say ( `You don't have a friend called "${ HELPER_CONTACT_NAME } ",
407
- because create a new room at least need 3 contacts, please set [HELPER_CONTACT_NAME] in the code first!` )
410
+ if ( ! contact . room ( ) . has ( contact ) ) {
411
+ log . warn ( 'Bot' , 'The group has less than 3 members' )
412
+ await contact . say ( `The group has less than 3 members, please add more members before starting the game.` )
408
413
return
409
414
}
410
415
411
- log . info ( 'Bot' , 'getHelperContact() ok. got: "%s"' , helperContact . name ( ) )
416
+ const members = await contact . room ( ) . memberAll ( )
417
+ const randomMembers = [ ]
418
+ while ( randomMembers . length < 2 ) {
419
+ const randomIndex = Math . floor ( Math . random ( ) * members . length )
420
+ const randomMember = members [ randomIndex ]
421
+ if ( randomMember != contact && ! randomMembers . includes ( randomMember ) ) {
422
+ randomMembers . push ( randomMember )
423
+ }
424
+ }
412
425
413
- const contactList = [ contact , helperContact ]
426
+ const contactList = [ contact , ... randomMembers ]
414
427
log . verbose ( 'Bot' , 'contactList: "%s"' , contactList . join ( ',' ) )
415
428
416
- await contact . say ( `There isn't ding room. I'm trying to create a room with " ${ helperContact . name ( ) } " and you ` )
417
- const room = await bot . Room . create ( contactList , 'ding ' )
418
- log . info ( 'Bot' , 'createDingRoom() new ding room created: "%s"' , room )
429
+ await contact . say ( `Creating a new group with you and ${ randomMembers . map ( member => member . name ( ) ) . join ( ', ' ) } ` )
430
+ const room = await bot . Room . create ( contactList , 'Coffee Chat ' )
431
+ log . info ( 'Bot' , 'createDingRoom() new Coffee Chat room created: "%s"' , room )
419
432
420
- await room . topic ( 'ding - created' )
421
- await room . say ( 'ding - created' )
433
+ await room . topic ( 'Coffee Chat - created' )
434
+ await room . say ( `Welcome to the coffee chat group! This group is requested by ${ contact . name ( ) } , and your random partners are ${ randomMembers . map ( member => member . name ( ) ) . join ( ', ' ) } . I hope you guys have a good ice-breaking time!` ) ;
422
435
423
436
return room
424
437
425
438
} catch ( e ) {
426
- log . error ( 'Bot' , 'getHelperContact () exception:' , e . stack )
439
+ log . error ( 'Bot' , 'createDingRoom () exception:' , e . stack )
427
440
throw e
428
441
}
429
- }
442
+ }
0 commit comments