MCPcopy
hub / github.com/wechaty/wechaty / initPuppetEventBridge

Method initPuppetEventBridge

src/wechaty.ts:420–619  ·  view source on GitHub ↗
(puppet: Puppet)

Source from the content-addressed store, hash-verified

418 }
419
420 protected initPuppetEventBridge (puppet: Puppet) {
421 log.verbose('Wechaty', 'initPuppetEventBridge(%s)', puppet)
422
423 const eventNameList: PuppetEventName[] = Object.keys(PUPPET_EVENT_DICT) as PuppetEventName[]
424 for (const eventName of eventNameList) {
425 log.verbose('Wechaty',
426 'initPuppetEventBridge() puppet.on(%s) (listenerCount:%s) registering...',
427 eventName,
428 puppet.listenerCount(eventName),
429 )
430
431 switch (eventName) {
432 case 'dong':
433 puppet.on('dong', payload => {
434 this.emit('dong', payload.data)
435 })
436 break
437
438 case 'error':
439 puppet.on('error', payload => {
440 this.emit('error', new Error(payload.data))
441 })
442 break
443
444 case 'heartbeat':
445 puppet.on('heartbeat', payload => {
446 /**
447 * Use `watchdog` event from Puppet to `heartbeat` Wechaty.
448 */
449 // TODO: use a throttle queue to prevent beat too fast.
450 this.emit('heartbeat', payload.data)
451 })
452 break
453
454 case 'friendship':
455 puppet.on('friendship', async payload => {
456 const friendship = this.Friendship.load(payload.friendshipId)
457 await friendship.ready()
458 this.emit('friendship', friendship)
459 friendship.contact().emit('friendship', friendship)
460 })
461 break
462
463 case 'login':
464 puppet.on('login', async payload => {
465 const contact = this.ContactSelf.load(payload.contactId)
466 await contact.ready()
467 this.emit('login', contact)
468 })
469 break
470
471 case 'logout':
472 puppet.on('logout', async payload => {
473 const contact = this.ContactSelf.load(payload.contactId)
474 await contact.ready()
475 this.emit('logout', contact, payload.data)
476 })
477 break

Callers 1

initPuppetMethod · 0.95

Calls 8

userSelfMethod · 0.95
timestampToDateFunction · 0.90
onMethod · 0.80
contactMethod · 0.80
roomMethod · 0.80
loadMethod · 0.45
readyMethod · 0.45
syncMethod · 0.45

Tested by

no test coverage detected