@juzi/wechaty-puppet-whatsapp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +83 -0
- package/dist/cjs/examples/ding-dong-bot.d.ts +2 -0
- package/dist/cjs/examples/ding-dong-bot.d.ts.map +1 -0
- package/dist/cjs/examples/ding-dong-bot.js +98 -0
- package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/src/config.d.ts +41 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +58 -0
- package/dist/cjs/src/config.js.map +1 -0
- package/dist/cjs/src/data/cache-manager.d.ts +83 -0
- package/dist/cjs/src/data/cache-manager.d.ts.map +1 -0
- package/dist/cjs/src/data/cache-manager.js +303 -0
- package/dist/cjs/src/data/cache-manager.js.map +1 -0
- package/dist/cjs/src/data/cache-manager.spec.d.ts +2 -0
- package/dist/cjs/src/data/cache-manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/data/cache-manager.spec.js +32 -0
- package/dist/cjs/src/data/cache-manager.spec.js.map +1 -0
- package/dist/cjs/src/exception/error-type.d.ts +80 -0
- package/dist/cjs/src/exception/error-type.d.ts.map +1 -0
- package/dist/cjs/src/exception/error-type.js +61 -0
- package/dist/cjs/src/exception/error-type.js.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.d.ts +4 -0
- package/dist/cjs/src/exception/whatsapp-error.d.ts.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.js +14 -0
- package/dist/cjs/src/exception/whatsapp-error.js.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.d.ts +3 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.d.ts.map +1 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.js +27 -0
- package/dist/cjs/src/exception/whatsapp-error.spec.js.map +1 -0
- package/dist/cjs/src/helper/index.d.ts +2 -0
- package/dist/cjs/src/helper/index.d.ts.map +1 -0
- package/dist/cjs/src/helper/index.js +3 -0
- package/dist/cjs/src/helper/index.js.map +1 -0
- package/dist/cjs/src/helper/miscellaneous.d.ts +8 -0
- package/dist/cjs/src/helper/miscellaneous.d.ts.map +1 -0
- package/dist/cjs/src/helper/miscellaneous.js +48 -0
- package/dist/cjs/src/helper/miscellaneous.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.js +62 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.js +86 -0
- package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/convert-function.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/convert-function.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/convert-function.js +17 -0
- package/dist/cjs/src/helper/pure-function/convert-function.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/index.d.ts +5 -0
- package/dist/cjs/src/helper/pure-function/index.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/index.js +21 -0
- package/dist/cjs/src/helper/pure-function/index.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.js +136 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.js +229 -0
- package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.d.ts +28 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.js +59 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.js +101 -0
- package/dist/cjs/src/helper/pure-function/room-event-generator.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.d.ts +4 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.js +24 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.d.ts +2 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.js +68 -0
- package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.js.map +1 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.d.ts +28 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.d.ts.map +1 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.js +109 -0
- package/dist/cjs/src/helper/pure-function/vcard-parser.js.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.d.ts +19 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.d.ts.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.js +49 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.js.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.d.ts +2 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.js +45 -0
- package/dist/cjs/src/helper/schedule/schedule-manager.spec.js.map +1 -0
- package/dist/cjs/src/manager-event.d.ts +18 -0
- package/dist/cjs/src/manager-event.d.ts.map +1 -0
- package/dist/cjs/src/manager-event.js +3 -0
- package/dist/cjs/src/manager-event.js.map +1 -0
- package/dist/cjs/src/manager.d.ts +67 -0
- package/dist/cjs/src/manager.d.ts.map +1 -0
- package/dist/cjs/src/manager.js +270 -0
- package/dist/cjs/src/manager.js.map +1 -0
- package/dist/cjs/src/manager.spec.d.ts +3 -0
- package/dist/cjs/src/manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/manager.spec.js +38 -0
- package/dist/cjs/src/manager.spec.js.map +1 -0
- package/dist/cjs/src/mod.d.ts +5 -0
- package/dist/cjs/src/mod.d.ts.map +1 -0
- package/dist/cjs/src/mod.js +9 -0
- package/dist/cjs/src/mod.js.map +1 -0
- package/dist/cjs/src/package-json.d.ts +6 -0
- package/dist/cjs/src/package-json.d.ts.map +1 -0
- package/dist/cjs/src/package-json.js +93 -0
- package/dist/cjs/src/package-json.js.map +1 -0
- package/dist/cjs/src/package-json.spec.d.ts +3 -0
- package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
- package/dist/cjs/src/package-json.spec.js +10 -0
- package/dist/cjs/src/package-json.spec.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact-self.d.ts +5 -0
- package/dist/cjs/src/puppet-mixin/contact-self.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact-self.js +45 -0
- package/dist/cjs/src/puppet-mixin/contact-self.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact.d.ts +16 -0
- package/dist/cjs/src/puppet-mixin/contact.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/contact.js +124 -0
- package/dist/cjs/src/puppet-mixin/contact.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/conversation.d.ts +2 -0
- package/dist/cjs/src/puppet-mixin/conversation.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/conversation.js +35 -0
- package/dist/cjs/src/puppet-mixin/conversation.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/friendship.d.ts +12 -0
- package/dist/cjs/src/puppet-mixin/friendship.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/friendship.js +99 -0
- package/dist/cjs/src/puppet-mixin/friendship.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/message.d.ts +57 -0
- package/dist/cjs/src/puppet-mixin/message.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/message.js +327 -0
- package/dist/cjs/src/puppet-mixin/message.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/room.d.ts +42 -0
- package/dist/cjs/src/puppet-mixin/room.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/room.js +319 -0
- package/dist/cjs/src/puppet-mixin/room.js.map +1 -0
- package/dist/cjs/src/puppet-mixin/tag.d.ts +5 -0
- package/dist/cjs/src/puppet-mixin/tag.d.ts.map +1 -0
- package/dist/cjs/src/puppet-mixin/tag.js +50 -0
- package/dist/cjs/src/puppet-mixin/tag.js.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.d.ts +145 -0
- package/dist/cjs/src/puppet-whatsapp.d.ts.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.js +309 -0
- package/dist/cjs/src/puppet-whatsapp.js.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.spec.d.ts +3 -0
- package/dist/cjs/src/puppet-whatsapp.spec.d.ts.map +1 -0
- package/dist/cjs/src/puppet-whatsapp.spec.js +25 -0
- package/dist/cjs/src/puppet-whatsapp.spec.js.map +1 -0
- package/dist/cjs/src/request/rate-manager.d.ts +21 -0
- package/dist/cjs/src/request/rate-manager.d.ts.map +1 -0
- package/dist/cjs/src/request/rate-manager.js +92 -0
- package/dist/cjs/src/request/rate-manager.js.map +1 -0
- package/dist/cjs/src/request/request-manager.d.ts +54 -0
- package/dist/cjs/src/request/request-manager.d.ts.map +1 -0
- package/dist/cjs/src/request/request-manager.js +128 -0
- package/dist/cjs/src/request/request-manager.js.map +1 -0
- package/dist/cjs/src/request/request-pool.d.ts +10 -0
- package/dist/cjs/src/request/request-pool.d.ts.map +1 -0
- package/dist/cjs/src/request/request-pool.js +47 -0
- package/dist/cjs/src/request/request-pool.js.map +1 -0
- package/dist/cjs/src/request/request-pool.spec.d.ts +2 -0
- package/dist/cjs/src/request/request-pool.spec.d.ts.map +1 -0
- package/dist/cjs/src/request/request-pool.spec.js +36 -0
- package/dist/cjs/src/request/request-pool.spec.js.map +1 -0
- package/dist/cjs/src/schema/event-name.d.ts +9 -0
- package/dist/cjs/src/schema/event-name.d.ts.map +1 -0
- package/dist/cjs/src/schema/event-name.js +13 -0
- package/dist/cjs/src/schema/event-name.js.map +1 -0
- package/dist/cjs/src/schema/index.d.ts +2 -0
- package/dist/cjs/src/schema/index.d.ts.map +1 -0
- package/dist/cjs/src/schema/index.js +18 -0
- package/dist/cjs/src/schema/index.js.map +1 -0
- package/dist/cjs/src/schema/whatsapp-interface.d.ts +18 -0
- package/dist/cjs/src/schema/whatsapp-interface.d.ts.map +1 -0
- package/dist/cjs/src/schema/whatsapp-interface.js +26 -0
- package/dist/cjs/src/schema/whatsapp-interface.js.map +1 -0
- package/dist/cjs/src/schema/whatsapp-type.d.ts +42 -0
- package/dist/cjs/src/schema/whatsapp-type.d.ts.map +1 -0
- package/dist/cjs/src/schema/whatsapp-type.js +3 -0
- package/dist/cjs/src/schema/whatsapp-type.js.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.d.ts +8 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.js +84 -0
- package/dist/cjs/src/whatsapp/event-handler/group-event-handler.js.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.d.ts +24 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.js +203 -0
- package/dist/cjs/src/whatsapp/event-handler/login-event-handler.js.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.d.ts +35 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.js +203 -0
- package/dist/cjs/src/whatsapp/event-handler/message-event-handler.js.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.d.ts +26 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.js +69 -0
- package/dist/cjs/src/whatsapp/whatsapp-base.js.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.d.ts +16 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.d.ts.map +1 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.js +134 -0
- package/dist/cjs/src/whatsapp/whatsapp-manager.js.map +1 -0
- package/dist/cjs/tests/integration.spec.d.ts +3 -0
- package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
- package/dist/cjs/tests/integration.spec.js +8 -0
- package/dist/cjs/tests/integration.spec.js.map +1 -0
- package/dist/cjs/tests/memory-card.spec.d.ts +2 -0
- package/dist/cjs/tests/memory-card.spec.d.ts.map +1 -0
- package/dist/cjs/tests/memory-card.spec.js +25 -0
- package/dist/cjs/tests/memory-card.spec.js.map +1 -0
- package/dist/cjs/tests/qrcode.spec.d.ts +2 -0
- package/dist/cjs/tests/qrcode.spec.d.ts.map +1 -0
- package/dist/cjs/tests/qrcode.spec.js +51 -0
- package/dist/cjs/tests/qrcode.spec.js.map +1 -0
- package/dist/esm/examples/ding-dong-bot.d.ts +2 -0
- package/dist/esm/examples/ding-dong-bot.d.ts.map +1 -0
- package/dist/esm/examples/ding-dong-bot.js +93 -0
- package/dist/esm/examples/ding-dong-bot.js.map +1 -0
- package/dist/esm/src/config.d.ts +41 -0
- package/dist/esm/src/config.d.ts.map +1 -0
- package/dist/esm/src/config.js +50 -0
- package/dist/esm/src/config.js.map +1 -0
- package/dist/esm/src/data/cache-manager.d.ts +83 -0
- package/dist/esm/src/data/cache-manager.d.ts.map +1 -0
- package/dist/esm/src/data/cache-manager.js +273 -0
- package/dist/esm/src/data/cache-manager.js.map +1 -0
- package/dist/esm/src/data/cache-manager.spec.d.ts +2 -0
- package/dist/esm/src/data/cache-manager.spec.d.ts.map +1 -0
- package/dist/esm/src/data/cache-manager.spec.js +30 -0
- package/dist/esm/src/data/cache-manager.spec.js.map +1 -0
- package/dist/esm/src/exception/error-type.d.ts +80 -0
- package/dist/esm/src/exception/error-type.d.ts.map +1 -0
- package/dist/esm/src/exception/error-type.js +58 -0
- package/dist/esm/src/exception/error-type.js.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.d.ts +4 -0
- package/dist/esm/src/exception/whatsapp-error.d.ts.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.js +11 -0
- package/dist/esm/src/exception/whatsapp-error.js.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.spec.d.ts +3 -0
- package/dist/esm/src/exception/whatsapp-error.spec.d.ts.map +1 -0
- package/dist/esm/src/exception/whatsapp-error.spec.js +22 -0
- package/dist/esm/src/exception/whatsapp-error.spec.js.map +1 -0
- package/dist/esm/src/helper/index.d.ts +2 -0
- package/dist/esm/src/helper/index.d.ts.map +1 -0
- package/dist/esm/src/helper/index.js +2 -0
- package/dist/esm/src/helper/index.js.map +1 -0
- package/dist/esm/src/helper/miscellaneous.d.ts +8 -0
- package/dist/esm/src/helper/miscellaneous.d.ts.map +1 -0
- package/dist/esm/src/helper/miscellaneous.js +38 -0
- package/dist/esm/src/helper/miscellaneous.js.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.js +35 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.js.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.js +61 -0
- package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/convert-function.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/convert-function.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/convert-function.js +12 -0
- package/dist/esm/src/helper/pure-function/convert-function.js.map +1 -0
- package/dist/esm/src/helper/pure-function/index.d.ts +5 -0
- package/dist/esm/src/helper/pure-function/index.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/index.js +5 -0
- package/dist/esm/src/helper/pure-function/index.js.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.js +106 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.js.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.js +227 -0
- package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.d.ts +28 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.js +53 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.js +99 -0
- package/dist/esm/src/helper/pure-function/room-event-generator.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.d.ts +4 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.js +17 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.js.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.d.ts +2 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.js +66 -0
- package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.js.map +1 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.d.ts +28 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.d.ts.map +1 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.js +102 -0
- package/dist/esm/src/helper/pure-function/vcard-parser.js.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.d.ts +19 -0
- package/dist/esm/src/helper/schedule/schedule-manager.d.ts.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.js +43 -0
- package/dist/esm/src/helper/schedule/schedule-manager.js.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.d.ts +2 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.d.ts.map +1 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.js +40 -0
- package/dist/esm/src/helper/schedule/schedule-manager.spec.js.map +1 -0
- package/dist/esm/src/manager-event.d.ts +18 -0
- package/dist/esm/src/manager-event.d.ts.map +1 -0
- package/dist/esm/src/manager-event.js +2 -0
- package/dist/esm/src/manager-event.js.map +1 -0
- package/dist/esm/src/manager.d.ts +67 -0
- package/dist/esm/src/manager.d.ts.map +1 -0
- package/dist/esm/src/manager.js +264 -0
- package/dist/esm/src/manager.js.map +1 -0
- package/dist/esm/src/manager.spec.d.ts +3 -0
- package/dist/esm/src/manager.spec.d.ts.map +1 -0
- package/dist/esm/src/manager.spec.js +33 -0
- package/dist/esm/src/manager.spec.js.map +1 -0
- package/dist/esm/src/mod.d.ts +5 -0
- package/dist/esm/src/mod.d.ts.map +1 -0
- package/dist/esm/src/mod.js +5 -0
- package/dist/esm/src/mod.js.map +1 -0
- package/dist/esm/src/package-json.d.ts +6 -0
- package/dist/esm/src/package-json.d.ts.map +1 -0
- package/dist/esm/src/package-json.js +90 -0
- package/dist/esm/src/package-json.js.map +1 -0
- package/dist/esm/src/package-json.spec.d.ts +3 -0
- package/dist/esm/src/package-json.spec.d.ts.map +1 -0
- package/dist/esm/src/package-json.spec.js +8 -0
- package/dist/esm/src/package-json.spec.js.map +1 -0
- package/dist/esm/src/puppet-mixin/contact-self.d.ts +5 -0
- package/dist/esm/src/puppet-mixin/contact-self.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/contact-self.js +16 -0
- package/dist/esm/src/puppet-mixin/contact-self.js.map +1 -0
- package/dist/esm/src/puppet-mixin/contact.d.ts +16 -0
- package/dist/esm/src/puppet-mixin/contact.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/contact.js +87 -0
- package/dist/esm/src/puppet-mixin/contact.js.map +1 -0
- package/dist/esm/src/puppet-mixin/conversation.d.ts +2 -0
- package/dist/esm/src/puppet-mixin/conversation.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/conversation.js +8 -0
- package/dist/esm/src/puppet-mixin/conversation.js.map +1 -0
- package/dist/esm/src/puppet-mixin/friendship.d.ts +12 -0
- package/dist/esm/src/puppet-mixin/friendship.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/friendship.js +63 -0
- package/dist/esm/src/puppet-mixin/friendship.js.map +1 -0
- package/dist/esm/src/puppet-mixin/message.d.ts +57 -0
- package/dist/esm/src/puppet-mixin/message.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/message.js +282 -0
- package/dist/esm/src/puppet-mixin/message.js.map +1 -0
- package/dist/esm/src/puppet-mixin/room.d.ts +42 -0
- package/dist/esm/src/puppet-mixin/room.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/room.js +273 -0
- package/dist/esm/src/puppet-mixin/room.js.map +1 -0
- package/dist/esm/src/puppet-mixin/tag.d.ts +5 -0
- package/dist/esm/src/puppet-mixin/tag.d.ts.map +1 -0
- package/dist/esm/src/puppet-mixin/tag.js +20 -0
- package/dist/esm/src/puppet-mixin/tag.js.map +1 -0
- package/dist/esm/src/puppet-whatsapp.d.ts +145 -0
- package/dist/esm/src/puppet-whatsapp.d.ts.map +1 -0
- package/dist/esm/src/puppet-whatsapp.js +280 -0
- package/dist/esm/src/puppet-whatsapp.js.map +1 -0
- package/dist/esm/src/puppet-whatsapp.spec.d.ts +3 -0
- package/dist/esm/src/puppet-whatsapp.spec.d.ts.map +1 -0
- package/dist/esm/src/puppet-whatsapp.spec.js +23 -0
- package/dist/esm/src/puppet-whatsapp.spec.js.map +1 -0
- package/dist/esm/src/request/rate-manager.d.ts +21 -0
- package/dist/esm/src/request/rate-manager.d.ts.map +1 -0
- package/dist/esm/src/request/rate-manager.js +85 -0
- package/dist/esm/src/request/rate-manager.js.map +1 -0
- package/dist/esm/src/request/request-manager.d.ts +54 -0
- package/dist/esm/src/request/request-manager.d.ts.map +1 -0
- package/dist/esm/src/request/request-manager.js +124 -0
- package/dist/esm/src/request/request-manager.js.map +1 -0
- package/dist/esm/src/request/request-pool.d.ts +10 -0
- package/dist/esm/src/request/request-pool.d.ts.map +1 -0
- package/dist/esm/src/request/request-pool.js +40 -0
- package/dist/esm/src/request/request-pool.js.map +1 -0
- package/dist/esm/src/request/request-pool.spec.d.ts +2 -0
- package/dist/esm/src/request/request-pool.spec.d.ts.map +1 -0
- package/dist/esm/src/request/request-pool.spec.js +34 -0
- package/dist/esm/src/request/request-pool.spec.js.map +1 -0
- package/dist/esm/src/schema/event-name.d.ts +9 -0
- package/dist/esm/src/schema/event-name.d.ts.map +1 -0
- package/dist/esm/src/schema/event-name.js +10 -0
- package/dist/esm/src/schema/event-name.js.map +1 -0
- package/dist/esm/src/schema/index.d.ts +2 -0
- package/dist/esm/src/schema/index.d.ts.map +1 -0
- package/dist/esm/src/schema/index.js +2 -0
- package/dist/esm/src/schema/index.js.map +1 -0
- package/dist/esm/src/schema/whatsapp-interface.d.ts +18 -0
- package/dist/esm/src/schema/whatsapp-interface.d.ts.map +1 -0
- package/dist/esm/src/schema/whatsapp-interface.js +20 -0
- package/dist/esm/src/schema/whatsapp-interface.js.map +1 -0
- package/dist/esm/src/schema/whatsapp-type.d.ts +42 -0
- package/dist/esm/src/schema/whatsapp-type.d.ts.map +1 -0
- package/dist/esm/src/schema/whatsapp-type.js +2 -0
- package/dist/esm/src/schema/whatsapp-type.js.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.d.ts +8 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.js +78 -0
- package/dist/esm/src/whatsapp/event-handler/group-event-handler.js.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.d.ts +24 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.js +174 -0
- package/dist/esm/src/whatsapp/event-handler/login-event-handler.js.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.d.ts +35 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.js +197 -0
- package/dist/esm/src/whatsapp/event-handler/message-event-handler.js.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-base.d.ts +26 -0
- package/dist/esm/src/whatsapp/whatsapp-base.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-base.js +63 -0
- package/dist/esm/src/whatsapp/whatsapp-base.js.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.d.ts +16 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.d.ts.map +1 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.js +128 -0
- package/dist/esm/src/whatsapp/whatsapp-manager.js.map +1 -0
- package/dist/esm/tests/integration.spec.d.ts +3 -0
- package/dist/esm/tests/integration.spec.d.ts.map +1 -0
- package/dist/esm/tests/integration.spec.js +6 -0
- package/dist/esm/tests/integration.spec.js.map +1 -0
- package/dist/esm/tests/memory-card.spec.d.ts +2 -0
- package/dist/esm/tests/memory-card.spec.d.ts.map +1 -0
- package/dist/esm/tests/memory-card.spec.js +23 -0
- package/dist/esm/tests/memory-card.spec.js.map +1 -0
- package/dist/esm/tests/qrcode.spec.d.ts +2 -0
- package/dist/esm/tests/qrcode.spec.d.ts.map +1 -0
- package/dist/esm/tests/qrcode.spec.js +26 -0
- package/dist/esm/tests/qrcode.spec.js.map +1 -0
- package/package.json +89 -0
- package/src/config.ts +70 -0
- package/src/data/cache-manager.spec.ts +33 -0
- package/src/data/cache-manager.ts +331 -0
- package/src/exception/error-type.ts +59 -0
- package/src/exception/whatsapp-error.spec.ts +26 -0
- package/src/exception/whatsapp-error.ts +15 -0
- package/src/helper/index.ts +3 -0
- package/src/helper/miscellaneous.ts +45 -0
- package/src/helper/pure-function/contact-raw-payload-parser.spec.ts +67 -0
- package/src/helper/pure-function/contact-raw-payload-parser.ts +36 -0
- package/src/helper/pure-function/convert-function.ts +24 -0
- package/src/helper/pure-function/index.ts +4 -0
- package/src/helper/pure-function/message-raw-payload-parser.spec.ts +243 -0
- package/src/helper/pure-function/message-raw-payload-parser.ts +117 -0
- package/src/helper/pure-function/room-event-generator.spec.ts +120 -0
- package/src/helper/pure-function/room-event-generator.ts +63 -0
- package/src/helper/pure-function/room-raw-payload-parser.spec.ts +70 -0
- package/src/helper/pure-function/room-raw-payload-parser.ts +19 -0
- package/src/helper/pure-function/vcard-parser.ts +128 -0
- package/src/helper/schedule/schedule-manager.spec.ts +46 -0
- package/src/helper/schedule/schedule-manager.ts +52 -0
- package/src/manager-event.ts +18 -0
- package/src/manager.spec.ts +40 -0
- package/src/manager.ts +297 -0
- package/src/mod.ts +8 -0
- package/src/package-json.spec.ts +10 -0
- package/src/package-json.ts +93 -0
- package/src/puppet-mixin/contact-self.ts +20 -0
- package/src/puppet-mixin/contact.ts +107 -0
- package/src/puppet-mixin/conversation.ts +12 -0
- package/src/puppet-mixin/friendship.ts +88 -0
- package/src/puppet-mixin/message.ts +311 -0
- package/src/puppet-mixin/room.ts +334 -0
- package/src/puppet-mixin/tag.ts +34 -0
- package/src/puppet-whatsapp.spec.ts +30 -0
- package/src/puppet-whatsapp.ts +339 -0
- package/src/request/rate-manager.ts +118 -0
- package/src/request/request-manager.ts +174 -0
- package/src/request/request-pool.spec.ts +36 -0
- package/src/request/request-pool.ts +45 -0
- package/src/schema/event-name.ts +8 -0
- package/src/schema/fix-type.d.ts +63 -0
- package/src/schema/index.ts +1 -0
- package/src/schema/whatsapp-interface.ts +31 -0
- package/src/schema/whatsapp-type.ts +79 -0
- package/src/typings.d.ts +0 -0
- package/src/whatsapp/event-handler/group-event-handler.ts +95 -0
- package/src/whatsapp/event-handler/login-event-handler.ts +210 -0
- package/src/whatsapp/event-handler/message-event-handler.ts +230 -0
- package/src/whatsapp/whatsapp-base.ts +78 -0
- package/src/whatsapp/whatsapp-manager.ts +160 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { SetOptional } from 'type-fest'
|
|
2
|
+
import type { Contact, MessageMedia, Client as _Client } from '@juzi/whatsapp-web.js'
|
|
3
|
+
declare module '@juzi/whatsapp-web.js' {
|
|
4
|
+
declare namespace WAWebJS {
|
|
5
|
+
export type CreateGroupResult = {
|
|
6
|
+
gid: {
|
|
7
|
+
server: string
|
|
8
|
+
user: string
|
|
9
|
+
_serialized: string
|
|
10
|
+
}
|
|
11
|
+
missingParticipants: Record<string, string>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export enum GroupNotificationTypes {
|
|
15
|
+
ADD = 'add',
|
|
16
|
+
INVITE = 'invite',
|
|
17
|
+
REMOVE = 'remove',
|
|
18
|
+
LEAVE = 'leave',
|
|
19
|
+
SUBJECT = 'subject',
|
|
20
|
+
DESCRIPTION = 'description',
|
|
21
|
+
PICTURE = 'picture',
|
|
22
|
+
ANNOUNCE = 'announce',
|
|
23
|
+
RESTRICT = 'restrict',
|
|
24
|
+
CREATE = 'create',
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Message type buttons */
|
|
28
|
+
export class Buttons {
|
|
29
|
+
|
|
30
|
+
body: string | MessageMedia
|
|
31
|
+
buttons: Array<{ body: string}>
|
|
32
|
+
title?: string | null
|
|
33
|
+
footer?: string | null
|
|
34
|
+
|
|
35
|
+
constructor(body: string, buttons: Array<{ body: string}>, title?: string | null, footer?: string | null)
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
export interface Row {
|
|
39
|
+
|
|
40
|
+
title: string
|
|
41
|
+
description?: string
|
|
42
|
+
}
|
|
43
|
+
export interface Section {
|
|
44
|
+
|
|
45
|
+
title: string
|
|
46
|
+
rows: Row []
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Message type List */
|
|
50
|
+
export class List {
|
|
51
|
+
|
|
52
|
+
body: string
|
|
53
|
+
buttonText: string
|
|
54
|
+
sections: Row []
|
|
55
|
+
title?: string | null
|
|
56
|
+
footer?: string | null
|
|
57
|
+
constructor(body: string, buttonText: string, sections: Array<any>, title?: string | null, footer?: string | null)
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
export = WAWebJS
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './event-name.js'
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import WAWebJS from '@juzi/whatsapp-web.js'
|
|
2
|
+
import type { Class } from 'type-fest'
|
|
3
|
+
|
|
4
|
+
export enum GroupNotificationTypes {
|
|
5
|
+
ADD = 'add',
|
|
6
|
+
INVITE = 'invite',
|
|
7
|
+
REMOVE = 'remove',
|
|
8
|
+
LEAVE = 'leave',
|
|
9
|
+
SUBJECT = 'subject',
|
|
10
|
+
DESCRIPTION = 'description',
|
|
11
|
+
PICTURE = 'picture',
|
|
12
|
+
ANNOUNCE = 'announce',
|
|
13
|
+
RESTRICT = 'restrict',
|
|
14
|
+
CREATE = 'create',
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
export const ContactClass = WAWebJS.Contact as Class<WAWebJS.Contact>
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
export const MessageClass = WAWebJS.Message as Class<WAWebJS.Message>
|
|
21
|
+
|
|
22
|
+
export const {
|
|
23
|
+
LocalAuth,
|
|
24
|
+
DefaultOptions,
|
|
25
|
+
MessageMedia,
|
|
26
|
+
MessageAck,
|
|
27
|
+
MessageTypes,
|
|
28
|
+
WAState,
|
|
29
|
+
WhatsWebURL,
|
|
30
|
+
Client,
|
|
31
|
+
} = WAWebJS
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { Location } from '@juzi/whatsapp-web.js'
|
|
2
|
+
import type WhatsApp from '@juzi/whatsapp-web.js'
|
|
3
|
+
import type { SetOptional } from 'type-fest'
|
|
4
|
+
|
|
5
|
+
export type {
|
|
6
|
+
Client as WhatsAppClientType,
|
|
7
|
+
ClientInfo,
|
|
8
|
+
ClientInfoPhone,
|
|
9
|
+
ClientOptions,
|
|
10
|
+
ClientSession,
|
|
11
|
+
BatteryInfo,
|
|
12
|
+
CreateGroupResult,
|
|
13
|
+
// GroupNotification,
|
|
14
|
+
ChatTypes,
|
|
15
|
+
Events,
|
|
16
|
+
MessageAck as MessageAckType,
|
|
17
|
+
Status,
|
|
18
|
+
WAState as WAStateType,
|
|
19
|
+
MessageInfo,
|
|
20
|
+
InviteV4Data,
|
|
21
|
+
Message as WhatsAppMessage,
|
|
22
|
+
// MessageId,
|
|
23
|
+
Location,
|
|
24
|
+
Label,
|
|
25
|
+
MessageSendOptions,
|
|
26
|
+
MediaFromURLOptions,
|
|
27
|
+
// MessageMedia,
|
|
28
|
+
MessageContent,
|
|
29
|
+
Contact as WhatsAppContact,
|
|
30
|
+
ContactId,
|
|
31
|
+
BusinessContact,
|
|
32
|
+
PrivateContact,
|
|
33
|
+
Chat,
|
|
34
|
+
MessageSearchOptions,
|
|
35
|
+
ChatId,
|
|
36
|
+
PrivateChat,
|
|
37
|
+
GroupParticipant,
|
|
38
|
+
ChangeParticipantsPermissions,
|
|
39
|
+
ChangeGroupParticipants,
|
|
40
|
+
// GroupChat,
|
|
41
|
+
ProductMetadata,
|
|
42
|
+
Product,
|
|
43
|
+
Order,
|
|
44
|
+
Payment,
|
|
45
|
+
Call,
|
|
46
|
+
Buttons,
|
|
47
|
+
Row,
|
|
48
|
+
List,
|
|
49
|
+
} from '@juzi/whatsapp-web.js'
|
|
50
|
+
|
|
51
|
+
export interface MessageId {
|
|
52
|
+
fromMe: boolean,
|
|
53
|
+
remote: string | {
|
|
54
|
+
server: string
|
|
55
|
+
user: string
|
|
56
|
+
_serialized: string,
|
|
57
|
+
},
|
|
58
|
+
id: string,
|
|
59
|
+
_serialized: string,
|
|
60
|
+
}
|
|
61
|
+
export type WhatsAppContactPayload = {
|
|
62
|
+
avatar: string
|
|
63
|
+
} & Omit<WhatsApp.Contact, 'getProfilePicUrl' | 'getChat' | 'getCountryCode' | 'getFormattedNumber' | 'block' | 'unblock' | 'getAbout'>
|
|
64
|
+
export type WhatsAppMessagePayload = {mentionedIds: string[], location?:Location, orderId?: string, id: MessageId} & Omit<WhatsApp.Message, 'id' | 'orderId' | 'location' | 'mentionedIds' | 'acceptGroupV4Invite' | 'delete' | 'downloadMedia' | 'getChat' | 'getContact' | 'getMentions' | 'getQuotedMessage' | 'reply' | 'forward' | 'star' | 'unstar' | 'getInfo' | 'getOrder' | 'getPayment' | 'duration' | 'rawData' | 'reload'>
|
|
65
|
+
export interface GroupMetadata {
|
|
66
|
+
desc: string
|
|
67
|
+
owner: WhatsApp.ContactId
|
|
68
|
+
participants: WhatsApp.GroupParticipant[]
|
|
69
|
+
}
|
|
70
|
+
export type GroupChat = {groupMetadata:GroupMetadata} & SetOptional<WhatsApp.GroupChat, 'owner'>
|
|
71
|
+
export interface GroupNotificationId {
|
|
72
|
+
fromMe: boolean,
|
|
73
|
+
remote: string,
|
|
74
|
+
id: string,
|
|
75
|
+
participant?: string,
|
|
76
|
+
_serialized: string,
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export type GroupNotification = {id: GroupNotificationId} & Omit<WhatsApp.GroupNotification, 'id'>
|
package/src/typings.d.ts
ADDED
|
File without changes
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* eslint-disable no-case-declarations */
|
|
2
|
+
import {
|
|
3
|
+
GroupNotificationTypes,
|
|
4
|
+
} from '../../schema/whatsapp-interface.js'
|
|
5
|
+
import WhatsAppBase from '../whatsapp-base.js'
|
|
6
|
+
|
|
7
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
8
|
+
import type {
|
|
9
|
+
GroupNotification,
|
|
10
|
+
} from '../../schema/whatsapp-type.js'
|
|
11
|
+
import { log } from '../../config.js'
|
|
12
|
+
import {
|
|
13
|
+
genRoomTopicEvent,
|
|
14
|
+
genRoomAnnounce,
|
|
15
|
+
genRoomJoinEvent,
|
|
16
|
+
} from '../../helper/pure-function/room-event-generator.js'
|
|
17
|
+
|
|
18
|
+
const PRE = 'GroupEventHandler'
|
|
19
|
+
|
|
20
|
+
export default class GroupEventHandler extends WhatsAppBase {
|
|
21
|
+
|
|
22
|
+
public async onRoomJoin (notification: GroupNotification) {
|
|
23
|
+
log.info(PRE, `onRoomJoin(${JSON.stringify(notification)})`)
|
|
24
|
+
const roomId = notification.id.remote
|
|
25
|
+
const roomJoinPayload: PUPPET.payloads.EventRoomJoin = {
|
|
26
|
+
inviteeIdList: notification.recipientIds,
|
|
27
|
+
inviterId: notification.author,
|
|
28
|
+
roomId,
|
|
29
|
+
timestamp: notification.timestamp,
|
|
30
|
+
}
|
|
31
|
+
await this.manager.syncRoomMemberList(roomId)
|
|
32
|
+
this.emit('room-join', roomJoinPayload)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public async onRoomLeave (notification: GroupNotification) {
|
|
36
|
+
log.info(PRE, `onRoomLeave(${JSON.stringify(notification)})`)
|
|
37
|
+
const { id, recipientIds } = notification
|
|
38
|
+
const roomId = id.remote
|
|
39
|
+
const isLeaveSelf = id.fromMe && recipientIds.length === 1 && recipientIds[0] === this.getBotId()
|
|
40
|
+
const roomLeavePayload: PUPPET.payloads.EventRoomLeave = {
|
|
41
|
+
removeeIdList: notification.recipientIds,
|
|
42
|
+
removerId: notification.author || isLeaveSelf ? this.getBotId() : '',
|
|
43
|
+
roomId,
|
|
44
|
+
timestamp: notification.timestamp,
|
|
45
|
+
}
|
|
46
|
+
const cacheManager = await this.manager.getCacheManager()
|
|
47
|
+
await cacheManager.removeRoomMemberFromList(roomId, notification.recipientIds)
|
|
48
|
+
this.emit('room-leave', roomLeavePayload)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public async onRoomUpdate (notification: GroupNotification) {
|
|
52
|
+
log.info(PRE, `onRoomUpdate(${JSON.stringify(notification)})`)
|
|
53
|
+
const roomId = notification.id.remote
|
|
54
|
+
const cacheManager = await this.manager.getCacheManager()
|
|
55
|
+
let roomPayload = await cacheManager.getContactOrRoomRawPayload(roomId)
|
|
56
|
+
|
|
57
|
+
if (!roomPayload) {
|
|
58
|
+
const rawRoom = await this.manager.requestManager.getContactById(roomId)
|
|
59
|
+
const avatar = await rawRoom.getProfilePicUrl()
|
|
60
|
+
roomPayload = Object.assign(rawRoom, { avatar })
|
|
61
|
+
await cacheManager.setContactOrRoomRawPayload(roomId, roomPayload)
|
|
62
|
+
}
|
|
63
|
+
const type = notification.type
|
|
64
|
+
switch (type) {
|
|
65
|
+
case GroupNotificationTypes.SUBJECT:
|
|
66
|
+
const roomTopicPayload = genRoomTopicEvent(notification, roomPayload)
|
|
67
|
+
roomPayload.name = notification.body
|
|
68
|
+
await cacheManager.setContactOrRoomRawPayload(roomId, roomPayload)
|
|
69
|
+
this.emit('room-topic', roomTopicPayload)
|
|
70
|
+
break
|
|
71
|
+
case GroupNotificationTypes.DESCRIPTION:
|
|
72
|
+
const roomChat = await this.manager.getRoomChatById(roomId)
|
|
73
|
+
const roomMetadata = roomChat.groupMetadata
|
|
74
|
+
const description = roomMetadata.desc
|
|
75
|
+
const msgPayload = genRoomAnnounce(notification, description)
|
|
76
|
+
await this.manager.processMessage(msgPayload as any) // FIXME: how to use method of another class which extends from the same base class.
|
|
77
|
+
break
|
|
78
|
+
case GroupNotificationTypes.CREATE:
|
|
79
|
+
const members = await this.manager.syncRoomMemberList(roomId)
|
|
80
|
+
const roomJoinPayload = genRoomJoinEvent(notification, members)
|
|
81
|
+
this.emit('room-join', roomJoinPayload)
|
|
82
|
+
break
|
|
83
|
+
case GroupNotificationTypes.PICTURE:
|
|
84
|
+
const rawRoom = await this.manager.requestManager.getContactById(roomId)
|
|
85
|
+
const avatar = await rawRoom.getProfilePicUrl() || ''
|
|
86
|
+
const roomPayloadInCache = await cacheManager.getContactOrRoomRawPayload(roomId)
|
|
87
|
+
if (roomPayloadInCache) {
|
|
88
|
+
roomPayloadInCache.avatar = avatar
|
|
89
|
+
await cacheManager.setContactOrRoomRawPayload(roomId, roomPayloadInCache)
|
|
90
|
+
}
|
|
91
|
+
break
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/* eslint-disable no-case-declarations */
|
|
2
|
+
import * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
+
import {
|
|
4
|
+
MIN_BATTERY_VALUE_FOR_LOGOUT,
|
|
5
|
+
DEFAULT_TIMEOUT,
|
|
6
|
+
log,
|
|
7
|
+
STRINGS,
|
|
8
|
+
LANGUAGE,
|
|
9
|
+
} from '../../config.js'
|
|
10
|
+
import { WA_ERROR_TYPE } from '../../exception/error-type.js'
|
|
11
|
+
import WAError from '../../exception/whatsapp-error.js'
|
|
12
|
+
import {
|
|
13
|
+
WAState,
|
|
14
|
+
} from '../../schema/whatsapp-interface.js'
|
|
15
|
+
import WhatsAppBase from '../whatsapp-base.js'
|
|
16
|
+
|
|
17
|
+
import type {
|
|
18
|
+
WhatsAppContact,
|
|
19
|
+
BatteryInfo,
|
|
20
|
+
WAStateType,
|
|
21
|
+
} from '../../schema/whatsapp-type.js'
|
|
22
|
+
import {
|
|
23
|
+
batchProcess,
|
|
24
|
+
isContactId,
|
|
25
|
+
isRoomId,
|
|
26
|
+
} from '../../helper/miscellaneous.js'
|
|
27
|
+
|
|
28
|
+
const PRE = 'LoginEventHandler'
|
|
29
|
+
|
|
30
|
+
export default class LoginEventHandler extends WhatsAppBase { // FIXME: I have no good idea for this class name.
|
|
31
|
+
|
|
32
|
+
protected loadingData: boolean = false
|
|
33
|
+
private qrcodeOrLoginCheckTimer?: NodeJS.Timer
|
|
34
|
+
private hasLogin: boolean = false
|
|
35
|
+
private lastQRCodeTime = Date.now()
|
|
36
|
+
|
|
37
|
+
public onQRCode (qrcode: string) {
|
|
38
|
+
log.info(PRE, `onQRCode(${qrcode})`)
|
|
39
|
+
// NOTE: This event will not be fired if a session is specified.
|
|
40
|
+
this.lastQRCodeTime = Date.now()
|
|
41
|
+
this.hasLogin = false
|
|
42
|
+
this.emit('scan', { qrcode, status: PUPPET.types.ScanStatus.Waiting })
|
|
43
|
+
this.checkQRCodeOrLoginEvent()
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private checkQRCodeOrLoginEvent () {
|
|
47
|
+
if (this.qrcodeOrLoginCheckTimer) {
|
|
48
|
+
return
|
|
49
|
+
}
|
|
50
|
+
this.qrcodeOrLoginCheckTimer = setInterval(() => {
|
|
51
|
+
if (!this.hasLogin && Date.now() > this.lastQRCodeTime + 2 * 60 * 1000) {
|
|
52
|
+
this.emit('error', 'can not get scan or login event more than 2 mins')
|
|
53
|
+
}
|
|
54
|
+
}, 25 * 1000)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public clearQrcodeOrLoginCheckTimer () {
|
|
58
|
+
if (!this.qrcodeOrLoginCheckTimer) {
|
|
59
|
+
return
|
|
60
|
+
}
|
|
61
|
+
clearInterval(this.qrcodeOrLoginCheckTimer)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public async onAuthenticated () {
|
|
65
|
+
log.info(PRE, 'onAuthenticated()')
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public async onAuthFailure (message: string) {
|
|
69
|
+
log.warn(PRE, 'auth_failure: %s', message)
|
|
70
|
+
// avoid reuse invalid session data
|
|
71
|
+
await this.clearSession()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public async onWhatsAppReady () {
|
|
75
|
+
log.verbose(PRE, 'onWhatsAppReady()')
|
|
76
|
+
this.hasLogin = true
|
|
77
|
+
this.clearQrcodeOrLoginCheckTimer()
|
|
78
|
+
const contactOrRoomList = await this.manager.syncContactOrRoomList()
|
|
79
|
+
await this.onLogin(contactOrRoomList)
|
|
80
|
+
await this.onReady(contactOrRoomList)
|
|
81
|
+
this.manager.startSchedule()
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
public async onLogin (contactOrRoomList: WhatsAppContact[]) {
|
|
85
|
+
log.verbose(PRE, 'onLogin()')
|
|
86
|
+
const whatsapp = this.getWhatsAppClient()
|
|
87
|
+
try {
|
|
88
|
+
this.botId = whatsapp.info.wid._serialized
|
|
89
|
+
} catch (error) {
|
|
90
|
+
throw WAError(WA_ERROR_TYPE.ERR_INIT, `Can not get bot id from WhatsApp client, current state: ${await whatsapp.getState()}`, JSON.stringify(error))
|
|
91
|
+
}
|
|
92
|
+
log.info(PRE, `WhatsApp Client Info: ${JSON.stringify(whatsapp.info)}`)
|
|
93
|
+
|
|
94
|
+
await this.manager.initCache(this.botId)
|
|
95
|
+
const cacheManager = await this.manager.getCacheManager()
|
|
96
|
+
|
|
97
|
+
const botSelf = await this.manager.requestManager.getContactById(this.botId)
|
|
98
|
+
await cacheManager.setContactOrRoomRawPayload(this.botId, {
|
|
99
|
+
...botSelf,
|
|
100
|
+
avatar: await this.manager.requestManager.getAvatarUrl(this.botId),
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
const batchSize = 500
|
|
104
|
+
await batchProcess(batchSize, contactOrRoomList, async (contactOrRoom: WhatsAppContact) => {
|
|
105
|
+
const contactOrRoomId = contactOrRoom.id._serialized
|
|
106
|
+
const contactInCache = await cacheManager.getContactOrRoomRawPayload(contactOrRoomId)
|
|
107
|
+
if (contactInCache) {
|
|
108
|
+
return
|
|
109
|
+
}
|
|
110
|
+
const contactWithAvatar = Object.assign(contactOrRoom, { avatar: '' })
|
|
111
|
+
await cacheManager.setContactOrRoomRawPayload(contactOrRoomId, contactWithAvatar)
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
this.emit('login', this.botId)
|
|
115
|
+
log.info(PRE, `onLogin(${this.botId}})`)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
public async onReady (contactOrRoomList: WhatsAppContact[]) {
|
|
119
|
+
log.verbose(PRE, 'onReady()')
|
|
120
|
+
if (this.loadingData) {
|
|
121
|
+
log.verbose(PRE, 'onReady() loading data are under process.')
|
|
122
|
+
return
|
|
123
|
+
}
|
|
124
|
+
this.loadingData = true
|
|
125
|
+
let friendCount = 0
|
|
126
|
+
let contactCount = 0
|
|
127
|
+
let roomCount = 0
|
|
128
|
+
|
|
129
|
+
const cacheManager = await this.manager.getCacheManager()
|
|
130
|
+
const batchSize = 100
|
|
131
|
+
await batchProcess(batchSize, contactOrRoomList, async (contactOrRoom: WhatsAppContact) => {
|
|
132
|
+
const contactOrRoomId = contactOrRoom.id._serialized
|
|
133
|
+
const avatar = await contactOrRoom.getProfilePicUrl()
|
|
134
|
+
const contactWithAvatar = Object.assign(contactOrRoom, { avatar })
|
|
135
|
+
if (isContactId(contactOrRoomId)) {
|
|
136
|
+
contactCount++
|
|
137
|
+
if (contactOrRoom.isMyContact) {
|
|
138
|
+
friendCount++
|
|
139
|
+
}
|
|
140
|
+
await cacheManager.setContactOrRoomRawPayload(contactOrRoomId, contactWithAvatar)
|
|
141
|
+
} else if (isRoomId(contactOrRoomId)) {
|
|
142
|
+
const memberList = await this.manager.syncRoomMemberList(contactOrRoomId)
|
|
143
|
+
if (memberList.length > 0) {
|
|
144
|
+
roomCount++
|
|
145
|
+
await cacheManager.setContactOrRoomRawPayload(contactOrRoomId, contactWithAvatar)
|
|
146
|
+
} else {
|
|
147
|
+
await cacheManager.deleteContactOrRoom(contactOrRoomId)
|
|
148
|
+
await cacheManager.deleteRoomMemberIdList(contactOrRoomId)
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
log.warn(PRE, `Unknown contact type: ${JSON.stringify(contactOrRoom)}`)
|
|
152
|
+
}
|
|
153
|
+
await this.manager.processHistoryMessages(contactOrRoom)
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
log.info(PRE, `onReady() all contacts and rooms are ready, friendCount: ${friendCount} contactCount: ${contactCount} roomCount: ${roomCount}`)
|
|
157
|
+
this.emit('ready')
|
|
158
|
+
this.loadingData = false
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
public async onLogout (reason: string = STRINGS[LANGUAGE].LOGOUT_REASON.DEFAULT) {
|
|
162
|
+
log.verbose(PRE, `onLogout(${reason})`)
|
|
163
|
+
await this.clearSession()
|
|
164
|
+
this.hasLogin = false
|
|
165
|
+
this.manager.stopSchedule()
|
|
166
|
+
this.emit('logout', this.getBotId(), reason as string)
|
|
167
|
+
this.baseStop()
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
public async onChangeState (state: WAStateType) {
|
|
171
|
+
log.info(PRE, `onChangeState(${JSON.stringify(state)})`)
|
|
172
|
+
if (!this.botId) {
|
|
173
|
+
throw WAError(WA_ERROR_TYPE.ERR_INIT, 'No login bot id.')
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
switch (state) {
|
|
177
|
+
case WAState.TIMEOUT:
|
|
178
|
+
this.pendingLogoutEmitTimer = setTimeout(() => {
|
|
179
|
+
this.emit('logout', this.getBotId(), STRINGS[LANGUAGE].LOGOUT_REASON.NETWORK_TIMEOUT_IN_PHONE)
|
|
180
|
+
this.pendingLogoutEmitTimer = undefined
|
|
181
|
+
}, DEFAULT_TIMEOUT.TIMEOUT_WAIT_CONNECTED)
|
|
182
|
+
break
|
|
183
|
+
case WAState.CONNECTED:
|
|
184
|
+
this.clearPendingLogoutEmitTimer()
|
|
185
|
+
this.emit('login', this.botId)
|
|
186
|
+
this.loadingData = false
|
|
187
|
+
const contactOrRoomList = await this.manager.syncContactOrRoomList()
|
|
188
|
+
await this.onReady(contactOrRoomList)
|
|
189
|
+
break
|
|
190
|
+
default:
|
|
191
|
+
break
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* unsupported events
|
|
197
|
+
* leave logs to for further dev
|
|
198
|
+
*/
|
|
199
|
+
public async onChangeBattery (batteryInfo: BatteryInfo) {
|
|
200
|
+
log.verbose(PRE, `onChangeBattery(${JSON.stringify(batteryInfo)})`)
|
|
201
|
+
if (!this.botId) {
|
|
202
|
+
throw WAError(WA_ERROR_TYPE.ERR_INIT, 'No login bot id.')
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (batteryInfo.battery <= MIN_BATTERY_VALUE_FOR_LOGOUT && !batteryInfo.plugged) {
|
|
206
|
+
this.emit('logout', this.botId, STRINGS[LANGUAGE].LOGOUT_REASON.BATTERY_LOWER_IN_PHONE)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
}
|