Skip to content

Commit 7f628a8

Browse files
authoredMay 8, 2024··
implement #309;
1 parent afa6aa1 commit 7f628a8

File tree

2 files changed

+31
-45
lines changed

2 files changed

+31
-45
lines changed
 

‎examples/advanced/room-bot.js

+29-16
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,15 @@ async function manageDingRoom() {
303303
/**
304304
* Event: Leave
305305
*/
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+
})
307315
log.info('Bot', 'Room EVENT: leave - "%s" leave(remover "%s"), byebye', leaverList.join(','), remover || 'unknown')
308316
})
309317

@@ -399,31 +407,36 @@ async function createDingRoom(contact) {
399407
log.info('Bot', 'createDingRoom("%s")', contact)
400408

401409
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.`)
408413
return
409414
}
410415

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+
}
412425

413-
const contactList = [contact, helperContact]
426+
const contactList = [contact, ...randomMembers]
414427
log.verbose('Bot', 'contactList: "%s"', contactList.join(','))
415428

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)
419432

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!`);
422435

423436
return room
424437

425438
} catch (e) {
426-
log.error('Bot', 'getHelperContact() exception:', e.stack)
439+
log.error('Bot', 'createDingRoom() exception:', e.stack)
427440
throw e
428441
}
429-
}
442+
}

‎examples/professional/hot-import-bot/listeners/on-message.js

+2-29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.