@juzi/wechaty 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 +202 -0
- package/README.md +565 -0
- package/bin/clean-json.js +15 -0
- package/bin/cli.ts +36 -0
- package/bin/doctor.ts +55 -0
- package/bin/entrypoint.sh +338 -0
- package/bin/io-client.ts +95 -0
- package/bin/providers-trends.ts +13 -0
- package/bin/puppet-install.ts +69 -0
- package/bin/version.ts +24 -0
- package/dist/cjs/bin/cli.d.ts +14 -0
- package/dist/cjs/bin/cli.d.ts.map +1 -0
- package/dist/cjs/bin/cli.js +50 -0
- package/dist/cjs/bin/cli.js.map +1 -0
- package/dist/cjs/bin/doctor.d.ts +22 -0
- package/dist/cjs/bin/doctor.d.ts.map +1 -0
- package/dist/cjs/bin/doctor.js +55 -0
- package/dist/cjs/bin/doctor.js.map +1 -0
- package/dist/cjs/bin/io-client.d.ts +22 -0
- package/dist/cjs/bin/io-client.d.ts.map +1 -0
- package/dist/cjs/bin/io-client.js +74 -0
- package/dist/cjs/bin/io-client.js.map +1 -0
- package/dist/cjs/bin/providers-trends.d.ts +3 -0
- package/dist/cjs/bin/providers-trends.d.ts.map +1 -0
- package/dist/cjs/bin/providers-trends.js +14 -0
- package/dist/cjs/bin/providers-trends.js.map +1 -0
- package/dist/cjs/bin/puppet-install.d.ts +3 -0
- package/dist/cjs/bin/puppet-install.d.ts.map +1 -0
- package/dist/cjs/bin/puppet-install.js +60 -0
- package/dist/cjs/bin/puppet-install.js.map +1 -0
- package/dist/cjs/bin/version.d.ts +22 -0
- package/dist/cjs/bin/version.d.ts.map +1 -0
- package/dist/cjs/bin/version.js +25 -0
- package/dist/cjs/bin/version.js.map +1 -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 +183 -0
- package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
- package/dist/cjs/examples/video-post.d.ts +2 -0
- package/dist/cjs/examples/video-post.d.ts.map +1 -0
- package/dist/cjs/examples/video-post.js +75 -0
- package/dist/cjs/examples/video-post.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/scripts/retry-unit-tests.d.ts +3 -0
- package/dist/cjs/scripts/retry-unit-tests.d.ts.map +1 -0
- package/dist/cjs/scripts/retry-unit-tests.js +58 -0
- package/dist/cjs/scripts/retry-unit-tests.js.map +1 -0
- package/dist/cjs/scripts/sort-contributiveness.d.ts +3 -0
- package/dist/cjs/scripts/sort-contributiveness.d.ts.map +1 -0
- package/dist/cjs/scripts/sort-contributiveness.js +122 -0
- package/dist/cjs/scripts/sort-contributiveness.js.map +1 -0
- package/dist/cjs/scripts/update-license.d.ts +3 -0
- package/dist/cjs/scripts/update-license.d.ts.map +1 -0
- package/dist/cjs/scripts/update-license.js +163 -0
- package/dist/cjs/scripts/update-license.js.map +1 -0
- package/dist/cjs/src/cli/friday.d.ts +7 -0
- package/dist/cjs/src/cli/friday.d.ts.map +1 -0
- package/dist/cjs/src/cli/friday.js +18 -0
- package/dist/cjs/src/cli/friday.js.map +1 -0
- package/dist/cjs/src/cli/gateway.d.ts +17 -0
- package/dist/cjs/src/cli/gateway.d.ts.map +1 -0
- package/dist/cjs/src/cli/gateway.js +154 -0
- package/dist/cjs/src/cli/gateway.js.map +1 -0
- package/dist/cjs/src/cli/mod.d.ts +6 -0
- package/dist/cjs/src/cli/mod.d.ts.map +1 -0
- package/dist/cjs/src/cli/mod.js +14 -0
- package/dist/cjs/src/cli/mod.js.map +1 -0
- package/dist/cjs/src/cli/provider.d.ts +7 -0
- package/dist/cjs/src/cli/provider.d.ts.map +1 -0
- package/dist/cjs/src/cli/provider.js +18 -0
- package/dist/cjs/src/cli/provider.js.map +1 -0
- package/dist/cjs/src/cli/service.d.ts +7 -0
- package/dist/cjs/src/cli/service.d.ts.map +1 -0
- package/dist/cjs/src/cli/service.js +18 -0
- package/dist/cjs/src/cli/service.js.map +1 -0
- package/dist/cjs/src/cli/token.d.ts +39 -0
- package/dist/cjs/src/cli/token.d.ts.map +1 -0
- package/dist/cjs/src/cli/token.js +15 -0
- package/dist/cjs/src/cli/token.js.map +1 -0
- package/dist/cjs/src/config.d.ts +61 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +110 -0
- package/dist/cjs/src/config.js.map +1 -0
- package/dist/cjs/src/config.spec.d.ts +22 -0
- package/dist/cjs/src/config.spec.d.ts.map +1 -0
- package/dist/cjs/src/config.spec.js +84 -0
- package/dist/cjs/src/config.spec.js.map +1 -0
- package/dist/cjs/src/doctor.d.ts +9 -0
- package/dist/cjs/src/doctor.d.ts.map +1 -0
- package/dist/cjs/src/doctor.js +82 -0
- package/dist/cjs/src/doctor.js.map +1 -0
- package/dist/cjs/src/helper-functions/open-graph.d.ts +22 -0
- package/dist/cjs/src/helper-functions/open-graph.d.ts.map +1 -0
- package/dist/cjs/src/helper-functions/open-graph.js +43 -0
- package/dist/cjs/src/helper-functions/open-graph.js.map +1 -0
- package/dist/cjs/src/helper-functions/stringify-filter.d.ts +3 -0
- package/dist/cjs/src/helper-functions/stringify-filter.d.ts.map +1 -0
- package/dist/cjs/src/helper-functions/stringify-filter.js +12 -0
- package/dist/cjs/src/helper-functions/stringify-filter.js.map +1 -0
- package/dist/cjs/src/io-client.d.ts +28 -0
- package/dist/cjs/src/io-client.d.ts.map +1 -0
- package/dist/cjs/src/io-client.js +217 -0
- package/dist/cjs/src/io-client.js.map +1 -0
- package/dist/cjs/src/io-peer/io-peer.d.ts +12 -0
- package/dist/cjs/src/io-peer/io-peer.d.ts.map +1 -0
- package/dist/cjs/src/io-peer/io-peer.js +71 -0
- package/dist/cjs/src/io-peer/io-peer.js.map +1 -0
- package/dist/cjs/src/io-peer/io-peer.spec.d.ts +3 -0
- package/dist/cjs/src/io-peer/io-peer.spec.d.ts.map +1 -0
- package/dist/cjs/src/io-peer/io-peer.spec.js +61 -0
- package/dist/cjs/src/io-peer/io-peer.spec.js.map +1 -0
- package/dist/cjs/src/io.d.ts +98 -0
- package/dist/cjs/src/io.d.ts.map +1 -0
- package/dist/cjs/src/io.js +468 -0
- package/dist/cjs/src/io.js.map +1 -0
- package/dist/cjs/src/io.spec.d.ts +3 -0
- package/dist/cjs/src/io.spec.d.ts.map +1 -0
- package/dist/cjs/src/io.spec.js +45 -0
- package/dist/cjs/src/io.spec.js.map +1 -0
- package/dist/cjs/src/mods/helpers.d.ts +2 -0
- package/dist/cjs/src/mods/helpers.d.ts.map +1 -0
- package/dist/cjs/src/mods/helpers.js +8 -0
- package/dist/cjs/src/mods/helpers.js.map +1 -0
- package/dist/cjs/src/mods/impls.d.ts +36 -0
- package/dist/cjs/src/mods/impls.d.ts.map +1 -0
- package/dist/cjs/src/mods/impls.js +53 -0
- package/dist/cjs/src/mods/impls.js.map +1 -0
- package/dist/cjs/src/mods/impls.spec.d.ts +3 -0
- package/dist/cjs/src/mods/impls.spec.d.ts.map +1 -0
- package/dist/cjs/src/mods/impls.spec.js +36 -0
- package/dist/cjs/src/mods/impls.spec.js.map +1 -0
- package/dist/cjs/src/mods/mod.d.ts +40 -0
- package/dist/cjs/src/mods/mod.d.ts.map +1 -0
- package/dist/cjs/src/mods/mod.js +67 -0
- package/dist/cjs/src/mods/mod.js.map +1 -0
- package/dist/cjs/src/mods/mod.spec.d.ts +3 -0
- package/dist/cjs/src/mods/mod.spec.d.ts.map +1 -0
- package/dist/cjs/src/mods/mod.spec.js +39 -0
- package/dist/cjs/src/mods/mod.spec.js.map +1 -0
- package/dist/cjs/src/mods/users.d.ts +26 -0
- package/dist/cjs/src/mods/users.d.ts.map +1 -0
- package/dist/cjs/src/mods/users.js +22 -0
- package/dist/cjs/src/mods/users.js.map +1 -0
- package/dist/cjs/src/package-json.d.ts +7 -0
- package/dist/cjs/src/package-json.d.ts.map +1 -0
- package/dist/cjs/src/package-json.js +178 -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 +17 -0
- package/dist/cjs/src/package-json.spec.js.map +1 -0
- package/dist/cjs/src/plugin.d.ts +9 -0
- package/dist/cjs/src/plugin.d.ts.map +1 -0
- package/dist/cjs/src/plugin.js +8 -0
- package/dist/cjs/src/plugin.js.map +1 -0
- package/dist/cjs/src/plugin.spec.d.ts +3 -0
- package/dist/cjs/src/plugin.spec.d.ts.map +1 -0
- package/dist/cjs/src/plugin.spec.js +70 -0
- package/dist/cjs/src/plugin.spec.js.map +1 -0
- package/dist/cjs/src/puppet-config.d.ts +78 -0
- package/dist/cjs/src/puppet-config.d.ts.map +1 -0
- package/dist/cjs/src/puppet-config.js +84 -0
- package/dist/cjs/src/puppet-config.js.map +1 -0
- package/dist/cjs/src/pure-functions/escape-regexp.d.ts +21 -0
- package/dist/cjs/src/pure-functions/escape-regexp.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/escape-regexp.js +27 -0
- package/dist/cjs/src/pure-functions/escape-regexp.js.map +1 -0
- package/dist/cjs/src/pure-functions/guard-qr-code-value.d.ts +2 -0
- package/dist/cjs/src/pure-functions/guard-qr-code-value.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/guard-qr-code-value.js +31 -0
- package/dist/cjs/src/pure-functions/guard-qr-code-value.js.map +1 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.d.ts +3 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.js +8 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.js.map +1 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.spec.d.ts +3 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.spec.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.spec.js +40 -0
- package/dist/cjs/src/pure-functions/is-template-string-array.spec.js.map +1 -0
- package/dist/cjs/src/pure-functions/mod.d.ts +22 -0
- package/dist/cjs/src/pure-functions/mod.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/mod.js +32 -0
- package/dist/cjs/src/pure-functions/mod.js.map +1 -0
- package/dist/cjs/src/pure-functions/retry-policy.d.ts +10 -0
- package/dist/cjs/src/pure-functions/retry-policy.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/retry-policy.js +32 -0
- package/dist/cjs/src/pure-functions/retry-policy.js.map +1 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.d.ts +21 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.js +35 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.js.map +1 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.spec.d.ts +3 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.spec.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.spec.js +42 -0
- package/dist/cjs/src/pure-functions/timestamp-to-date.spec.js.map +1 -0
- package/dist/cjs/src/pure-functions/xml.d.ts +33 -0
- package/dist/cjs/src/pure-functions/xml.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/xml.js +83 -0
- package/dist/cjs/src/pure-functions/xml.js.map +1 -0
- package/dist/cjs/src/pure-functions/xml.spec.d.ts +3 -0
- package/dist/cjs/src/pure-functions/xml.spec.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/xml.spec.js +97 -0
- package/dist/cjs/src/pure-functions/xml.spec.js.map +1 -0
- package/dist/cjs/src/raven.d.ts +4 -0
- package/dist/cjs/src/raven.d.ts.map +1 -0
- package/dist/cjs/src/raven.js +83 -0
- package/dist/cjs/src/raven.js.map +1 -0
- package/dist/cjs/src/sayable/deliver-sayable.d.ts +8 -0
- package/dist/cjs/src/sayable/deliver-sayable.d.ts.map +1 -0
- package/dist/cjs/src/sayable/deliver-sayable.js +75 -0
- package/dist/cjs/src/sayable/deliver-sayable.js.map +1 -0
- package/dist/cjs/src/sayable/message-to-sayable.d.ts +5 -0
- package/dist/cjs/src/sayable/message-to-sayable.d.ts.map +1 -0
- package/dist/cjs/src/sayable/message-to-sayable.js +57 -0
- package/dist/cjs/src/sayable/message-to-sayable.js.map +1 -0
- package/dist/cjs/src/sayable/mod.d.ts +8 -0
- package/dist/cjs/src/sayable/mod.d.ts.map +1 -0
- package/dist/cjs/src/sayable/mod.js +12 -0
- package/dist/cjs/src/sayable/mod.js.map +1 -0
- package/dist/cjs/src/sayable/payload-to-sayable.d.ts +6 -0
- package/dist/cjs/src/sayable/payload-to-sayable.d.ts.map +1 -0
- package/dist/cjs/src/sayable/payload-to-sayable.js +55 -0
- package/dist/cjs/src/sayable/payload-to-sayable.js.map +1 -0
- package/dist/cjs/src/sayable/sayable-to-payload.d.ts +5 -0
- package/dist/cjs/src/sayable/sayable-to-payload.d.ts.map +1 -0
- package/dist/cjs/src/sayable/sayable-to-payload.js +73 -0
- package/dist/cjs/src/sayable/sayable-to-payload.js.map +1 -0
- package/dist/cjs/src/sayable/types.d.ts +30 -0
- package/dist/cjs/src/sayable/types.d.ts.map +1 -0
- package/dist/cjs/src/sayable/types.js +3 -0
- package/dist/cjs/src/sayable/types.js.map +1 -0
- package/dist/cjs/src/schemas/acceptable.d.ts +27 -0
- package/dist/cjs/src/schemas/acceptable.d.ts.map +1 -0
- package/dist/cjs/src/schemas/acceptable.js +3 -0
- package/dist/cjs/src/schemas/acceptable.js.map +1 -0
- package/dist/cjs/src/schemas/contact-events.d.ts +12 -0
- package/dist/cjs/src/schemas/contact-events.d.ts.map +1 -0
- package/dist/cjs/src/schemas/contact-events.js +7 -0
- package/dist/cjs/src/schemas/contact-events.js.map +1 -0
- package/dist/cjs/src/schemas/mod.d.ts +7 -0
- package/dist/cjs/src/schemas/mod.d.ts.map +1 -0
- package/dist/cjs/src/schemas/mod.js +10 -0
- package/dist/cjs/src/schemas/mod.js.map +1 -0
- package/dist/cjs/src/schemas/room-events.d.ts +103 -0
- package/dist/cjs/src/schemas/room-events.d.ts.map +1 -0
- package/dist/cjs/src/schemas/room-events.js +14 -0
- package/dist/cjs/src/schemas/room-events.js.map +1 -0
- package/dist/cjs/src/schemas/wechaty-events.d.ts +218 -0
- package/dist/cjs/src/schemas/wechaty-events.d.ts.map +1 -0
- package/dist/cjs/src/schemas/wechaty-events.js +41 -0
- package/dist/cjs/src/schemas/wechaty-events.js.map +1 -0
- package/dist/cjs/src/schemas/wechaty-options.d.ts +20 -0
- package/dist/cjs/src/schemas/wechaty-options.d.ts.map +1 -0
- package/dist/cjs/src/schemas/wechaty-options.js +3 -0
- package/dist/cjs/src/schemas/wechaty-options.js.map +1 -0
- package/dist/cjs/src/user-mixins/mod.d.ts +7 -0
- package/dist/cjs/src/user-mixins/mod.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/mod.js +11 -0
- package/dist/cjs/src/user-mixins/mod.js.map +1 -0
- package/dist/cjs/src/user-mixins/poolify.d.ts +32 -0
- package/dist/cjs/src/user-mixins/poolify.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/poolify.js +47 -0
- package/dist/cjs/src/user-mixins/poolify.js.map +1 -0
- package/dist/cjs/src/user-mixins/poolify.spec.d.ts +3 -0
- package/dist/cjs/src/user-mixins/poolify.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/poolify.spec.js +53 -0
- package/dist/cjs/src/user-mixins/poolify.spec.js.map +1 -0
- package/dist/cjs/src/user-mixins/validation.d.ts +9 -0
- package/dist/cjs/src/user-mixins/validation.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/validation.js +29 -0
- package/dist/cjs/src/user-mixins/validation.js.map +1 -0
- package/dist/cjs/src/user-mixins/validation.spec.d.ts +3 -0
- package/dist/cjs/src/user-mixins/validation.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/validation.spec.js +56 -0
- package/dist/cjs/src/user-mixins/validation.spec.js.map +1 -0
- package/dist/cjs/src/user-mixins/wechatify.d.ts +24 -0
- package/dist/cjs/src/user-mixins/wechatify.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/wechatify.js +47 -0
- package/dist/cjs/src/user-mixins/wechatify.js.map +1 -0
- package/dist/cjs/src/user-mixins/wechatify.spec.d.ts +3 -0
- package/dist/cjs/src/user-mixins/wechatify.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-mixins/wechatify.spec.js +20 -0
- package/dist/cjs/src/user-mixins/wechatify.spec.js.map +1 -0
- package/dist/cjs/src/user-modules/contact-self.d.ts +110 -0
- package/dist/cjs/src/user-modules/contact-self.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/contact-self.js +133 -0
- package/dist/cjs/src/user-modules/contact-self.js.map +1 -0
- package/dist/cjs/src/user-modules/contact.d.ts +388 -0
- package/dist/cjs/src/user-modules/contact.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/contact.js +667 -0
- package/dist/cjs/src/user-modules/contact.js.map +1 -0
- package/dist/cjs/src/user-modules/contact.spec.d.ts +3 -0
- package/dist/cjs/src/user-modules/contact.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/contact.spec.js +71 -0
- package/dist/cjs/src/user-modules/contact.spec.js.map +1 -0
- package/dist/cjs/src/user-modules/delay.d.ts +47 -0
- package/dist/cjs/src/user-modules/delay.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/delay.js +24 -0
- package/dist/cjs/src/user-modules/delay.js.map +1 -0
- package/dist/cjs/src/user-modules/favorite.d.ts +38 -0
- package/dist/cjs/src/user-modules/favorite.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/favorite.js +68 -0
- package/dist/cjs/src/user-modules/favorite.js.map +1 -0
- package/dist/cjs/src/user-modules/friendship.d.ts +244 -0
- package/dist/cjs/src/user-modules/friendship.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/friendship.js +369 -0
- package/dist/cjs/src/user-modules/friendship.js.map +1 -0
- package/dist/cjs/src/user-modules/image.d.ts +31 -0
- package/dist/cjs/src/user-modules/image.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/image.js +81 -0
- package/dist/cjs/src/user-modules/image.js.map +1 -0
- package/dist/cjs/src/user-modules/location.d.ts +59 -0
- package/dist/cjs/src/user-modules/location.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/location.js +58 -0
- package/dist/cjs/src/user-modules/location.js.map +1 -0
- package/dist/cjs/src/user-modules/message.d.ts +459 -0
- package/dist/cjs/src/user-modules/message.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/message.js +932 -0
- package/dist/cjs/src/user-modules/message.js.map +1 -0
- package/dist/cjs/src/user-modules/message.spec.d.ts +22 -0
- package/dist/cjs/src/user-modules/message.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/message.spec.js +125 -0
- package/dist/cjs/src/user-modules/message.spec.js.map +1 -0
- package/dist/cjs/src/user-modules/mini-program.d.ts +59 -0
- package/dist/cjs/src/user-modules/mini-program.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/mini-program.js +63 -0
- package/dist/cjs/src/user-modules/mini-program.js.map +1 -0
- package/dist/cjs/src/user-modules/mod.d.ts +40 -0
- package/dist/cjs/src/user-modules/mod.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/mod.js +57 -0
- package/dist/cjs/src/user-modules/mod.js.map +1 -0
- package/dist/cjs/src/user-modules/moment.d.ts +28 -0
- package/dist/cjs/src/user-modules/moment.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/moment.js +46 -0
- package/dist/cjs/src/user-modules/moment.js.map +1 -0
- package/dist/cjs/src/user-modules/money.d.ts +44 -0
- package/dist/cjs/src/user-modules/money.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/money.js +14 -0
- package/dist/cjs/src/user-modules/money.js.map +1 -0
- package/dist/cjs/src/user-modules/post.d.ts +114 -0
- package/dist/cjs/src/user-modules/post.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/post.js +372 -0
- package/dist/cjs/src/user-modules/post.js.map +1 -0
- package/dist/cjs/src/user-modules/post.spec.d.ts +3 -0
- package/dist/cjs/src/user-modules/post.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/post.spec.js +89 -0
- package/dist/cjs/src/user-modules/post.spec.js.map +1 -0
- package/dist/cjs/src/user-modules/room-invitation.d.ts +154 -0
- package/dist/cjs/src/user-modules/room-invitation.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/room-invitation.js +201 -0
- package/dist/cjs/src/user-modules/room-invitation.js.map +1 -0
- package/dist/cjs/src/user-modules/room.d.ts +404 -0
- package/dist/cjs/src/user-modules/room.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/room.js +932 -0
- package/dist/cjs/src/user-modules/room.js.map +1 -0
- package/dist/cjs/src/user-modules/room.spec.d.ts +3 -0
- package/dist/cjs/src/user-modules/room.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/room.spec.js +135 -0
- package/dist/cjs/src/user-modules/room.spec.js.map +1 -0
- package/dist/cjs/src/user-modules/tag.d.ts +92 -0
- package/dist/cjs/src/user-modules/tag.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/tag.js +163 -0
- package/dist/cjs/src/user-modules/tag.js.map +1 -0
- package/dist/cjs/src/user-modules/url-link.d.ts +38 -0
- package/dist/cjs/src/user-modules/url-link.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/url-link.js +116 -0
- package/dist/cjs/src/user-modules/url-link.js.map +1 -0
- package/dist/cjs/src/user-modules/url-link.spec.d.ts +3 -0
- package/dist/cjs/src/user-modules/url-link.spec.d.ts.map +1 -0
- package/dist/cjs/src/user-modules/url-link.spec.js +31 -0
- package/dist/cjs/src/user-modules/url-link.spec.js.map +1 -0
- package/dist/cjs/src/wechaty/mod.d.ts +6 -0
- package/dist/cjs/src/wechaty/mod.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/mod.js +8 -0
- package/dist/cjs/src/wechaty/mod.js.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-base.d.ts +545 -0
- package/dist/cjs/src/wechaty/wechaty-base.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-base.js +221 -0
- package/dist/cjs/src/wechaty/wechaty-base.js.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-base.spec.d.ts +14 -0
- package/dist/cjs/src/wechaty/wechaty-base.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-base.spec.js +288 -0
- package/dist/cjs/src/wechaty/wechaty-base.spec.js.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-impl.d.ts +56 -0
- package/dist/cjs/src/wechaty/wechaty-impl.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-impl.js +17 -0
- package/dist/cjs/src/wechaty/wechaty-impl.js.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-impl.spec.d.ts +3 -0
- package/dist/cjs/src/wechaty/wechaty-impl.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-impl.spec.js +64 -0
- package/dist/cjs/src/wechaty/wechaty-impl.spec.js.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-skeleton.d.ts +51 -0
- package/dist/cjs/src/wechaty/wechaty-skeleton.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-skeleton.js +119 -0
- package/dist/cjs/src/wechaty/wechaty-skeleton.js.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-skelton.spec.d.ts +3 -0
- package/dist/cjs/src/wechaty/wechaty-skelton.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty/wechaty-skelton.spec.js +9 -0
- package/dist/cjs/src/wechaty/wechaty-skelton.spec.js.map +1 -0
- package/dist/cjs/src/wechaty-builder.d.ts +38 -0
- package/dist/cjs/src/wechaty-builder.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-builder.js +98 -0
- package/dist/cjs/src/wechaty-builder.js.map +1 -0
- package/dist/cjs/src/wechaty-builder.spec.d.ts +22 -0
- package/dist/cjs/src/wechaty-builder.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-builder.spec.js +66 -0
- package/dist/cjs/src/wechaty-builder.spec.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts +52 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.js +54 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.d.ts +3 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.js +9 -0
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts +75 -0
- package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/io-mixin.js +86 -0
- package/dist/cjs/src/wechaty-mixins/io-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts +290 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.js +89 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.spec.d.ts +3 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.spec.js +9 -0
- package/dist/cjs/src/wechaty-mixins/login-mixin.spec.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts +295 -0
- package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/misc-mixin.js +67 -0
- package/dist/cjs/src/wechaty-mixins/misc-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/mod.d.ts +18 -0
- package/dist/cjs/src/wechaty-mixins/mod.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/mod.js +18 -0
- package/dist/cjs/src/wechaty-mixins/mod.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts +384 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.js +56 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.d.ts +13 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.js +60 -0
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts +194 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.js +425 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.d.ts +3 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.js +9 -0
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +61 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.js +84 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.js.map +1 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts +3 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts.map +1 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.js +9 -0
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.js.map +1 -0
- package/dist/cjs/tests/electron.spec.d.ts +3 -0
- package/dist/cjs/tests/electron.spec.d.ts.map +1 -0
- package/dist/cjs/tests/electron.spec.js +30 -0
- package/dist/cjs/tests/electron.spec.js.map +1 -0
- package/dist/cjs/tests/node.spec.d.ts +3 -0
- package/dist/cjs/tests/node.spec.d.ts.map +1 -0
- package/dist/cjs/tests/node.spec.js +43 -0
- package/dist/cjs/tests/node.spec.js.map +1 -0
- package/dist/esm/bin/cli.d.ts +14 -0
- package/dist/esm/bin/cli.d.ts.map +1 -0
- package/dist/esm/bin/cli.js +25 -0
- package/dist/esm/bin/cli.js.map +1 -0
- package/dist/esm/bin/doctor.d.ts +22 -0
- package/dist/esm/bin/doctor.d.ts.map +1 -0
- package/dist/esm/bin/doctor.js +50 -0
- package/dist/esm/bin/doctor.js.map +1 -0
- package/dist/esm/bin/io-client.d.ts +22 -0
- package/dist/esm/bin/io-client.d.ts.map +1 -0
- package/dist/esm/bin/io-client.js +72 -0
- package/dist/esm/bin/io-client.js.map +1 -0
- package/dist/esm/bin/providers-trends.d.ts +3 -0
- package/dist/esm/bin/providers-trends.d.ts.map +1 -0
- package/dist/esm/bin/providers-trends.js +12 -0
- package/dist/esm/bin/providers-trends.js.map +1 -0
- package/dist/esm/bin/puppet-install.d.ts +3 -0
- package/dist/esm/bin/puppet-install.d.ts.map +1 -0
- package/dist/esm/bin/puppet-install.js +55 -0
- package/dist/esm/bin/puppet-install.js.map +1 -0
- package/dist/esm/bin/version.d.ts +22 -0
- package/dist/esm/bin/version.d.ts.map +1 -0
- package/dist/esm/bin/version.js +23 -0
- package/dist/esm/bin/version.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 +178 -0
- package/dist/esm/examples/ding-dong-bot.js.map +1 -0
- package/dist/esm/examples/video-post.d.ts +2 -0
- package/dist/esm/examples/video-post.d.ts.map +1 -0
- package/dist/esm/examples/video-post.js +70 -0
- package/dist/esm/examples/video-post.js.map +1 -0
- package/dist/esm/scripts/retry-unit-tests.d.ts +3 -0
- package/dist/esm/scripts/retry-unit-tests.d.ts.map +1 -0
- package/dist/esm/scripts/retry-unit-tests.js +56 -0
- package/dist/esm/scripts/retry-unit-tests.js.map +1 -0
- package/dist/esm/scripts/sort-contributiveness.d.ts +3 -0
- package/dist/esm/scripts/sort-contributiveness.d.ts.map +1 -0
- package/dist/esm/scripts/sort-contributiveness.js +117 -0
- package/dist/esm/scripts/sort-contributiveness.js.map +1 -0
- package/dist/esm/scripts/update-license.d.ts +3 -0
- package/dist/esm/scripts/update-license.d.ts.map +1 -0
- package/dist/esm/scripts/update-license.js +163 -0
- package/dist/esm/scripts/update-license.js.map +1 -0
- package/dist/esm/src/cli/friday.d.ts +7 -0
- package/dist/esm/src/cli/friday.d.ts.map +1 -0
- package/dist/esm/src/cli/friday.js +15 -0
- package/dist/esm/src/cli/friday.js.map +1 -0
- package/dist/esm/src/cli/gateway.d.ts +17 -0
- package/dist/esm/src/cli/gateway.d.ts.map +1 -0
- package/dist/esm/src/cli/gateway.js +148 -0
- package/dist/esm/src/cli/gateway.js.map +1 -0
- package/dist/esm/src/cli/mod.d.ts +6 -0
- package/dist/esm/src/cli/mod.d.ts.map +1 -0
- package/dist/esm/src/cli/mod.js +6 -0
- package/dist/esm/src/cli/mod.js.map +1 -0
- package/dist/esm/src/cli/provider.d.ts +7 -0
- package/dist/esm/src/cli/provider.d.ts.map +1 -0
- package/dist/esm/src/cli/provider.js +15 -0
- package/dist/esm/src/cli/provider.js.map +1 -0
- package/dist/esm/src/cli/service.d.ts +7 -0
- package/dist/esm/src/cli/service.d.ts.map +1 -0
- package/dist/esm/src/cli/service.js +15 -0
- package/dist/esm/src/cli/service.js.map +1 -0
- package/dist/esm/src/cli/token.d.ts +39 -0
- package/dist/esm/src/cli/token.d.ts.map +1 -0
- package/dist/esm/src/cli/token.js +12 -0
- package/dist/esm/src/cli/token.js.map +1 -0
- package/dist/esm/src/config.d.ts +61 -0
- package/dist/esm/src/config.d.ts.map +1 -0
- package/dist/esm/src/config.js +100 -0
- package/dist/esm/src/config.js.map +1 -0
- package/dist/esm/src/config.spec.d.ts +22 -0
- package/dist/esm/src/config.spec.d.ts.map +1 -0
- package/dist/esm/src/config.spec.js +82 -0
- package/dist/esm/src/config.spec.js.map +1 -0
- package/dist/esm/src/doctor.d.ts +9 -0
- package/dist/esm/src/doctor.d.ts.map +1 -0
- package/dist/esm/src/doctor.js +78 -0
- package/dist/esm/src/doctor.js.map +1 -0
- package/dist/esm/src/helper-functions/open-graph.d.ts +22 -0
- package/dist/esm/src/helper-functions/open-graph.d.ts.map +1 -0
- package/dist/esm/src/helper-functions/open-graph.js +36 -0
- package/dist/esm/src/helper-functions/open-graph.js.map +1 -0
- package/dist/esm/src/helper-functions/stringify-filter.d.ts +3 -0
- package/dist/esm/src/helper-functions/stringify-filter.d.ts.map +1 -0
- package/dist/esm/src/helper-functions/stringify-filter.js +9 -0
- package/dist/esm/src/helper-functions/stringify-filter.js.map +1 -0
- package/dist/esm/src/io-client.d.ts +28 -0
- package/dist/esm/src/io-client.d.ts.map +1 -0
- package/dist/esm/src/io-client.js +213 -0
- package/dist/esm/src/io-client.js.map +1 -0
- package/dist/esm/src/io-peer/io-peer.d.ts +12 -0
- package/dist/esm/src/io-peer/io-peer.d.ts.map +1 -0
- package/dist/esm/src/io-peer/io-peer.js +61 -0
- package/dist/esm/src/io-peer/io-peer.js.map +1 -0
- package/dist/esm/src/io-peer/io-peer.spec.d.ts +3 -0
- package/dist/esm/src/io-peer/io-peer.spec.d.ts.map +1 -0
- package/dist/esm/src/io-peer/io-peer.spec.js +56 -0
- package/dist/esm/src/io-peer/io-peer.spec.js.map +1 -0
- package/dist/esm/src/io.d.ts +98 -0
- package/dist/esm/src/io.d.ts.map +1 -0
- package/dist/esm/src/io.js +438 -0
- package/dist/esm/src/io.js.map +1 -0
- package/dist/esm/src/io.spec.d.ts +3 -0
- package/dist/esm/src/io.spec.d.ts.map +1 -0
- package/dist/esm/src/io.spec.js +43 -0
- package/dist/esm/src/io.spec.js.map +1 -0
- package/dist/esm/src/mods/helpers.d.ts +2 -0
- package/dist/esm/src/mods/helpers.d.ts.map +1 -0
- package/dist/esm/src/mods/helpers.js +2 -0
- package/dist/esm/src/mods/helpers.js.map +1 -0
- package/dist/esm/src/mods/impls.d.ts +36 -0
- package/dist/esm/src/mods/impls.d.ts.map +1 -0
- package/dist/esm/src/mods/impls.js +33 -0
- package/dist/esm/src/mods/impls.js.map +1 -0
- package/dist/esm/src/mods/impls.spec.d.ts +3 -0
- package/dist/esm/src/mods/impls.spec.d.ts.map +1 -0
- package/dist/esm/src/mods/impls.spec.js +11 -0
- package/dist/esm/src/mods/impls.spec.js.map +1 -0
- package/dist/esm/src/mods/mod.d.ts +40 -0
- package/dist/esm/src/mods/mod.d.ts.map +1 -0
- package/dist/esm/src/mods/mod.js +31 -0
- package/dist/esm/src/mods/mod.js.map +1 -0
- package/dist/esm/src/mods/mod.spec.d.ts +3 -0
- package/dist/esm/src/mods/mod.spec.d.ts.map +1 -0
- package/dist/esm/src/mods/mod.spec.js +14 -0
- package/dist/esm/src/mods/mod.spec.js.map +1 -0
- package/dist/esm/src/mods/users.d.ts +26 -0
- package/dist/esm/src/mods/users.d.ts.map +1 -0
- package/dist/esm/src/mods/users.js +21 -0
- package/dist/esm/src/mods/users.js.map +1 -0
- package/dist/esm/src/package-json.d.ts +7 -0
- package/dist/esm/src/package-json.d.ts.map +1 -0
- package/dist/esm/src/package-json.js +175 -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 +15 -0
- package/dist/esm/src/package-json.spec.js.map +1 -0
- package/dist/esm/src/plugin.d.ts +9 -0
- package/dist/esm/src/plugin.d.ts.map +1 -0
- package/dist/esm/src/plugin.js +5 -0
- package/dist/esm/src/plugin.js.map +1 -0
- package/dist/esm/src/plugin.spec.d.ts +3 -0
- package/dist/esm/src/plugin.spec.d.ts.map +1 -0
- package/dist/esm/src/plugin.spec.js +68 -0
- package/dist/esm/src/plugin.spec.js.map +1 -0
- package/dist/esm/src/puppet-config.d.ts +78 -0
- package/dist/esm/src/puppet-config.d.ts.map +1 -0
- package/dist/esm/src/puppet-config.js +80 -0
- package/dist/esm/src/puppet-config.js.map +1 -0
- package/dist/esm/src/pure-functions/escape-regexp.d.ts +21 -0
- package/dist/esm/src/pure-functions/escape-regexp.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/escape-regexp.js +23 -0
- package/dist/esm/src/pure-functions/escape-regexp.js.map +1 -0
- package/dist/esm/src/pure-functions/guard-qr-code-value.d.ts +2 -0
- package/dist/esm/src/pure-functions/guard-qr-code-value.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/guard-qr-code-value.js +27 -0
- package/dist/esm/src/pure-functions/guard-qr-code-value.js.map +1 -0
- package/dist/esm/src/pure-functions/is-template-string-array.d.ts +3 -0
- package/dist/esm/src/pure-functions/is-template-string-array.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/is-template-string-array.js +5 -0
- package/dist/esm/src/pure-functions/is-template-string-array.js.map +1 -0
- package/dist/esm/src/pure-functions/is-template-string-array.spec.d.ts +3 -0
- package/dist/esm/src/pure-functions/is-template-string-array.spec.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/is-template-string-array.spec.js +38 -0
- package/dist/esm/src/pure-functions/is-template-string-array.spec.js.map +1 -0
- package/dist/esm/src/pure-functions/mod.d.ts +22 -0
- package/dist/esm/src/pure-functions/mod.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/mod.js +22 -0
- package/dist/esm/src/pure-functions/mod.js.map +1 -0
- package/dist/esm/src/pure-functions/retry-policy.d.ts +10 -0
- package/dist/esm/src/pure-functions/retry-policy.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/retry-policy.js +29 -0
- package/dist/esm/src/pure-functions/retry-policy.js.map +1 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.d.ts +21 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.js +31 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.js.map +1 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.spec.d.ts +3 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.spec.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.spec.js +40 -0
- package/dist/esm/src/pure-functions/timestamp-to-date.spec.js.map +1 -0
- package/dist/esm/src/pure-functions/xml.d.ts +33 -0
- package/dist/esm/src/pure-functions/xml.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/xml.js +74 -0
- package/dist/esm/src/pure-functions/xml.js.map +1 -0
- package/dist/esm/src/pure-functions/xml.spec.d.ts +3 -0
- package/dist/esm/src/pure-functions/xml.spec.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/xml.spec.js +95 -0
- package/dist/esm/src/pure-functions/xml.spec.js.map +1 -0
- package/dist/esm/src/raven.d.ts +4 -0
- package/dist/esm/src/raven.d.ts.map +1 -0
- package/dist/esm/src/raven.js +54 -0
- package/dist/esm/src/raven.js.map +1 -0
- package/dist/esm/src/sayable/deliver-sayable.d.ts +8 -0
- package/dist/esm/src/sayable/deliver-sayable.d.ts.map +1 -0
- package/dist/esm/src/sayable/deliver-sayable.js +72 -0
- package/dist/esm/src/sayable/deliver-sayable.js.map +1 -0
- package/dist/esm/src/sayable/message-to-sayable.d.ts +5 -0
- package/dist/esm/src/sayable/message-to-sayable.d.ts.map +1 -0
- package/dist/esm/src/sayable/message-to-sayable.js +31 -0
- package/dist/esm/src/sayable/message-to-sayable.js.map +1 -0
- package/dist/esm/src/sayable/mod.d.ts +8 -0
- package/dist/esm/src/sayable/mod.d.ts.map +1 -0
- package/dist/esm/src/sayable/mod.js +6 -0
- package/dist/esm/src/sayable/mod.js.map +1 -0
- package/dist/esm/src/sayable/payload-to-sayable.d.ts +6 -0
- package/dist/esm/src/sayable/payload-to-sayable.d.ts.map +1 -0
- package/dist/esm/src/sayable/payload-to-sayable.js +29 -0
- package/dist/esm/src/sayable/payload-to-sayable.js.map +1 -0
- package/dist/esm/src/sayable/sayable-to-payload.d.ts +5 -0
- package/dist/esm/src/sayable/sayable-to-payload.d.ts.map +1 -0
- package/dist/esm/src/sayable/sayable-to-payload.js +47 -0
- package/dist/esm/src/sayable/sayable-to-payload.js.map +1 -0
- package/dist/esm/src/sayable/types.d.ts +30 -0
- package/dist/esm/src/sayable/types.d.ts.map +1 -0
- package/dist/esm/src/sayable/types.js +2 -0
- package/dist/esm/src/sayable/types.js.map +1 -0
- package/dist/esm/src/schemas/acceptable.d.ts +27 -0
- package/dist/esm/src/schemas/acceptable.d.ts.map +1 -0
- package/dist/esm/src/schemas/acceptable.js +2 -0
- package/dist/esm/src/schemas/acceptable.js.map +1 -0
- package/dist/esm/src/schemas/contact-events.d.ts +12 -0
- package/dist/esm/src/schemas/contact-events.d.ts.map +1 -0
- package/dist/esm/src/schemas/contact-events.js +4 -0
- package/dist/esm/src/schemas/contact-events.js.map +1 -0
- package/dist/esm/src/schemas/mod.d.ts +7 -0
- package/dist/esm/src/schemas/mod.d.ts.map +1 -0
- package/dist/esm/src/schemas/mod.js +5 -0
- package/dist/esm/src/schemas/mod.js.map +1 -0
- package/dist/esm/src/schemas/room-events.d.ts +103 -0
- package/dist/esm/src/schemas/room-events.d.ts.map +1 -0
- package/dist/esm/src/schemas/room-events.js +11 -0
- package/dist/esm/src/schemas/room-events.js.map +1 -0
- package/dist/esm/src/schemas/wechaty-events.d.ts +218 -0
- package/dist/esm/src/schemas/wechaty-events.d.ts.map +1 -0
- package/dist/esm/src/schemas/wechaty-events.js +15 -0
- package/dist/esm/src/schemas/wechaty-events.js.map +1 -0
- package/dist/esm/src/schemas/wechaty-options.d.ts +20 -0
- package/dist/esm/src/schemas/wechaty-options.d.ts.map +1 -0
- package/dist/esm/src/schemas/wechaty-options.js +2 -0
- package/dist/esm/src/schemas/wechaty-options.js.map +1 -0
- package/dist/esm/src/user-mixins/mod.d.ts +7 -0
- package/dist/esm/src/user-mixins/mod.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/mod.js +5 -0
- package/dist/esm/src/user-mixins/mod.js.map +1 -0
- package/dist/esm/src/user-mixins/poolify.d.ts +32 -0
- package/dist/esm/src/user-mixins/poolify.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/poolify.js +44 -0
- package/dist/esm/src/user-mixins/poolify.js.map +1 -0
- package/dist/esm/src/user-mixins/poolify.spec.d.ts +3 -0
- package/dist/esm/src/user-mixins/poolify.spec.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/poolify.spec.js +51 -0
- package/dist/esm/src/user-mixins/poolify.spec.js.map +1 -0
- package/dist/esm/src/user-mixins/validation.d.ts +9 -0
- package/dist/esm/src/user-mixins/validation.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/validation.js +26 -0
- package/dist/esm/src/user-mixins/validation.js.map +1 -0
- package/dist/esm/src/user-mixins/validation.spec.d.ts +3 -0
- package/dist/esm/src/user-mixins/validation.spec.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/validation.spec.js +54 -0
- package/dist/esm/src/user-mixins/validation.spec.js.map +1 -0
- package/dist/esm/src/user-mixins/wechatify.d.ts +24 -0
- package/dist/esm/src/user-mixins/wechatify.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/wechatify.js +41 -0
- package/dist/esm/src/user-mixins/wechatify.js.map +1 -0
- package/dist/esm/src/user-mixins/wechatify.spec.d.ts +3 -0
- package/dist/esm/src/user-mixins/wechatify.spec.d.ts.map +1 -0
- package/dist/esm/src/user-mixins/wechatify.spec.js +18 -0
- package/dist/esm/src/user-mixins/wechatify.spec.js.map +1 -0
- package/dist/esm/src/user-modules/contact-self.d.ts +110 -0
- package/dist/esm/src/user-modules/contact-self.d.ts.map +1 -0
- package/dist/esm/src/user-modules/contact-self.js +130 -0
- package/dist/esm/src/user-modules/contact-self.js.map +1 -0
- package/dist/esm/src/user-modules/contact.d.ts +388 -0
- package/dist/esm/src/user-modules/contact.d.ts.map +1 -0
- package/dist/esm/src/user-modules/contact.js +641 -0
- package/dist/esm/src/user-modules/contact.js.map +1 -0
- package/dist/esm/src/user-modules/contact.spec.d.ts +3 -0
- package/dist/esm/src/user-modules/contact.spec.d.ts.map +1 -0
- package/dist/esm/src/user-modules/contact.spec.js +69 -0
- package/dist/esm/src/user-modules/contact.spec.js.map +1 -0
- package/dist/esm/src/user-modules/delay.d.ts +47 -0
- package/dist/esm/src/user-modules/delay.d.ts.map +1 -0
- package/dist/esm/src/user-modules/delay.js +21 -0
- package/dist/esm/src/user-modules/delay.js.map +1 -0
- package/dist/esm/src/user-modules/favorite.d.ts +38 -0
- package/dist/esm/src/user-modules/favorite.d.ts.map +1 -0
- package/dist/esm/src/user-modules/favorite.js +65 -0
- package/dist/esm/src/user-modules/favorite.js.map +1 -0
- package/dist/esm/src/user-modules/friendship.d.ts +244 -0
- package/dist/esm/src/user-modules/friendship.d.ts.map +1 -0
- package/dist/esm/src/user-modules/friendship.js +343 -0
- package/dist/esm/src/user-modules/friendship.js.map +1 -0
- package/dist/esm/src/user-modules/image.d.ts +31 -0
- package/dist/esm/src/user-modules/image.d.ts.map +1 -0
- package/dist/esm/src/user-modules/image.js +55 -0
- package/dist/esm/src/user-modules/image.js.map +1 -0
- package/dist/esm/src/user-modules/location.d.ts +59 -0
- package/dist/esm/src/user-modules/location.d.ts.map +1 -0
- package/dist/esm/src/user-modules/location.js +55 -0
- package/dist/esm/src/user-modules/location.js.map +1 -0
- package/dist/esm/src/user-modules/message.d.ts +459 -0
- package/dist/esm/src/user-modules/message.d.ts.map +1 -0
- package/dist/esm/src/user-modules/message.js +906 -0
- package/dist/esm/src/user-modules/message.js.map +1 -0
- package/dist/esm/src/user-modules/message.spec.d.ts +22 -0
- package/dist/esm/src/user-modules/message.spec.d.ts.map +1 -0
- package/dist/esm/src/user-modules/message.spec.js +100 -0
- package/dist/esm/src/user-modules/message.spec.js.map +1 -0
- package/dist/esm/src/user-modules/mini-program.d.ts +59 -0
- package/dist/esm/src/user-modules/mini-program.d.ts.map +1 -0
- package/dist/esm/src/user-modules/mini-program.js +60 -0
- package/dist/esm/src/user-modules/mini-program.js.map +1 -0
- package/dist/esm/src/user-modules/mod.d.ts +40 -0
- package/dist/esm/src/user-modules/mod.d.ts.map +1 -0
- package/dist/esm/src/user-modules/mod.js +38 -0
- package/dist/esm/src/user-modules/mod.js.map +1 -0
- package/dist/esm/src/user-modules/moment.d.ts +28 -0
- package/dist/esm/src/user-modules/moment.d.ts.map +1 -0
- package/dist/esm/src/user-modules/moment.js +43 -0
- package/dist/esm/src/user-modules/moment.js.map +1 -0
- package/dist/esm/src/user-modules/money.d.ts +44 -0
- package/dist/esm/src/user-modules/money.d.ts.map +1 -0
- package/dist/esm/src/user-modules/money.js +11 -0
- package/dist/esm/src/user-modules/money.js.map +1 -0
- package/dist/esm/src/user-modules/post.d.ts +114 -0
- package/dist/esm/src/user-modules/post.d.ts.map +1 -0
- package/dist/esm/src/user-modules/post.js +345 -0
- package/dist/esm/src/user-modules/post.js.map +1 -0
- package/dist/esm/src/user-modules/post.spec.d.ts +3 -0
- package/dist/esm/src/user-modules/post.spec.d.ts.map +1 -0
- package/dist/esm/src/user-modules/post.spec.js +61 -0
- package/dist/esm/src/user-modules/post.spec.js.map +1 -0
- package/dist/esm/src/user-modules/room-invitation.d.ts +154 -0
- package/dist/esm/src/user-modules/room-invitation.d.ts.map +1 -0
- package/dist/esm/src/user-modules/room-invitation.js +198 -0
- package/dist/esm/src/user-modules/room-invitation.js.map +1 -0
- package/dist/esm/src/user-modules/room.d.ts +404 -0
- package/dist/esm/src/user-modules/room.d.ts.map +1 -0
- package/dist/esm/src/user-modules/room.js +929 -0
- package/dist/esm/src/user-modules/room.js.map +1 -0
- package/dist/esm/src/user-modules/room.spec.d.ts +3 -0
- package/dist/esm/src/user-modules/room.spec.d.ts.map +1 -0
- package/dist/esm/src/user-modules/room.spec.js +133 -0
- package/dist/esm/src/user-modules/room.spec.js.map +1 -0
- package/dist/esm/src/user-modules/tag.d.ts +92 -0
- package/dist/esm/src/user-modules/tag.d.ts.map +1 -0
- package/dist/esm/src/user-modules/tag.js +160 -0
- package/dist/esm/src/user-modules/tag.js.map +1 -0
- package/dist/esm/src/user-modules/url-link.d.ts +38 -0
- package/dist/esm/src/user-modules/url-link.d.ts.map +1 -0
- package/dist/esm/src/user-modules/url-link.js +110 -0
- package/dist/esm/src/user-modules/url-link.js.map +1 -0
- package/dist/esm/src/user-modules/url-link.spec.d.ts +3 -0
- package/dist/esm/src/user-modules/url-link.spec.d.ts.map +1 -0
- package/dist/esm/src/user-modules/url-link.spec.js +29 -0
- package/dist/esm/src/user-modules/url-link.spec.js.map +1 -0
- package/dist/esm/src/wechaty/mod.d.ts +6 -0
- package/dist/esm/src/wechaty/mod.d.ts.map +1 -0
- package/dist/esm/src/wechaty/mod.js +4 -0
- package/dist/esm/src/wechaty/mod.js.map +1 -0
- package/dist/esm/src/wechaty/wechaty-base.d.ts +545 -0
- package/dist/esm/src/wechaty/wechaty-base.d.ts.map +1 -0
- package/dist/esm/src/wechaty/wechaty-base.js +218 -0
- package/dist/esm/src/wechaty/wechaty-base.js.map +1 -0
- package/dist/esm/src/wechaty/wechaty-base.spec.d.ts +14 -0
- package/dist/esm/src/wechaty/wechaty-base.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty/wechaty-base.spec.js +286 -0
- package/dist/esm/src/wechaty/wechaty-base.spec.js.map +1 -0
- package/dist/esm/src/wechaty/wechaty-impl.d.ts +56 -0
- package/dist/esm/src/wechaty/wechaty-impl.d.ts.map +1 -0
- package/dist/esm/src/wechaty/wechaty-impl.js +14 -0
- package/dist/esm/src/wechaty/wechaty-impl.js.map +1 -0
- package/dist/esm/src/wechaty/wechaty-impl.spec.d.ts +3 -0
- package/dist/esm/src/wechaty/wechaty-impl.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty/wechaty-impl.spec.js +61 -0
- package/dist/esm/src/wechaty/wechaty-impl.spec.js.map +1 -0
- package/dist/esm/src/wechaty/wechaty-skeleton.d.ts +51 -0
- package/dist/esm/src/wechaty/wechaty-skeleton.d.ts.map +1 -0
- package/dist/esm/src/wechaty/wechaty-skeleton.js +93 -0
- package/dist/esm/src/wechaty/wechaty-skeleton.js.map +1 -0
- package/dist/esm/src/wechaty/wechaty-skelton.spec.d.ts +3 -0
- package/dist/esm/src/wechaty/wechaty-skelton.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty/wechaty-skelton.spec.js +7 -0
- package/dist/esm/src/wechaty/wechaty-skelton.spec.js.map +1 -0
- package/dist/esm/src/wechaty-builder.d.ts +38 -0
- package/dist/esm/src/wechaty-builder.d.ts.map +1 -0
- package/dist/esm/src/wechaty-builder.js +95 -0
- package/dist/esm/src/wechaty-builder.js.map +1 -0
- package/dist/esm/src/wechaty-builder.spec.d.ts +22 -0
- package/dist/esm/src/wechaty-builder.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty-builder.spec.js +64 -0
- package/dist/esm/src/wechaty-builder.spec.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts +52 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.js +51 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.d.ts +3 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.js +7 -0
- package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/io-mixin.d.ts +75 -0
- package/dist/esm/src/wechaty-mixins/io-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/io-mixin.js +83 -0
- package/dist/esm/src/wechaty-mixins/io-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.d.ts +290 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.js +86 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.spec.d.ts +3 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.spec.js +7 -0
- package/dist/esm/src/wechaty-mixins/login-mixin.spec.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts +295 -0
- package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/misc-mixin.js +64 -0
- package/dist/esm/src/wechaty-mixins/misc-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/mod.d.ts +18 -0
- package/dist/esm/src/wechaty-mixins/mod.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/mod.js +9 -0
- package/dist/esm/src/wechaty-mixins/mod.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts +384 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.js +53 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.d.ts +13 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.js +58 -0
- package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts +194 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.js +399 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.d.ts +3 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.js +7 -0
- package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +61 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.js +81 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.js.map +1 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts +3 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts.map +1 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.js +7 -0
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.js.map +1 -0
- package/dist/esm/tests/electron.spec.d.ts +3 -0
- package/dist/esm/tests/electron.spec.d.ts.map +1 -0
- package/dist/esm/tests/electron.spec.js +28 -0
- package/dist/esm/tests/electron.spec.js.map +1 -0
- package/dist/esm/tests/node.spec.d.ts +3 -0
- package/dist/esm/tests/node.spec.d.ts.map +1 -0
- package/dist/esm/tests/node.spec.js +41 -0
- package/dist/esm/tests/node.spec.js.map +1 -0
- package/package.json +173 -0
- package/src/cli/friday.ts +20 -0
- package/src/cli/gateway.ts +190 -0
- package/src/cli/mod.ts +5 -0
- package/src/cli/provider.ts +20 -0
- package/src/cli/service.ts +20 -0
- package/src/cli/token.ts +19 -0
- package/src/config.spec.ts +97 -0
- package/src/config.ts +165 -0
- package/src/doctor.ts +92 -0
- package/src/helper-functions/open-graph.ts +34 -0
- package/src/helper-functions/stringify-filter.ts +13 -0
- package/src/io-client.ts +276 -0
- package/src/io-peer/io-peer.spec.ts +64 -0
- package/src/io-peer/io-peer.ts +79 -0
- package/src/io-peer/json-rpc-peer.d.ts +68 -0
- package/src/io.spec.ts +44 -0
- package/src/io.ts +585 -0
- package/src/mods/helpers.ts +5 -0
- package/src/mods/impls.spec.ts +13 -0
- package/src/mods/impls.ts +115 -0
- package/src/mods/mod.spec.ts +17 -0
- package/src/mods/mod.ts +74 -0
- package/src/mods/users.ts +44 -0
- package/src/package-json.spec.ts +18 -0
- package/src/package-json.ts +180 -0
- package/src/plugin.spec.ts +87 -0
- package/src/plugin.ts +19 -0
- package/src/puppet-config.ts +104 -0
- package/src/pure-functions/escape-regexp.ts +22 -0
- package/src/pure-functions/guard-qr-code-value.ts +27 -0
- package/src/pure-functions/is-template-string-array.spec.ts +44 -0
- package/src/pure-functions/is-template-string-array.ts +5 -0
- package/src/pure-functions/mod.ts +28 -0
- package/src/pure-functions/retry-policy.ts +45 -0
- package/src/pure-functions/timestamp-to-date.spec.ts +43 -0
- package/src/pure-functions/timestamp-to-date.ts +31 -0
- package/src/pure-functions/xml.spec.ts +116 -0
- package/src/pure-functions/xml.ts +98 -0
- package/src/raven.ts +75 -0
- package/src/sayable/deliver-sayable.ts +107 -0
- package/src/sayable/message-to-sayable.ts +57 -0
- package/src/sayable/mod.ts +27 -0
- package/src/sayable/payload-to-sayable.ts +51 -0
- package/src/sayable/sayable-to-payload.ts +54 -0
- package/src/sayable/types.ts +62 -0
- package/src/schemas/acceptable.ts +30 -0
- package/src/schemas/contact-events.ts +29 -0
- package/src/schemas/mod.ts +29 -0
- package/src/schemas/room-events.ts +128 -0
- package/src/schemas/wechaty-events.ts +251 -0
- package/src/schemas/wechaty-options.ts +40 -0
- package/src/user-mixins/mod.ts +23 -0
- package/src/user-mixins/poolify.spec.ts +110 -0
- package/src/user-mixins/poolify.ts +72 -0
- package/src/user-mixins/validation.spec.ts +87 -0
- package/src/user-mixins/validation.ts +39 -0
- package/src/user-mixins/wechatify.spec.ts +27 -0
- package/src/user-mixins/wechatify.ts +72 -0
- package/src/user-modules/contact-self.ts +217 -0
- package/src/user-modules/contact.spec.ts +91 -0
- package/src/user-modules/contact.ts +806 -0
- package/src/user-modules/delay.ts +61 -0
- package/src/user-modules/favorite.ts +89 -0
- package/src/user-modules/friendship.ts +441 -0
- package/src/user-modules/image.ts +91 -0
- package/src/user-modules/location.ts +103 -0
- package/src/user-modules/message.spec.ts +124 -0
- package/src/user-modules/message.ts +1109 -0
- package/src/user-modules/mini-program.ts +111 -0
- package/src/user-modules/mod.ts +160 -0
- package/src/user-modules/moment.ts +64 -0
- package/src/user-modules/money.ts +49 -0
- package/src/user-modules/post.spec.ts +77 -0
- package/src/user-modules/post.ts +549 -0
- package/src/user-modules/room-invitation.ts +291 -0
- package/src/user-modules/room.spec.ts +170 -0
- package/src/user-modules/room.ts +1158 -0
- package/src/user-modules/tag.ts +202 -0
- package/src/user-modules/url-link.spec.ts +35 -0
- package/src/user-modules/url-link.ts +145 -0
- package/src/wechaty/mod.ts +18 -0
- package/src/wechaty/wechaty-base.spec.ts +392 -0
- package/src/wechaty/wechaty-base.ts +307 -0
- package/src/wechaty/wechaty-impl.spec.ts +118 -0
- package/src/wechaty/wechaty-impl.ts +65 -0
- package/src/wechaty/wechaty-skeleton.ts +129 -0
- package/src/wechaty/wechaty-skelton.spec.ts +18 -0
- package/src/wechaty-builder.spec.ts +79 -0
- package/src/wechaty-builder.ts +123 -0
- package/src/wechaty-mixins/gerror-mixin.spec.ts +15 -0
- package/src/wechaty-mixins/gerror-mixin.ts +78 -0
- package/src/wechaty-mixins/io-mixin.ts +117 -0
- package/src/wechaty-mixins/login-mixin.spec.ts +15 -0
- package/src/wechaty-mixins/login-mixin.ts +124 -0
- package/src/wechaty-mixins/misc-mixin.ts +93 -0
- package/src/wechaty-mixins/mod.ts +84 -0
- package/src/wechaty-mixins/plugin-mixin.spec.ts +98 -0
- package/src/wechaty-mixins/plugin-mixin.ts +99 -0
- package/src/wechaty-mixins/puppet-mixin.spec.ts +15 -0
- package/src/wechaty-mixins/puppet-mixin.ts +501 -0
- package/src/wechaty-mixins/wechatify-user-module-mixin.spec.ts +18 -0
- package/src/wechaty-mixins/wechatify-user-module-mixin.ts +151 -0
|
@@ -0,0 +1,929 @@
|
|
|
1
|
+
import { concurrencyExecuter } from 'rx-queue';
|
|
2
|
+
import { FOUR_PER_EM_SPACE, log, } from '../config.js';
|
|
3
|
+
import { wechatyCaptureException, } from '../raven.js';
|
|
4
|
+
import { guardQrCodeValue, } from '../pure-functions/guard-qr-code-value.js';
|
|
5
|
+
import { isTemplateStringArray, } from '../pure-functions/is-template-string-array.js';
|
|
6
|
+
import { RoomEventEmitter } from '../schemas/mod.js';
|
|
7
|
+
import { poolifyMixin, wechatifyMixin, validationMixin, } from '../user-mixins/mod.js';
|
|
8
|
+
import { deliverSayableConversationPuppet, } from '../sayable/mod.js';
|
|
9
|
+
import { stringifyFilter } from '../helper-functions/stringify-filter.js';
|
|
10
|
+
import { ContactImpl, } from './contact.js';
|
|
11
|
+
const MixinBase = wechatifyMixin(poolifyMixin(RoomEventEmitter)());
|
|
12
|
+
/**
|
|
13
|
+
* All WeChat rooms(groups) will be encapsulated as a Room.
|
|
14
|
+
*
|
|
15
|
+
* [Examples/Room-Bot]{@link https://github.com/wechaty/wechaty/blob/1523c5e02be46ebe2cc172a744b2fbe53351540e/examples/room-bot.ts}
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
class RoomMixin extends MixinBase {
|
|
19
|
+
id;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new room.
|
|
22
|
+
*
|
|
23
|
+
* @static
|
|
24
|
+
* @param {ContactInterface[]} contactList
|
|
25
|
+
* @param {string} [topic]
|
|
26
|
+
* @returns {Promise<RoomInterface>}
|
|
27
|
+
* @example <caption>Creat a room with 'lijiarui' and 'huan', the room topic is 'ding - created'</caption>
|
|
28
|
+
* const helperContactA = await Contact.find({ name: 'lijiarui' }) // change 'lijiarui' to any contact in your WeChat
|
|
29
|
+
* const helperContactB = await Contact.find({ name: 'huan' }) // change 'huan' to any contact in your WeChat
|
|
30
|
+
* const contactList = [helperContactA, helperContactB]
|
|
31
|
+
* console.log('Bot', 'contactList: %s', contactList.join(','))
|
|
32
|
+
* const room = await Room.create(contactList, 'ding')
|
|
33
|
+
* console.log('Bot', 'createDingRoom() new ding room created: %s', room)
|
|
34
|
+
* await room.topic('ding - created')
|
|
35
|
+
* await room.say('ding - created')
|
|
36
|
+
*/
|
|
37
|
+
static async create(contactList, topic) {
|
|
38
|
+
log.verbose('Room', 'create(%s, %s)', contactList.join(','), topic);
|
|
39
|
+
if (contactList.length < 2) {
|
|
40
|
+
throw new Error('contactList need at least 2 contact to create a new room');
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const contactIdList = contactList.map(contact => contact.id);
|
|
44
|
+
const roomId = await this.wechaty.puppet.roomCreate(contactIdList, topic);
|
|
45
|
+
const room = this.load(roomId);
|
|
46
|
+
return room;
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
this.wechaty.emitError(e);
|
|
50
|
+
log.error('Room', 'create() exception: %s', (e && e.stack) || e.message || e);
|
|
51
|
+
throw e;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The filter to find the room: {topic: string | RegExp}
|
|
56
|
+
*
|
|
57
|
+
* @typedef RoomQueryFilter
|
|
58
|
+
* @property {string} topic
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* Find room by filter: {topic: string | RegExp}, return all the matched room.
|
|
62
|
+
*
|
|
63
|
+
* NOTE: The returned list would be limited by the underlying puppet
|
|
64
|
+
* implementation of `puppet.roomList`. Some implementation (i.e.
|
|
65
|
+
* wechaty-puppet-wechat) would only return rooms which have received messges
|
|
66
|
+
* after a log-in.
|
|
67
|
+
*
|
|
68
|
+
* @static
|
|
69
|
+
* @param {RoomQueryFilter} [query]
|
|
70
|
+
* @returns {Promise<RoomInterface[]>}
|
|
71
|
+
* @example
|
|
72
|
+
* const bot = new Wechaty()
|
|
73
|
+
* await bot.start()
|
|
74
|
+
* // after logged in
|
|
75
|
+
* const roomList = await bot.Room.findAll() // get the room list of the bot
|
|
76
|
+
* const roomList = await bot.Room.findAll({topic: 'wechaty'}) // find all of the rooms with name 'wechaty'
|
|
77
|
+
*/
|
|
78
|
+
static async findAll(query) {
|
|
79
|
+
log.verbose('Room', 'findAll(%s)', JSON.stringify(query, stringifyFilter) || '');
|
|
80
|
+
try {
|
|
81
|
+
const roomIdList = await this.wechaty.puppet.roomSearch(query);
|
|
82
|
+
const idToRoom = async (id) => this.wechaty.Room.find({ id })
|
|
83
|
+
.catch(e => this.wechaty.emitError(e));
|
|
84
|
+
/**
|
|
85
|
+
* we need to use concurrencyExecuter to reduce the parallel number of the requests
|
|
86
|
+
*/
|
|
87
|
+
const CONCURRENCY = 17;
|
|
88
|
+
const roomIterator = concurrencyExecuter(CONCURRENCY)(idToRoom)(roomIdList);
|
|
89
|
+
const roomList = [];
|
|
90
|
+
for await (const room of roomIterator) {
|
|
91
|
+
if (room) {
|
|
92
|
+
roomList.push(room);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return roomList;
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
this.wechaty.emitError(e);
|
|
99
|
+
log.verbose('Room', 'findAll() rejected: %s', e.message);
|
|
100
|
+
return []; // fail safe
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Try to find a room by filter: {topic: string | RegExp}. If get many, return the first one.
|
|
105
|
+
*
|
|
106
|
+
* NOTE: The search space is limited by the underlying puppet
|
|
107
|
+
* implementation of `puppet.roomList`. Some implementation (i.e.
|
|
108
|
+
* wechaty-puppet-wechat) would only return rooms which have received messges
|
|
109
|
+
* after a log-in.
|
|
110
|
+
*
|
|
111
|
+
* @param {RoomQueryFilter} query
|
|
112
|
+
* @returns {Promise<undefined | RoomInterface>} If can find the room, return Room, or return null
|
|
113
|
+
* @example
|
|
114
|
+
* const bot = new Wechaty()
|
|
115
|
+
* await bot.start()
|
|
116
|
+
* // after logged in...
|
|
117
|
+
* const roomList = await bot.Room.find()
|
|
118
|
+
* const roomList = await bot.Room.find({topic: 'wechaty'})
|
|
119
|
+
*/
|
|
120
|
+
static async find(query) {
|
|
121
|
+
log.silly('Room', 'find(%s)', JSON.stringify(query, stringifyFilter));
|
|
122
|
+
if (typeof query === 'string') {
|
|
123
|
+
query = { topic: query };
|
|
124
|
+
}
|
|
125
|
+
if (query.id) {
|
|
126
|
+
const room = this.wechaty.Room.load(query.id);
|
|
127
|
+
try {
|
|
128
|
+
await room.ready();
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
this.wechaty.emitError(e);
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
return room;
|
|
135
|
+
}
|
|
136
|
+
const roomList = await this.findAll(query);
|
|
137
|
+
// if (!roomList) {
|
|
138
|
+
// return null
|
|
139
|
+
// }
|
|
140
|
+
if (roomList.length < 1) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
if (roomList.length > 1) {
|
|
144
|
+
log.warn('Room', 'find() got more than one(%d) result', roomList.length);
|
|
145
|
+
}
|
|
146
|
+
for (const [idx, room] of roomList.entries()) {
|
|
147
|
+
// use puppet.roomValidate() to confirm double confirm that this roomId is valid.
|
|
148
|
+
// https://github.com/wechaty/wechaty-puppet-padchat/issues/64
|
|
149
|
+
// https://github.com/wechaty/wechaty/issues/1345
|
|
150
|
+
const valid = await this.wechaty.puppet.roomValidate(room.id);
|
|
151
|
+
if (valid) {
|
|
152
|
+
log.verbose('Room', 'find() room<id=%s> is valid: return it', idx, room.id);
|
|
153
|
+
return room;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
log.verbose('Room', 'find() room<id=%s> is invalid: skip it', idx, room.id);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
log.warn('Room', 'find() all %d rooms are invalid', roomList.length);
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
/** const roomList: RoomInterface[] = []
|
|
163
|
+
|
|
164
|
+
* @ignore
|
|
165
|
+
*
|
|
166
|
+
* Instance Properties
|
|
167
|
+
*
|
|
168
|
+
*
|
|
169
|
+
*/
|
|
170
|
+
payload;
|
|
171
|
+
/**
|
|
172
|
+
* @hideconstructor
|
|
173
|
+
* @property {string} id - Room id.
|
|
174
|
+
* This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
175
|
+
*/
|
|
176
|
+
constructor(id) {
|
|
177
|
+
super();
|
|
178
|
+
this.id = id;
|
|
179
|
+
log.silly('Room', `constructor(${id})`);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @ignore
|
|
183
|
+
*/
|
|
184
|
+
toString() {
|
|
185
|
+
if (!this.payload) {
|
|
186
|
+
return this.constructor.name;
|
|
187
|
+
}
|
|
188
|
+
return `Room<${this.payload.topic || 'loading...'}>`;
|
|
189
|
+
}
|
|
190
|
+
async *[Symbol.asyncIterator]() {
|
|
191
|
+
const memberList = await this.memberList();
|
|
192
|
+
for (const contact of memberList) {
|
|
193
|
+
yield contact;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Proposal: add a handle field to RoomPayload #181
|
|
198
|
+
* @link https://github.com/wechaty/puppet/issues/181
|
|
199
|
+
*/
|
|
200
|
+
handle() {
|
|
201
|
+
return this.payload?.handle;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Force reload data for Room, Sync data from puppet API again.
|
|
205
|
+
*
|
|
206
|
+
* @returns {Promise<void>}
|
|
207
|
+
* @example
|
|
208
|
+
* await room.sync()
|
|
209
|
+
*/
|
|
210
|
+
async sync() {
|
|
211
|
+
await this.wechaty.puppet.roomPayloadDirty(this.id);
|
|
212
|
+
await this.wechaty.puppet.roomMemberPayloadDirty(this.id);
|
|
213
|
+
await this.ready(true);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Warning: `ready()` is for the framework internally use ONLY!
|
|
217
|
+
*
|
|
218
|
+
* Please not to use `ready()` at the user land.
|
|
219
|
+
* If you want to sync data, use `sync()` instead.
|
|
220
|
+
*
|
|
221
|
+
* @ignore
|
|
222
|
+
*/
|
|
223
|
+
async ready(forceSync = false) {
|
|
224
|
+
log.silly('Room', 'ready()');
|
|
225
|
+
if (!forceSync && this.isReady()) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
this.payload = await this.wechaty.puppet.roomPayload(this.id);
|
|
229
|
+
/**
|
|
230
|
+
* Sync all room member contacts
|
|
231
|
+
*/
|
|
232
|
+
const memberIdList = await this.wechaty.puppet.roomMemberList(this.id);
|
|
233
|
+
const doReady = async (id) => {
|
|
234
|
+
try {
|
|
235
|
+
await this.wechaty.Contact.find({ id });
|
|
236
|
+
}
|
|
237
|
+
catch (e) {
|
|
238
|
+
this.wechaty.emitError(e);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* we need to use concurrencyExecuter to reduce the parallel number of the requests
|
|
243
|
+
*/
|
|
244
|
+
const CONCURRENCY = 17;
|
|
245
|
+
const contactIterator = concurrencyExecuter(CONCURRENCY)(doReady)(memberIdList);
|
|
246
|
+
for await (const contact of contactIterator) {
|
|
247
|
+
void contact; // just a empty loop to wait all iterator finished
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* @ignore
|
|
252
|
+
*/
|
|
253
|
+
isReady() {
|
|
254
|
+
return !!(this.payload);
|
|
255
|
+
}
|
|
256
|
+
// Huan(202006): allow fall down to the defination to get more flexibility.
|
|
257
|
+
// public say (...args: never[]): never
|
|
258
|
+
/**
|
|
259
|
+
* Send message inside Room, if set [replyTo], wechaty will mention the contact as well.
|
|
260
|
+
* > Tips:
|
|
261
|
+
* This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
262
|
+
*
|
|
263
|
+
* @param {(string | ContactInterface | FileBox)} textOrContactOrFileOrUrlOrMini - Send `text` or `media file` inside Room. <br>
|
|
264
|
+
* You can use {@link https://www.npmjs.com/package/file-box|FileBox} to send file
|
|
265
|
+
* @param {(ContactInterface | ContactInterface[])} [mention] - Optional parameter, send content inside Room, and mention @replyTo contact or contactList.
|
|
266
|
+
* @returns {Promise<void | MessageInterface>}
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* const bot = new Wechaty()
|
|
270
|
+
* await bot.start()
|
|
271
|
+
* // after logged in...
|
|
272
|
+
* const room = await bot.Room.find({topic: 'wechaty'})
|
|
273
|
+
*
|
|
274
|
+
* // 1. Send text inside Room
|
|
275
|
+
*
|
|
276
|
+
* await room.say('Hello world!')
|
|
277
|
+
* const msg = await room.say('Hello world!') // only supported by puppet-padplus
|
|
278
|
+
*
|
|
279
|
+
* // 2. Send media file inside Room
|
|
280
|
+
* import { FileBox } from 'wechaty'
|
|
281
|
+
* const fileBox1 = FileBox.fromUrl('https://wechaty.github.io/wechaty/images/bot-qr-code.png')
|
|
282
|
+
* const fileBox2 = FileBox.fromLocal('/tmp/text.txt')
|
|
283
|
+
* await room.say(fileBox1)
|
|
284
|
+
* const msg1 = await room.say(fileBox1) // only supported by puppet-padplus
|
|
285
|
+
* await room.say(fileBox2)
|
|
286
|
+
* const msg2 = await room.say(fileBox2) // only supported by puppet-padplus
|
|
287
|
+
*
|
|
288
|
+
* // 3. Send Contact Card in a room
|
|
289
|
+
* const contactCard = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any of the room member
|
|
290
|
+
* await room.say(contactCard)
|
|
291
|
+
* const msg = await room.say(contactCard) // only supported by puppet-padplus
|
|
292
|
+
*
|
|
293
|
+
* // 4. Send text inside room and mention @mention contact
|
|
294
|
+
* const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any of the room member
|
|
295
|
+
* await room.say('Hello world!', contact)
|
|
296
|
+
* const msg = await room.say('Hello world!', contact) // only supported by puppet-padplus
|
|
297
|
+
*
|
|
298
|
+
* // 5. Send text inside room and mention someone with Tagged Template
|
|
299
|
+
* const contact2 = await bot.Contact.find({name: 'zixia'}) // change 'zixia' to any of the room member
|
|
300
|
+
* await room.say`Hello ${contact}, here is the world ${contact2}`
|
|
301
|
+
* const msg = await room.say`Hello ${contact}, here is the world ${contact2}` // only supported by puppet-padplus
|
|
302
|
+
*
|
|
303
|
+
* // 6. send url link in a room
|
|
304
|
+
*
|
|
305
|
+
* const urlLink = new UrlLink ({
|
|
306
|
+
* description : 'WeChat Bot SDK for Individual Account, Powered by TypeScript, Docker, and Love',
|
|
307
|
+
* thumbnailUrl: 'https://avatars0.githubusercontent.com/u/25162437?s=200&v=4',
|
|
308
|
+
* title : 'Welcome to Wechaty',
|
|
309
|
+
* url : 'https://github.com/wechaty/wechaty',
|
|
310
|
+
* })
|
|
311
|
+
* await room.say(urlLink)
|
|
312
|
+
* const msg = await room.say(urlLink) // only supported by puppet-padplus
|
|
313
|
+
*
|
|
314
|
+
* // 7. send mini program in a room
|
|
315
|
+
*
|
|
316
|
+
* const miniProgram = new MiniProgram ({
|
|
317
|
+
* username : 'gh_xxxxxxx', //get from mp.weixin.qq.com
|
|
318
|
+
* appid : '', //optional, get from mp.weixin.qq.com
|
|
319
|
+
* title : '', //optional
|
|
320
|
+
* pagepath : '', //optional
|
|
321
|
+
* description : '', //optional
|
|
322
|
+
* thumbnailurl : '', //optional
|
|
323
|
+
* })
|
|
324
|
+
* await room.say(miniProgram)
|
|
325
|
+
* const msg = await room.say(miniProgram) // only supported by puppet-padplus
|
|
326
|
+
*
|
|
327
|
+
* // 8. send location in a room
|
|
328
|
+
* const location = new Location ({
|
|
329
|
+
* accuracy : 15,
|
|
330
|
+
* address : '北京市北京市海淀区45 Chengfu Rd',
|
|
331
|
+
* latitude : 39.995120999999997,
|
|
332
|
+
* longitude : 116.334154,
|
|
333
|
+
* name : '东升乡人民政府(海淀区成府路45号)',
|
|
334
|
+
* })
|
|
335
|
+
* await room.say(location)
|
|
336
|
+
* const msg = await room.say(location)
|
|
337
|
+
*/
|
|
338
|
+
async say(sayable, ...varList) {
|
|
339
|
+
log.verbose('Room', 'say(%s, %s)', sayable, varList.join(', '));
|
|
340
|
+
let msgId;
|
|
341
|
+
let text;
|
|
342
|
+
if (isTemplateStringArray(sayable)) {
|
|
343
|
+
msgId = await this.sayTemplateStringsArray(sayable, ...varList);
|
|
344
|
+
}
|
|
345
|
+
else if (typeof sayable === 'string') {
|
|
346
|
+
/**
|
|
347
|
+
* 1. string
|
|
348
|
+
*/
|
|
349
|
+
let mentionList = [];
|
|
350
|
+
if (varList.length > 0) {
|
|
351
|
+
const allIsContact = varList.every(c => ContactImpl.valid(c));
|
|
352
|
+
if (!allIsContact) {
|
|
353
|
+
throw new Error('mentionList must be contact when not using TemplateStringsArray function call.');
|
|
354
|
+
}
|
|
355
|
+
mentionList = [...varList];
|
|
356
|
+
const AT_SEPARATOR = FOUR_PER_EM_SPACE;
|
|
357
|
+
const mentionAlias = await Promise.all(mentionList.map(async (contact) => '@' + (await this.alias(contact) || contact.name())));
|
|
358
|
+
const mentionText = mentionAlias.join(AT_SEPARATOR);
|
|
359
|
+
text = mentionText + ' ' + sayable;
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
text = sayable;
|
|
363
|
+
}
|
|
364
|
+
// const receiver = {
|
|
365
|
+
// contactId : (mentionList.length && mentionList[0].id) || undefined,
|
|
366
|
+
// roomId : this.id,
|
|
367
|
+
// }
|
|
368
|
+
msgId = await this.wechaty.puppet.messageSendText(this.id, text, mentionList.map(c => c.id));
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
msgId = await deliverSayableConversationPuppet(this.wechaty.puppet)(this.id)(sayable);
|
|
372
|
+
}
|
|
373
|
+
if (msgId) {
|
|
374
|
+
const msg = await this.wechaty.Message.find({ id: msgId });
|
|
375
|
+
return msg;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
async sayTemplateStringsArray(textList, ...varList) {
|
|
379
|
+
const mentionList = varList.filter(c => ContactImpl.valid(c));
|
|
380
|
+
// const receiver = {
|
|
381
|
+
// contactId : (mentionList.length && mentionList[0].id) || undefined,
|
|
382
|
+
// roomId : this.id,
|
|
383
|
+
// }
|
|
384
|
+
if (varList.length === 0) {
|
|
385
|
+
/**
|
|
386
|
+
* No mention in the string
|
|
387
|
+
*/
|
|
388
|
+
return this.wechaty.puppet.messageSendText(this.id, textList[0]);
|
|
389
|
+
// TODO(huan) 20191222 it seems the following code will not happen,
|
|
390
|
+
// because it's equal the mentionList.length === 0 situation?
|
|
391
|
+
//
|
|
392
|
+
// XXX(huan) 20200101: See issue https://github.com/wechaty/wechaty/issues/1893
|
|
393
|
+
// This is an anti-pattern usage.
|
|
394
|
+
//
|
|
395
|
+
// } else if (textList.length === 1) {
|
|
396
|
+
// /**
|
|
397
|
+
// * Constructed mention string, skip inserting @ signs
|
|
398
|
+
// */
|
|
399
|
+
// return this.wechaty.puppet.messageSendText(
|
|
400
|
+
// receiver,
|
|
401
|
+
// textList[0],
|
|
402
|
+
// mentionList.map(c => c.id),
|
|
403
|
+
// )
|
|
404
|
+
}
|
|
405
|
+
else { // mentionList.length > 0
|
|
406
|
+
/**
|
|
407
|
+
* Mention in the string
|
|
408
|
+
*/
|
|
409
|
+
const textListLength = textList.length;
|
|
410
|
+
const varListLength = varList.length;
|
|
411
|
+
if (textListLength - varListLength !== 1) {
|
|
412
|
+
throw new Error('Can not say message, invalid Template String Array.');
|
|
413
|
+
}
|
|
414
|
+
let finalText = '';
|
|
415
|
+
let i = 0;
|
|
416
|
+
for (; i < varListLength; i++) {
|
|
417
|
+
if (ContactImpl.valid(varList[i])) {
|
|
418
|
+
const mentionContact = varList[i];
|
|
419
|
+
const mentionName = await this.alias(mentionContact) || mentionContact.name();
|
|
420
|
+
finalText += textList[i] + '@' + mentionName;
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
finalText += textList[i] + varList[i];
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
finalText += textList[i];
|
|
427
|
+
return this.wechaty.puppet.messageSendText(this.id, finalText, mentionList.map(c => c.id));
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* @desc Room Class Event Type
|
|
432
|
+
* @typedef RoomEventName
|
|
433
|
+
* @property {string} join - Emit when anyone join any room.
|
|
434
|
+
* @property {string} topic - Get topic event, emitted when someone change room topic.
|
|
435
|
+
* @property {string} leave - Emit when anyone leave the room.<br>
|
|
436
|
+
* If someone leaves the room by themselves, WeChat will not notice other people in the room, so the bot will never get the "leave" event.
|
|
437
|
+
*/
|
|
438
|
+
/**
|
|
439
|
+
* @desc Room Class Event Function
|
|
440
|
+
* @typedef RoomEventFunction
|
|
441
|
+
* @property {Function} room-join - (this: Room, inviteeList: Contact[] , inviter: Contact) => void
|
|
442
|
+
* @property {Function} room-topic - (this: Room, topic: string, oldTopic: string, changer: Contact) => void
|
|
443
|
+
* @property {Function} room-leave - (this: Room, leaver: Contact) => void
|
|
444
|
+
*/
|
|
445
|
+
/**
|
|
446
|
+
* @listens Room
|
|
447
|
+
* @param {RoomEventName} event - Emit WechatyEvent
|
|
448
|
+
* @param {RoomEventFunction} listener - Depends on the WechatyEvent
|
|
449
|
+
* @return {this} - this for chain
|
|
450
|
+
*
|
|
451
|
+
* @example <caption>Event:join </caption>
|
|
452
|
+
* const bot = new Wechaty()
|
|
453
|
+
* await bot.start()
|
|
454
|
+
* // after logged in...
|
|
455
|
+
* const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your WeChat
|
|
456
|
+
* if (room) {
|
|
457
|
+
* room.on('join', (room, inviteeList, inviter) => {
|
|
458
|
+
* const nameList = inviteeList.map(c => c.name()).join(',')
|
|
459
|
+
* console.log(`Room got new member ${nameList}, invited by ${inviter}`)
|
|
460
|
+
* })
|
|
461
|
+
* }
|
|
462
|
+
*
|
|
463
|
+
* @example <caption>Event:leave </caption>
|
|
464
|
+
* const bot = new Wechaty()
|
|
465
|
+
* await bot.start()
|
|
466
|
+
* // after logged in...
|
|
467
|
+
* const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your WeChat
|
|
468
|
+
* if (room) {
|
|
469
|
+
* room.on('leave', (room, leaverList) => {
|
|
470
|
+
* const nameList = leaverList.map(c => c.name()).join(',')
|
|
471
|
+
* console.log(`Room lost member ${nameList}`)
|
|
472
|
+
* })
|
|
473
|
+
* }
|
|
474
|
+
*
|
|
475
|
+
* @example <caption>Event:message </caption>
|
|
476
|
+
* const bot = new Wechaty()
|
|
477
|
+
* await bot.start()
|
|
478
|
+
* // after logged in...
|
|
479
|
+
* const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your WeChat
|
|
480
|
+
* if (room) {
|
|
481
|
+
* room.on('message', (message) => {
|
|
482
|
+
* console.log(`Room received new message: ${message}`)
|
|
483
|
+
* })
|
|
484
|
+
* }
|
|
485
|
+
*
|
|
486
|
+
* @example <caption>Event:topic </caption>
|
|
487
|
+
* const bot = new Wechaty()
|
|
488
|
+
* await bot.start()
|
|
489
|
+
* // after logged in...
|
|
490
|
+
* const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your WeChat
|
|
491
|
+
* if (room) {
|
|
492
|
+
* room.on('topic', (room, topic, oldTopic, changer) => {
|
|
493
|
+
* console.log(`Room topic changed from ${oldTopic} to ${topic} by ${changer.name()}`)
|
|
494
|
+
* })
|
|
495
|
+
* }
|
|
496
|
+
*
|
|
497
|
+
* @example <caption>Event:invite </caption>
|
|
498
|
+
* const bot = new Wechaty()
|
|
499
|
+
* await bot.start()
|
|
500
|
+
* // after logged in...
|
|
501
|
+
* const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your WeChat
|
|
502
|
+
* if (room) {
|
|
503
|
+
* room.on('invite', roomInvitation => roomInvitation.accept())
|
|
504
|
+
* }
|
|
505
|
+
*
|
|
506
|
+
*/
|
|
507
|
+
// public on (event: RoomEventName, listener: (...args: any[]) => any): this {
|
|
508
|
+
// log.verbose('Room', 'on(%s, %s)', event, typeof listener)
|
|
509
|
+
// super.on(event, listener) // Room is `Sayable`
|
|
510
|
+
// return this
|
|
511
|
+
// }
|
|
512
|
+
/**
|
|
513
|
+
* Add contact in a room
|
|
514
|
+
*
|
|
515
|
+
* > Tips:
|
|
516
|
+
* This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
517
|
+
* >
|
|
518
|
+
* > see {@link https://github.com/wechaty/wechaty/issues/1441|Web version of WeChat closed group interface}
|
|
519
|
+
*
|
|
520
|
+
* @param {ContactInterface} contact
|
|
521
|
+
* @returns {Promise<void>}
|
|
522
|
+
* @example
|
|
523
|
+
* const bot = new Wechaty()
|
|
524
|
+
* await bot.start()
|
|
525
|
+
* // after logged in...
|
|
526
|
+
* const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any contact in your WeChat
|
|
527
|
+
* const room = await bot.Room.find({topic: 'WeChat'}) // change 'WeChat' to any room topic in your WeChat
|
|
528
|
+
* if (room) {
|
|
529
|
+
* try {
|
|
530
|
+
* await room.add(contact)
|
|
531
|
+
* } catch(e) {
|
|
532
|
+
* console.error(e)
|
|
533
|
+
* }
|
|
534
|
+
* }
|
|
535
|
+
*/
|
|
536
|
+
async add(contact) {
|
|
537
|
+
log.verbose('Room', 'add(%s)', contact);
|
|
538
|
+
await this.wechaty.puppet.roomAdd(this.id, contact.id);
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Remove a contact from the room
|
|
542
|
+
* It works only when the bot is the owner of the room
|
|
543
|
+
*
|
|
544
|
+
* > Tips:
|
|
545
|
+
* This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
546
|
+
* >
|
|
547
|
+
* > see {@link https://github.com/wechaty/wechaty/issues/1441|Web version of WeChat closed group interface}
|
|
548
|
+
*
|
|
549
|
+
* @param {ContactInterface} contact
|
|
550
|
+
* @returns {Promise<void>}
|
|
551
|
+
* @example
|
|
552
|
+
* const bot = new Wechaty()
|
|
553
|
+
* await bot.start()
|
|
554
|
+
* // after logged in...
|
|
555
|
+
* const room = await bot.Room.find({topic: 'WeChat'}) // change 'WeChat' to any room topic in your WeChat
|
|
556
|
+
* const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any room member in the room you just set
|
|
557
|
+
* if (room) {
|
|
558
|
+
* try {
|
|
559
|
+
* await room.remove(contact)
|
|
560
|
+
* } catch(e) {
|
|
561
|
+
* console.error(e)
|
|
562
|
+
* }
|
|
563
|
+
* }
|
|
564
|
+
*/
|
|
565
|
+
async remove(contact) {
|
|
566
|
+
log.verbose('Room', 'del(%s)', contact);
|
|
567
|
+
await this.wechaty.puppet.roomDel(this.id, contact.id);
|
|
568
|
+
// this.delLocal(contact)
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Huan(202106): will be removed after Dec 31, 2023
|
|
572
|
+
* @deprecated use remove(contact) instead.
|
|
573
|
+
*/
|
|
574
|
+
async del(contact) {
|
|
575
|
+
log.warn('Room', 'del() is DEPRECATED, use remove() instead.\n%s', new Error().stack);
|
|
576
|
+
return this.remove(contact);
|
|
577
|
+
}
|
|
578
|
+
// private delLocal(contact: Contact): void {
|
|
579
|
+
// log.verbose('Room', 'delLocal(%s)', contact)
|
|
580
|
+
// const memberIdList = this.payload && this.payload.memberIdList
|
|
581
|
+
// if (memberIdList && memberIdList.length > 0) {
|
|
582
|
+
// for (let i = 0; i < memberIdList.length; i++) {
|
|
583
|
+
// if (memberIdList[i] === contact.id) {
|
|
584
|
+
// memberIdList.splice(i, 1)
|
|
585
|
+
// break
|
|
586
|
+
// }
|
|
587
|
+
// }
|
|
588
|
+
// }
|
|
589
|
+
// }
|
|
590
|
+
/**
|
|
591
|
+
* Bot quit the room itself
|
|
592
|
+
*
|
|
593
|
+
* > Tips:
|
|
594
|
+
* This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
595
|
+
*
|
|
596
|
+
* @returns {Promise<void>}
|
|
597
|
+
* @example
|
|
598
|
+
* await room.quit()
|
|
599
|
+
*/
|
|
600
|
+
async quit() {
|
|
601
|
+
log.verbose('Room', 'quit() %s', this);
|
|
602
|
+
await this.wechaty.puppet.roomQuit(this.id);
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* SET/GET topic from the room
|
|
606
|
+
*
|
|
607
|
+
* @param {string} [newTopic] If set this para, it will change room topic.
|
|
608
|
+
* @returns {Promise<string | void>}
|
|
609
|
+
*
|
|
610
|
+
* @example <caption>When you say anything in a room, it will get room topic. </caption>
|
|
611
|
+
* const bot = new Wechaty()
|
|
612
|
+
* bot
|
|
613
|
+
* .on('message', async m => {
|
|
614
|
+
* const room = m.room()
|
|
615
|
+
* if (room) {
|
|
616
|
+
* const topic = await room.topic()
|
|
617
|
+
* console.log(`room topic is : ${topic}`)
|
|
618
|
+
* }
|
|
619
|
+
* })
|
|
620
|
+
* .start()
|
|
621
|
+
*
|
|
622
|
+
* @example <caption>When you say anything in a room, it will change room topic. </caption>
|
|
623
|
+
* const bot = new Wechaty()
|
|
624
|
+
* bot
|
|
625
|
+
* .on('message', async m => {
|
|
626
|
+
* const room = m.room()
|
|
627
|
+
* if (room) {
|
|
628
|
+
* const oldTopic = await room.topic()
|
|
629
|
+
* await room.topic('change topic to wechaty!')
|
|
630
|
+
* console.log(`room topic change from ${oldTopic} to ${room.topic()}`)
|
|
631
|
+
* }
|
|
632
|
+
* })
|
|
633
|
+
* .start()
|
|
634
|
+
*/
|
|
635
|
+
async topic(newTopic) {
|
|
636
|
+
log.verbose('Room', 'topic(%s)', newTopic || '');
|
|
637
|
+
if (!this.isReady()) {
|
|
638
|
+
log.warn('Room', 'topic() room not ready');
|
|
639
|
+
throw new Error('not ready');
|
|
640
|
+
}
|
|
641
|
+
if (typeof newTopic === 'undefined') {
|
|
642
|
+
if (this.payload && this.payload.topic) {
|
|
643
|
+
return this.payload.topic;
|
|
644
|
+
}
|
|
645
|
+
else {
|
|
646
|
+
const memberIdList = await this.wechaty.puppet.roomMemberList(this.id);
|
|
647
|
+
const memberListFuture = memberIdList
|
|
648
|
+
.filter(id => id !== this.wechaty.puppet.currentUserId)
|
|
649
|
+
.map(id => this.wechaty.Contact.find({ id }));
|
|
650
|
+
const memberList = (await Promise.all(memberListFuture))
|
|
651
|
+
.filter(Boolean);
|
|
652
|
+
let defaultTopic = (memberList[0] && memberList[0].name()) || '';
|
|
653
|
+
for (let i = 1; i < 3 && memberList[i]; i++) {
|
|
654
|
+
defaultTopic += ',' + memberList[i].name();
|
|
655
|
+
}
|
|
656
|
+
return defaultTopic;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
const future = this.wechaty.puppet
|
|
660
|
+
.roomTopic(this.id, newTopic)
|
|
661
|
+
.catch(e => {
|
|
662
|
+
log.warn('Room', 'topic(newTopic=%s) exception: %s', newTopic, (e && e.message) || e);
|
|
663
|
+
wechatyCaptureException(e);
|
|
664
|
+
});
|
|
665
|
+
return future;
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* SET/GET announce from the room
|
|
669
|
+
* > Tips: It only works when bot is the owner of the room.
|
|
670
|
+
* >
|
|
671
|
+
* > This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
672
|
+
*
|
|
673
|
+
* @param {string} [text] If set this para, it will change room announce.
|
|
674
|
+
* @returns {(Promise<void | string>)}
|
|
675
|
+
*
|
|
676
|
+
* @example <caption>When you say anything in a room, it will get room announce. </caption>
|
|
677
|
+
* const bot = new Wechaty()
|
|
678
|
+
* await bot.start()
|
|
679
|
+
* // after logged in...
|
|
680
|
+
* const room = await bot.Room.find({topic: 'your room'})
|
|
681
|
+
* const announce = await room.announce()
|
|
682
|
+
* console.log(`room announce is : ${announce}`)
|
|
683
|
+
*
|
|
684
|
+
* @example <caption>When you say anything in a room, it will change room announce. </caption>
|
|
685
|
+
* const bot = new Wechaty()
|
|
686
|
+
* await bot.start()
|
|
687
|
+
* // after logged in...
|
|
688
|
+
* const room = await bot.Room.find({topic: 'your room'})
|
|
689
|
+
* const oldAnnounce = await room.announce()
|
|
690
|
+
* await room.announce('change announce to wechaty!')
|
|
691
|
+
* console.log(`room announce change from ${oldAnnounce} to ${room.announce()}`)
|
|
692
|
+
*/
|
|
693
|
+
async announce(text) {
|
|
694
|
+
log.verbose('Room', 'announce(%s)', typeof text === 'undefined'
|
|
695
|
+
? ''
|
|
696
|
+
: `"${text || ''}"`);
|
|
697
|
+
if (typeof text === 'undefined') {
|
|
698
|
+
const announcement = await this.wechaty.puppet.roomAnnounce(this.id);
|
|
699
|
+
return announcement;
|
|
700
|
+
}
|
|
701
|
+
else {
|
|
702
|
+
await this.wechaty.puppet.roomAnnounce(this.id, text);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* Get QR Code Value of the Room from the room, which can be used as scan and join the room.
|
|
707
|
+
* > Tips:
|
|
708
|
+
* 1. This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
709
|
+
* 2. The return should be the QR Code Data, instead of the QR Code Image. (the data should be less than 8KB. See: https://stackoverflow.com/a/12764370/1123955 )
|
|
710
|
+
* @returns {Promise<string>}
|
|
711
|
+
*/
|
|
712
|
+
async qrCode() {
|
|
713
|
+
log.verbose('Room', 'qrCode()');
|
|
714
|
+
const qrcodeValue = await this.wechaty.puppet.roomQRCode(this.id);
|
|
715
|
+
return guardQrCodeValue(qrcodeValue);
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* Return contact's roomAlias in the room
|
|
719
|
+
* @param {ContactInterface} contact
|
|
720
|
+
* @returns {Promise<string | null>} - If a contact has an alias in room, return string, otherwise return null
|
|
721
|
+
* @example
|
|
722
|
+
* const bot = new Wechaty()
|
|
723
|
+
* bot
|
|
724
|
+
* .on('message', async m => {
|
|
725
|
+
* const room = m.room()
|
|
726
|
+
* const contact = m.from()
|
|
727
|
+
* if (room) {
|
|
728
|
+
* const alias = await room.alias(contact)
|
|
729
|
+
* console.log(`${contact.name()} alias is ${alias}`)
|
|
730
|
+
* }
|
|
731
|
+
* })
|
|
732
|
+
* .start()
|
|
733
|
+
*/
|
|
734
|
+
async alias(contact) {
|
|
735
|
+
const memberPayload = await this.wechaty.puppet.roomMemberPayload(this.id, contact.id);
|
|
736
|
+
if (memberPayload.roomAlias) {
|
|
737
|
+
return memberPayload.roomAlias;
|
|
738
|
+
}
|
|
739
|
+
return undefined;
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* Mark the conversation as read
|
|
743
|
+
* @param { undefined | boolean } hasRead
|
|
744
|
+
*
|
|
745
|
+
* @example
|
|
746
|
+
* const bot = new Wechaty()
|
|
747
|
+
* const room = await bot.Room.find({topic: 'xxx'})
|
|
748
|
+
* await room.readMark()
|
|
749
|
+
*/
|
|
750
|
+
async readMark(hasRead) {
|
|
751
|
+
try {
|
|
752
|
+
if (typeof hasRead === 'undefined') {
|
|
753
|
+
return this.wechaty.puppet.conversationReadMark(this.id);
|
|
754
|
+
}
|
|
755
|
+
else {
|
|
756
|
+
await this.wechaty.puppet.conversationReadMark(this.id, hasRead);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
catch (e) {
|
|
760
|
+
this.wechaty.emitError(e);
|
|
761
|
+
log.error('Room', 'readMark() exception: %s', e.message);
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Check if the room has member `contact`, the return is a Promise and must be `await`-ed
|
|
766
|
+
*
|
|
767
|
+
* @param {ContactInterface} contact
|
|
768
|
+
* @returns {Promise<boolean>} Return `true` if has contact, else return `false`.
|
|
769
|
+
* @example <caption>Check whether 'lijiarui' is in the room 'wechaty'</caption>
|
|
770
|
+
* const bot = new Wechaty()
|
|
771
|
+
* await bot.start()
|
|
772
|
+
* // after logged in...
|
|
773
|
+
* const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any of contact in your WeChat
|
|
774
|
+
* const room = await bot.Room.find({topic: 'wechaty'}) // change 'wechaty' to any of the room in your WeChat
|
|
775
|
+
* if (contact && room) {
|
|
776
|
+
* if (await room.has(contact)) {
|
|
777
|
+
* console.log(`${contact.name()} is in the room wechaty!`)
|
|
778
|
+
* } else {
|
|
779
|
+
* console.log(`${contact.name()} is not in the room wechaty!`)
|
|
780
|
+
* }
|
|
781
|
+
* }
|
|
782
|
+
*/
|
|
783
|
+
async has(contact) {
|
|
784
|
+
const memberIdList = await this.wechaty.puppet.roomMemberList(this.id);
|
|
785
|
+
// if (!memberIdList) {
|
|
786
|
+
// return false
|
|
787
|
+
// }
|
|
788
|
+
return memberIdList
|
|
789
|
+
.filter(id => id === contact.id)
|
|
790
|
+
.length > 0;
|
|
791
|
+
}
|
|
792
|
+
/**
|
|
793
|
+
* The way to search member by Room.member()
|
|
794
|
+
*
|
|
795
|
+
* @typedef RoomMemberQueryFilter
|
|
796
|
+
* @property {string} name -Find the contact by WeChat name in a room, equal to `Contact.name()`.
|
|
797
|
+
* @property {string} roomAlias -Find the contact by alias set by the bot for others in a room.
|
|
798
|
+
* @property {string} contactAlias -Find the contact by alias set by the contact out of a room, equal to `Contact.alias()`.
|
|
799
|
+
* [More Detail]{@link https://github.com/wechaty/wechaty/issues/365}
|
|
800
|
+
*/
|
|
801
|
+
/**
|
|
802
|
+
* Find all contacts in a room
|
|
803
|
+
*
|
|
804
|
+
* #### definition
|
|
805
|
+
* - `name` the name-string set by user-self, should be called name, equal to `Contact.name()`
|
|
806
|
+
* - `roomAlias` the name-string set by user-self in the room, should be called roomAlias
|
|
807
|
+
* - `contactAlias` the name-string set by bot for others, should be called alias, equal to `Contact.alias()`
|
|
808
|
+
* @param {(RoomMemberQueryFilter | string)} [query] -Optional parameter, When use memberAll(name:string), return all matched members, including name, roomAlias, contactAlias
|
|
809
|
+
* @returns {Promise<ContactInterface[]>}
|
|
810
|
+
* @example
|
|
811
|
+
* const roomList:Contact[] | null = await room.findAll()
|
|
812
|
+
* if(roomList)
|
|
813
|
+
* console.log(`room all member list: `, roomList)
|
|
814
|
+
* const memberContactList: Contact[] | null =await room.findAll(`abc`)
|
|
815
|
+
* console.log(`contact list with all name, room alias, alias are abc:`, memberContactList)
|
|
816
|
+
*/
|
|
817
|
+
async memberAll(query) {
|
|
818
|
+
log.silly('Room', 'memberAll(%s)', JSON.stringify(query) || '');
|
|
819
|
+
if (!query) {
|
|
820
|
+
return this.memberList();
|
|
821
|
+
}
|
|
822
|
+
const contactIdList = await this.wechaty.puppet.roomMemberSearch(this.id, query);
|
|
823
|
+
const contactListAll = await Promise.all(contactIdList.map(id => this.wechaty.Contact.find({ id })));
|
|
824
|
+
const contactList = contactListAll.filter(c => !!c);
|
|
825
|
+
return contactList;
|
|
826
|
+
}
|
|
827
|
+
/**
|
|
828
|
+
* Find all contacts in a room, if get many, return the first one.
|
|
829
|
+
*
|
|
830
|
+
* @param {(RoomMemberQueryFilter | string)} queryArg -When use member(name:string), return all matched members, including name, roomAlias, contactAlias
|
|
831
|
+
* @returns {Promise<undefined | ContactInterface>}
|
|
832
|
+
*
|
|
833
|
+
* @example <caption>Find member by name</caption>
|
|
834
|
+
* const bot = new Wechaty()
|
|
835
|
+
* await bot.start()
|
|
836
|
+
* // after logged in...
|
|
837
|
+
* const room = await bot.Room.find({topic: 'wechaty'}) // change 'wechaty' to any room name in your WeChat
|
|
838
|
+
* if (room) {
|
|
839
|
+
* const member = await room.member('lijiarui') // change 'lijiarui' to any room member in your WeChat
|
|
840
|
+
* if (member) {load
|
|
841
|
+
* @example <caption>Find member by MemberQueryFilter</caption>
|
|
842
|
+
* const bot = new Wechaty()
|
|
843
|
+
* await bot.start()
|
|
844
|
+
* // after logged in...
|
|
845
|
+
* const room = await bot.Room.find({topic: 'wechaty'}) // change 'wechaty' to any room name in your WeChat
|
|
846
|
+
* if (room) {
|
|
847
|
+
* const member = await room.member({name: 'lijiarui'}) // change 'lijiarui' to any room member in your WeChat
|
|
848
|
+
* if (member) {
|
|
849
|
+
* console.log(`wechaty room got the member: ${member.name()}`)
|
|
850
|
+
* } else {
|
|
851
|
+
* console.log(`cannot get member in wechaty room!`)
|
|
852
|
+
* }
|
|
853
|
+
* }
|
|
854
|
+
*/
|
|
855
|
+
async member(queryArg) {
|
|
856
|
+
log.verbose('Room', 'member(%s)', JSON.stringify(queryArg));
|
|
857
|
+
let memberList;
|
|
858
|
+
// ISSUE #622
|
|
859
|
+
// error TS2345: Argument of type 'string | MemberQueryFilter' is not assignable to parameter of type 'MemberQueryFilter' #622
|
|
860
|
+
if (typeof queryArg === 'string') {
|
|
861
|
+
memberList = await this.memberAll(queryArg);
|
|
862
|
+
}
|
|
863
|
+
else {
|
|
864
|
+
memberList = await this.memberAll(queryArg);
|
|
865
|
+
}
|
|
866
|
+
if (memberList.length <= 0) {
|
|
867
|
+
return undefined;
|
|
868
|
+
}
|
|
869
|
+
if (memberList.length > 1) {
|
|
870
|
+
log.warn('Room', 'member(%s) get %d contacts, use the first one by default', JSON.stringify(queryArg), memberList.length);
|
|
871
|
+
}
|
|
872
|
+
return memberList[0];
|
|
873
|
+
}
|
|
874
|
+
/**
|
|
875
|
+
* Huan(202110):
|
|
876
|
+
* - Q: why this method marked as `privated` before?
|
|
877
|
+
* - A: it is for supporting the `memberAll()` API
|
|
878
|
+
*
|
|
879
|
+
* Get all room member from the room
|
|
880
|
+
*
|
|
881
|
+
* @returns {Promise<ContactInterface[]>}
|
|
882
|
+
* @example
|
|
883
|
+
* await room.memberList()
|
|
884
|
+
*/
|
|
885
|
+
async memberList() {
|
|
886
|
+
log.verbose('Room', 'memberList()');
|
|
887
|
+
const memberIdList = await this.wechaty.puppet.roomMemberList(this.id);
|
|
888
|
+
// if (!memberIdList) {
|
|
889
|
+
// log.warn('Room', 'memberList() not ready')
|
|
890
|
+
// return []
|
|
891
|
+
// }
|
|
892
|
+
const contactListAll = await Promise.all(memberIdList.map(id => this.wechaty.Contact.find({ id })));
|
|
893
|
+
const contactList = contactListAll.filter(c => !!c);
|
|
894
|
+
return contactList;
|
|
895
|
+
}
|
|
896
|
+
/**
|
|
897
|
+
* Get room's owner from the room.
|
|
898
|
+
* > Tips:
|
|
899
|
+
* This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
|
|
900
|
+
* @returns {(ContactInterface | undefined)}
|
|
901
|
+
* @example
|
|
902
|
+
* const owner = room.owner()
|
|
903
|
+
*/
|
|
904
|
+
owner() {
|
|
905
|
+
log.verbose('Room', 'owner()');
|
|
906
|
+
const ownerId = this.payload && this.payload.ownerId;
|
|
907
|
+
if (!ownerId) {
|
|
908
|
+
return undefined;
|
|
909
|
+
}
|
|
910
|
+
const owner = this.wechaty.Contact.load(ownerId);
|
|
911
|
+
return owner;
|
|
912
|
+
}
|
|
913
|
+
/**
|
|
914
|
+
* Get avatar from the room.
|
|
915
|
+
* @returns {FileBox}
|
|
916
|
+
* @example
|
|
917
|
+
* const fileBox = await room.avatar()
|
|
918
|
+
* const name = fileBox.name
|
|
919
|
+
* fileBox.toFile(name)
|
|
920
|
+
*/
|
|
921
|
+
async avatar() {
|
|
922
|
+
log.verbose('Room', 'avatar()');
|
|
923
|
+
return this.wechaty.puppet.roomAvatar(this.id);
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
class RoomImpl extends validationMixin(RoomMixin)() {
|
|
927
|
+
}
|
|
928
|
+
export { RoomImpl, };
|
|
929
|
+
//# sourceMappingURL=room.js.map
|