wechaty-puppet-matrix 0.0.4
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 +14 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/src/cleanup.d.ts +4 -0
- package/dist/cjs/src/cleanup.d.ts.map +1 -0
- package/dist/cjs/src/cleanup.js +31 -0
- package/dist/cjs/src/config.d.ts +5 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +10 -0
- package/dist/cjs/src/engine-schema.d.ts +76 -0
- package/dist/cjs/src/engine-schema.d.ts.map +1 -0
- package/dist/cjs/src/engine-schema.js +14 -0
- package/dist/cjs/src/matrix/cache-manager.d.ts +58 -0
- package/dist/cjs/src/matrix/cache-manager.d.ts.map +1 -0
- package/dist/cjs/src/matrix/cache-manager.js +286 -0
- package/dist/cjs/src/matrix/events/event-friendship.d.ts +6 -0
- package/dist/cjs/src/matrix/events/event-friendship.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event-friendship.js +109 -0
- package/dist/cjs/src/matrix/events/event-message.d.ts +6 -0
- package/dist/cjs/src/matrix/events/event-message.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event-message.js +5 -0
- package/dist/cjs/src/matrix/events/event-room-invite.d.ts +6 -0
- package/dist/cjs/src/matrix/events/event-room-invite.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event-room-invite.js +55 -0
- package/dist/cjs/src/matrix/events/event-room-join.d.ts +6 -0
- package/dist/cjs/src/matrix/events/event-room-join.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event-room-join.js +127 -0
- package/dist/cjs/src/matrix/events/event-room-leave.d.ts +8 -0
- package/dist/cjs/src/matrix/events/event-room-leave.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event-room-leave.js +83 -0
- package/dist/cjs/src/matrix/events/event-room-topic.d.ts +6 -0
- package/dist/cjs/src/matrix/events/event-room-topic.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event-room-topic.js +56 -0
- package/dist/cjs/src/matrix/events/event.d.ts +28 -0
- package/dist/cjs/src/matrix/events/event.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/event.js +42 -0
- package/dist/cjs/src/matrix/events/mod.d.ts +3 -0
- package/dist/cjs/src/matrix/events/mod.d.ts.map +1 -0
- package/dist/cjs/src/matrix/events/mod.js +21 -0
- package/dist/cjs/src/matrix/messages/message-appmsg.d.ts +57 -0
- package/dist/cjs/src/matrix/messages/message-appmsg.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-appmsg.js +60 -0
- package/dist/cjs/src/matrix/messages/message-audio.d.ts +32 -0
- package/dist/cjs/src/matrix/messages/message-audio.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-audio.js +17 -0
- package/dist/cjs/src/matrix/messages/message-emotion.d.ts +13 -0
- package/dist/cjs/src/matrix/messages/message-emotion.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-emotion.js +32 -0
- package/dist/cjs/src/matrix/messages/message-image.d.ts +33 -0
- package/dist/cjs/src/matrix/messages/message-image.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-image.js +14 -0
- package/dist/cjs/src/matrix/messages/message-miniprogram.d.ts +4 -0
- package/dist/cjs/src/matrix/messages/message-miniprogram.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-miniprogram.js +21 -0
- package/dist/cjs/src/matrix/messages/message-sysmsg.d.ts +18 -0
- package/dist/cjs/src/matrix/messages/message-sysmsg.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-sysmsg.js +76 -0
- package/dist/cjs/src/matrix/messages/message-video.d.ts +43 -0
- package/dist/cjs/src/matrix/messages/message-video.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/message-video.js +20 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-pat.d.ts +14 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-pat.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-pat.js +11 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts +19 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.js +48 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts +59 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.js +61 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-todo.d.ts +31 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-todo.d.ts.map +1 -0
- package/dist/cjs/src/matrix/messages/sysmsg/message-todo.js +16 -0
- package/dist/cjs/src/matrix/schema-mapper/contact.d.ts +4 -0
- package/dist/cjs/src/matrix/schema-mapper/contact.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/contact.js +62 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.js +100 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.js +67 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.js +40 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.js +11 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.js +41 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.js +65 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser.d.ts +13 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/message-parser.js +20 -0
- package/dist/cjs/src/matrix/schema-mapper/message/mod.d.ts +3 -0
- package/dist/cjs/src/matrix/schema-mapper/message/mod.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message/mod.js +17 -0
- package/dist/cjs/src/matrix/schema-mapper/message.d.ts +6 -0
- package/dist/cjs/src/matrix/schema-mapper/message.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/message.js +47 -0
- package/dist/cjs/src/matrix/schema-mapper/room.d.ts +6 -0
- package/dist/cjs/src/matrix/schema-mapper/room.d.ts.map +1 -0
- package/dist/cjs/src/matrix/schema-mapper/room.js +27 -0
- package/dist/cjs/src/matrix/service/request.d.ts +290 -0
- package/dist/cjs/src/matrix/service/request.d.ts.map +1 -0
- package/dist/cjs/src/matrix/service/request.js +1315 -0
- package/dist/cjs/src/matrix/types.d.ts +34 -0
- package/dist/cjs/src/matrix/types.d.ts.map +1 -0
- package/dist/cjs/src/matrix/types.js +30 -0
- package/dist/cjs/src/matrix/utils/cached-promise.d.ts +5 -0
- package/dist/cjs/src/matrix/utils/cached-promise.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/cached-promise.js +22 -0
- package/dist/cjs/src/matrix/utils/image-decrypt.d.ts +7 -0
- package/dist/cjs/src/matrix/utils/image-decrypt.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/image-decrypt.js +158 -0
- package/dist/cjs/src/matrix/utils/index.d.ts +4 -0
- package/dist/cjs/src/matrix/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/index.js +32 -0
- package/dist/cjs/src/matrix/utils/is-type.d.ts +9 -0
- package/dist/cjs/src/matrix/utils/is-type.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/is-type.js +72 -0
- package/dist/cjs/src/matrix/utils/regex.d.ts +3 -0
- package/dist/cjs/src/matrix/utils/regex.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/regex.js +14 -0
- package/dist/cjs/src/matrix/utils/runner.d.ts +3 -0
- package/dist/cjs/src/matrix/utils/runner.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/runner.js +12 -0
- package/dist/cjs/src/matrix/utils/string.d.ts +2 -0
- package/dist/cjs/src/matrix/utils/string.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/string.js +7 -0
- package/dist/cjs/src/matrix/utils/xml-to-json.d.ts +5 -0
- package/dist/cjs/src/matrix/utils/xml-to-json.d.ts.map +1 -0
- package/dist/cjs/src/matrix/utils/xml-to-json.js +51 -0
- package/dist/cjs/src/mod.d.ts +5 -0
- package/dist/cjs/src/mod.d.ts.map +1 -0
- package/dist/cjs/src/mod.js +9 -0
- package/dist/cjs/src/package-json.d.ts +3 -0
- package/dist/cjs/src/package-json.d.ts.map +1 -0
- package/dist/cjs/src/package-json.js +4 -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 +9 -0
- package/dist/cjs/src/puppet-matrix.d.ts +114 -0
- package/dist/cjs/src/puppet-matrix.d.ts.map +1 -0
- package/dist/cjs/src/puppet-matrix.js +1037 -0
- package/dist/cjs/tests/integration.spec.d.ts +3 -0
- package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
- package/dist/cjs/tests/integration.spec.js +7 -0
- package/dist/cjs/tests/tap.spec.d.ts +3 -0
- package/dist/cjs/tests/tap.spec.d.ts.map +1 -0
- package/dist/cjs/tests/tap.spec.js +32 -0
- package/dist/esm/src/cleanup.d.ts +4 -0
- package/dist/esm/src/cleanup.d.ts.map +1 -0
- package/dist/esm/src/cleanup.js +24 -0
- package/dist/esm/src/config.d.ts +5 -0
- package/dist/esm/src/config.d.ts.map +1 -0
- package/dist/esm/src/config.js +5 -0
- package/dist/esm/src/engine-schema.d.ts +76 -0
- package/dist/esm/src/engine-schema.d.ts.map +1 -0
- package/dist/esm/src/engine-schema.js +11 -0
- package/dist/esm/src/matrix/cache-manager.d.ts +58 -0
- package/dist/esm/src/matrix/cache-manager.d.ts.map +1 -0
- package/dist/esm/src/matrix/cache-manager.js +279 -0
- package/dist/esm/src/matrix/events/event-friendship.d.ts +6 -0
- package/dist/esm/src/matrix/events/event-friendship.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event-friendship.js +84 -0
- package/dist/esm/src/matrix/events/event-message.d.ts +6 -0
- package/dist/esm/src/matrix/events/event-message.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event-message.js +3 -0
- package/dist/esm/src/matrix/events/event-room-invite.d.ts +6 -0
- package/dist/esm/src/matrix/events/event-room-invite.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event-room-invite.js +53 -0
- package/dist/esm/src/matrix/events/event-room-join.d.ts +6 -0
- package/dist/esm/src/matrix/events/event-room-join.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event-room-join.js +125 -0
- package/dist/esm/src/matrix/events/event-room-leave.d.ts +8 -0
- package/dist/esm/src/matrix/events/event-room-leave.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event-room-leave.js +79 -0
- package/dist/esm/src/matrix/events/event-room-topic.d.ts +6 -0
- package/dist/esm/src/matrix/events/event-room-topic.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event-room-topic.js +54 -0
- package/dist/esm/src/matrix/events/event.d.ts +28 -0
- package/dist/esm/src/matrix/events/event.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/event.js +37 -0
- package/dist/esm/src/matrix/events/mod.d.ts +3 -0
- package/dist/esm/src/matrix/events/mod.d.ts.map +1 -0
- package/dist/esm/src/matrix/events/mod.js +14 -0
- package/dist/esm/src/matrix/messages/message-appmsg.d.ts +57 -0
- package/dist/esm/src/matrix/messages/message-appmsg.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-appmsg.js +56 -0
- package/dist/esm/src/matrix/messages/message-audio.d.ts +32 -0
- package/dist/esm/src/matrix/messages/message-audio.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-audio.js +14 -0
- package/dist/esm/src/matrix/messages/message-emotion.d.ts +13 -0
- package/dist/esm/src/matrix/messages/message-emotion.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-emotion.js +28 -0
- package/dist/esm/src/matrix/messages/message-image.d.ts +33 -0
- package/dist/esm/src/matrix/messages/message-image.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-image.js +11 -0
- package/dist/esm/src/matrix/messages/message-miniprogram.d.ts +4 -0
- package/dist/esm/src/matrix/messages/message-miniprogram.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-miniprogram.js +18 -0
- package/dist/esm/src/matrix/messages/message-sysmsg.d.ts +18 -0
- package/dist/esm/src/matrix/messages/message-sysmsg.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-sysmsg.js +69 -0
- package/dist/esm/src/matrix/messages/message-video.d.ts +43 -0
- package/dist/esm/src/matrix/messages/message-video.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/message-video.js +17 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-pat.d.ts +14 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-pat.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-pat.js +8 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts +19 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.js +43 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts +59 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.js +56 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-todo.d.ts +31 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-todo.d.ts.map +1 -0
- package/dist/esm/src/matrix/messages/sysmsg/message-todo.js +13 -0
- package/dist/esm/src/matrix/schema-mapper/contact.d.ts +4 -0
- package/dist/esm/src/matrix/schema-mapper/contact.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/contact.js +36 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.js +73 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.js +40 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.js +36 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.js +7 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.js +37 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.js +38 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser.d.ts +13 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/message-parser.js +15 -0
- package/dist/esm/src/matrix/schema-mapper/message/mod.d.ts +3 -0
- package/dist/esm/src/matrix/schema-mapper/message/mod.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message/mod.js +14 -0
- package/dist/esm/src/matrix/schema-mapper/message.d.ts +6 -0
- package/dist/esm/src/matrix/schema-mapper/message.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/message.js +21 -0
- package/dist/esm/src/matrix/schema-mapper/room.d.ts +6 -0
- package/dist/esm/src/matrix/schema-mapper/room.d.ts.map +1 -0
- package/dist/esm/src/matrix/schema-mapper/room.js +22 -0
- package/dist/esm/src/matrix/service/request.d.ts +290 -0
- package/dist/esm/src/matrix/service/request.d.ts.map +1 -0
- package/dist/esm/src/matrix/service/request.js +1286 -0
- package/dist/esm/src/matrix/types.d.ts +34 -0
- package/dist/esm/src/matrix/types.d.ts.map +1 -0
- package/dist/esm/src/matrix/types.js +27 -0
- package/dist/esm/src/matrix/utils/cached-promise.d.ts +5 -0
- package/dist/esm/src/matrix/utils/cached-promise.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/cached-promise.js +18 -0
- package/dist/esm/src/matrix/utils/image-decrypt.d.ts +7 -0
- package/dist/esm/src/matrix/utils/image-decrypt.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/image-decrypt.js +153 -0
- package/dist/esm/src/matrix/utils/index.d.ts +4 -0
- package/dist/esm/src/matrix/utils/index.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/index.js +24 -0
- package/dist/esm/src/matrix/utils/is-type.d.ts +9 -0
- package/dist/esm/src/matrix/utils/is-type.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/is-type.js +62 -0
- package/dist/esm/src/matrix/utils/regex.d.ts +3 -0
- package/dist/esm/src/matrix/utils/regex.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/regex.js +11 -0
- package/dist/esm/src/matrix/utils/runner.d.ts +3 -0
- package/dist/esm/src/matrix/utils/runner.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/runner.js +9 -0
- package/dist/esm/src/matrix/utils/string.d.ts +2 -0
- package/dist/esm/src/matrix/utils/string.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/string.js +3 -0
- package/dist/esm/src/matrix/utils/xml-to-json.d.ts +5 -0
- package/dist/esm/src/matrix/utils/xml-to-json.d.ts.map +1 -0
- package/dist/esm/src/matrix/utils/xml-to-json.js +45 -0
- package/dist/esm/src/mod.d.ts +5 -0
- package/dist/esm/src/mod.d.ts.map +1 -0
- package/dist/esm/src/mod.js +4 -0
- package/dist/esm/src/package-json.d.ts +3 -0
- package/dist/esm/src/package-json.d.ts.map +1 -0
- package/dist/esm/src/package-json.js +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 +7 -0
- package/dist/esm/src/puppet-matrix.d.ts +114 -0
- package/dist/esm/src/puppet-matrix.d.ts.map +1 -0
- package/dist/esm/src/puppet-matrix.js +1007 -0
- package/dist/esm/tests/integration.spec.d.ts +3 -0
- package/dist/esm/tests/integration.spec.d.ts.map +1 -0
- package/dist/esm/tests/integration.spec.js +5 -0
- package/dist/esm/tests/tap.spec.d.ts +3 -0
- package/dist/esm/tests/tap.spec.d.ts.map +1 -0
- package/dist/esm/tests/tap.spec.js +7 -0
- package/package.json +98 -0
- package/src/cleanup.ts +36 -0
- package/src/config.ts +15 -0
- package/src/engine-schema.ts +171 -0
- package/src/matrix/cache-manager.ts +359 -0
- package/src/matrix/events/event-friendship.ts +116 -0
- package/src/matrix/events/event-message.ts +7 -0
- package/src/matrix/events/event-room-invite.ts +64 -0
- package/src/matrix/events/event-room-join.ts +200 -0
- package/src/matrix/events/event-room-leave.ts +111 -0
- package/src/matrix/events/event-room-topic.ts +73 -0
- package/src/matrix/events/event.ts +60 -0
- package/src/matrix/events/mod.ts +16 -0
- package/src/matrix/messages/message-appmsg.ts +131 -0
- package/src/matrix/messages/message-audio.ts +48 -0
- package/src/matrix/messages/message-emotion.ts +68 -0
- package/src/matrix/messages/message-image.ts +46 -0
- package/src/matrix/messages/message-miniprogram.ts +45 -0
- package/src/matrix/messages/message-sysmsg.ts +106 -0
- package/src/matrix/messages/message-video.ts +62 -0
- package/src/matrix/messages/sysmsg/message-pat.ts +22 -0
- package/src/matrix/messages/sysmsg/message-revokemsg.ts +70 -0
- package/src/matrix/messages/sysmsg/message-sysmsgtemplate.ts +133 -0
- package/src/matrix/messages/sysmsg/message-todo.ts +45 -0
- package/src/matrix/schema-mapper/contact.ts +37 -0
- package/src/matrix/schema-mapper/message/message-parser-appmsg.ts +78 -0
- package/src/matrix/schema-mapper/message/message-parser-refermsg.ts +53 -0
- package/src/matrix/schema-mapper/message/message-parser-room.ts +62 -0
- package/src/matrix/schema-mapper/message/message-parser-single-chat.ts +12 -0
- package/src/matrix/schema-mapper/message/message-parser-sysmsg.ts +62 -0
- package/src/matrix/schema-mapper/message/message-parser-type.ts +48 -0
- package/src/matrix/schema-mapper/message/message-parser.ts +35 -0
- package/src/matrix/schema-mapper/message/mod.ts +17 -0
- package/src/matrix/schema-mapper/message.ts +30 -0
- package/src/matrix/schema-mapper/room.ts +28 -0
- package/src/matrix/service/request.ts +1944 -0
- package/src/matrix/types.ts +37 -0
- package/src/matrix/utils/cached-promise.ts +25 -0
- package/src/matrix/utils/image-decrypt.ts +198 -0
- package/src/matrix/utils/index.ts +34 -0
- package/src/matrix/utils/is-type.ts +72 -0
- package/src/matrix/utils/regex.ts +15 -0
- package/src/matrix/utils/runner.ts +12 -0
- package/src/matrix/utils/string.ts +3 -0
- package/src/matrix/utils/xml-to-json.ts +59 -0
- package/src/mod.ts +10 -0
- package/src/package-json.spec.ts +10 -0
- package/src/package-json.ts +11 -0
- package/src/puppet-matrix.ts +1402 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import fs from 'fs-extra'
|
|
2
|
+
import os from 'os'
|
|
3
|
+
import path from 'path'
|
|
4
|
+
import LRU from 'lru-cache'
|
|
5
|
+
|
|
6
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
7
|
+
import { log } from '@juzi/wechaty-puppet'
|
|
8
|
+
import { FlashStore } from 'flash-store'
|
|
9
|
+
import type { MessagePayload, ContactPayload, MessageRevokeInfo, Label } from '../engine-schema.js'
|
|
10
|
+
|
|
11
|
+
const PRE = '[CacheManager]'
|
|
12
|
+
|
|
13
|
+
export type RoomMemberMap = { [contactId: string]: ContactPayload };
|
|
14
|
+
|
|
15
|
+
export class CacheManager {
|
|
16
|
+
|
|
17
|
+
private readonly _userName: string
|
|
18
|
+
|
|
19
|
+
private _messageCache?: LRU<string, MessagePayload> // because message count may be massive, so we just keep them in memory with LRU and with limited capacity
|
|
20
|
+
private _messageRevokeCache?: LRU<string, MessageRevokeInfo>
|
|
21
|
+
private _contactCache?: FlashStore<string, ContactPayload>
|
|
22
|
+
private _contactSearchCache?: LRU<string, ContactPayload>
|
|
23
|
+
private _contactStrangerAliasCache?: FlashStore<string, string> // set alias before add contact
|
|
24
|
+
private _roomCache?: FlashStore<string, ContactPayload>
|
|
25
|
+
private _roomMemberCache?: FlashStore<string, RoomMemberMap>
|
|
26
|
+
private _roomInvitationCache?: FlashStore<string, PUPPET.payloads.RoomInvitation>
|
|
27
|
+
private _friendshipCache?: FlashStore<string, PUPPET.payloads.FriendshipReceive | PUPPET.payloads.FriendshipConfirm>
|
|
28
|
+
|
|
29
|
+
private _labelList?: Label[]
|
|
30
|
+
|
|
31
|
+
constructor (userName: string) {
|
|
32
|
+
this._userName = userName
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async init (): Promise<void> {
|
|
36
|
+
if (this._messageCache) {
|
|
37
|
+
throw new Error('already initialized')
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const baseDir = path.join(
|
|
41
|
+
os.homedir(),
|
|
42
|
+
path.sep,
|
|
43
|
+
'.wechaty',
|
|
44
|
+
'puppet-engine-cache',
|
|
45
|
+
path.sep,
|
|
46
|
+
this._userName,
|
|
47
|
+
path.sep,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
const baseDirExist = await fs.pathExists(baseDir)
|
|
51
|
+
if (!baseDirExist) {
|
|
52
|
+
await fs.mkdirp(baseDir)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
this._messageCache = new LRU<string, MessagePayload>({
|
|
56
|
+
dispose (key: string, val: any) {
|
|
57
|
+
log.silly(PRE, 'constructor() lruOptions.dispose(%s, %s)', key, JSON.stringify(val))
|
|
58
|
+
},
|
|
59
|
+
max: 1000,
|
|
60
|
+
maxAge: 1000 * 60 * 60,
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
this._messageRevokeCache = new LRU<string, MessageRevokeInfo>({
|
|
64
|
+
dispose (key: string, val: any) {
|
|
65
|
+
log.silly(PRE, 'constructor() lruOptions.dispose(%s, %s)', key, JSON.stringify(val))
|
|
66
|
+
},
|
|
67
|
+
max: 1000,
|
|
68
|
+
maxAge: 1000 * 60 * 60,
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
this._contactCache = new FlashStore(path.join(baseDir, 'contact-raw-payload'))
|
|
72
|
+
this._contactSearchCache = new LRU<string, ContactPayload>({
|
|
73
|
+
dispose (key: string, val: any) {
|
|
74
|
+
log.silly(PRE, 'constructor() lruOptions.dispose(%s, %s)', key, JSON.stringify(val))
|
|
75
|
+
},
|
|
76
|
+
max: 1000,
|
|
77
|
+
maxAge: 1000 * 60 * 60,
|
|
78
|
+
})
|
|
79
|
+
this._contactStrangerAliasCache = new FlashStore(path.join(baseDir, 'contact-stranger-alias'))
|
|
80
|
+
this._roomCache = new FlashStore(path.join(baseDir, 'room-raw-payload'))
|
|
81
|
+
this._roomMemberCache = new FlashStore(path.join(baseDir, 'room-member-raw-payload'))
|
|
82
|
+
this._roomInvitationCache = new FlashStore(path.join(baseDir, 'room-invitation-raw-payload'))
|
|
83
|
+
this._friendshipCache = new FlashStore(path.join(baseDir, 'friendship-raw-payload'))
|
|
84
|
+
|
|
85
|
+
const contactTotal = await this._contactCache.size
|
|
86
|
+
|
|
87
|
+
log.silly(PRE, `initCache() inited ${contactTotal} Contacts, cachedir="${baseDir}"`)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async close () {
|
|
91
|
+
log.silly(PRE, 'close()')
|
|
92
|
+
|
|
93
|
+
if (
|
|
94
|
+
this._contactCache
|
|
95
|
+
&& this._contactStrangerAliasCache
|
|
96
|
+
&& this._roomMemberCache
|
|
97
|
+
&& this._roomCache
|
|
98
|
+
&& this._friendshipCache
|
|
99
|
+
&& this._roomInvitationCache
|
|
100
|
+
&& this._messageCache
|
|
101
|
+
) {
|
|
102
|
+
log.silly(PRE, 'close() closing caches ...')
|
|
103
|
+
|
|
104
|
+
await Promise.all([
|
|
105
|
+
this._contactCache.close(),
|
|
106
|
+
this._contactStrangerAliasCache.close(),
|
|
107
|
+
this._roomMemberCache.close(),
|
|
108
|
+
this._roomCache.close(),
|
|
109
|
+
this._friendshipCache.close(),
|
|
110
|
+
this._roomInvitationCache.close(),
|
|
111
|
+
])
|
|
112
|
+
|
|
113
|
+
this._contactCache = undefined
|
|
114
|
+
this._contactStrangerAliasCache = undefined
|
|
115
|
+
this._roomMemberCache = undefined
|
|
116
|
+
this._roomCache = undefined
|
|
117
|
+
this._friendshipCache = undefined
|
|
118
|
+
this._roomInvitationCache = undefined
|
|
119
|
+
this._messageCache = undefined
|
|
120
|
+
|
|
121
|
+
log.silly(PRE, 'close() cache closed.')
|
|
122
|
+
} else {
|
|
123
|
+
log.silly(PRE, 'close() cache not exist.')
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* -------------------------------
|
|
129
|
+
* Message Section
|
|
130
|
+
* --------------------------------
|
|
131
|
+
*/
|
|
132
|
+
public async getMessage (messageId: string): Promise<MessagePayload | undefined> {
|
|
133
|
+
if (!messageId) return
|
|
134
|
+
return this._messageCache!.get(messageId)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
public async setMessage (messageId: string, payload: MessagePayload): Promise<void> {
|
|
138
|
+
if (!messageId) return
|
|
139
|
+
await this._messageCache!.set(messageId, payload)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
public async hasMessage (messageId: string): Promise<boolean> {
|
|
143
|
+
if (!messageId) return false
|
|
144
|
+
return this._messageCache!.has(messageId)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
public async getMessageRevokeInfo (messageId: string): Promise<MessageRevokeInfo | undefined> {
|
|
148
|
+
if (!messageId) return
|
|
149
|
+
return this._messageRevokeCache!.get(messageId)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
public async setMessageRevokeInfo (messageId: string, messageSendResult: MessageRevokeInfo): Promise<void> {
|
|
153
|
+
await this._messageRevokeCache!.set(messageId, messageSendResult)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* -------------------------------
|
|
158
|
+
* Contact Section
|
|
159
|
+
* --------------------------------
|
|
160
|
+
*/
|
|
161
|
+
public async getContact (contactId: string): Promise<ContactPayload | undefined> {
|
|
162
|
+
if (!contactId) return
|
|
163
|
+
return this._contactCache!.get(contactId)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
public async setContact (contactId: string, payload: ContactPayload): Promise<void> {
|
|
167
|
+
if (!contactId) return
|
|
168
|
+
await this._contactCache!.set(contactId, payload)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
public async deleteContact (contactId: string): Promise<void> {
|
|
172
|
+
if (!contactId) return
|
|
173
|
+
await this._contactCache!.delete(contactId)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
public async getContactIds (): Promise<string[]> {
|
|
177
|
+
const result: string[] = []
|
|
178
|
+
for await (const key of this._contactCache!.keys()) {
|
|
179
|
+
result.push(key)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return result
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
public async getAllContacts (): Promise<ContactPayload[]> {
|
|
186
|
+
const result: ContactPayload[] = []
|
|
187
|
+
for await (const value of this._contactCache!.values()) {
|
|
188
|
+
result.push(value)
|
|
189
|
+
}
|
|
190
|
+
return result
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
public async hasContact (contactId: string): Promise<boolean> {
|
|
194
|
+
if (!contactId) return false
|
|
195
|
+
return this._contactCache!.has(contactId)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
public async getContactCount (): Promise<number> {
|
|
199
|
+
return this._contactCache!.size
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* contact search
|
|
204
|
+
*/
|
|
205
|
+
|
|
206
|
+
public async getContactSearch (id: string): Promise<ContactPayload | undefined> {
|
|
207
|
+
if (!id) return
|
|
208
|
+
return this._contactSearchCache!.get(id)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
public async setContactSearch (id: string, payload: ContactPayload): Promise<void> {
|
|
212
|
+
if (!id) return
|
|
213
|
+
this._contactSearchCache!.set(id, payload)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
public async hasContactSearch (id: string): Promise<boolean> {
|
|
217
|
+
if (!id) return false
|
|
218
|
+
return this._contactSearchCache!.has(id)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
public async getContactStrangerAlias (encryptedUserName: string): Promise<string | undefined> {
|
|
222
|
+
return this._contactStrangerAliasCache!.get(encryptedUserName)
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
public async setContactStrangerAlias (encryptedUserName: string, alias: string): Promise<void> {
|
|
226
|
+
await this._contactStrangerAliasCache!.set(encryptedUserName, alias)
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
public async deleteContactStrangerAlias (encryptedUserName: string): Promise<void> {
|
|
230
|
+
await this._contactStrangerAliasCache!.delete(encryptedUserName)
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* -------------------------------
|
|
235
|
+
* Room Section
|
|
236
|
+
* --------------------------------
|
|
237
|
+
*/
|
|
238
|
+
public async getRoom (roomId: string): Promise<ContactPayload | undefined> {
|
|
239
|
+
if (!roomId) return
|
|
240
|
+
return this._roomCache!.get(roomId)
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
public async setRoom (roomId: string, payload: ContactPayload): Promise<void> {
|
|
244
|
+
if (!roomId) return
|
|
245
|
+
await this._roomCache!.set(roomId, payload)
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
public async deleteRoom (roomId: string): Promise<void> {
|
|
249
|
+
if (!roomId) return
|
|
250
|
+
await this._roomCache!.delete(roomId)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
public async getRoomIds (): Promise<string[]> {
|
|
254
|
+
const result: string[] = []
|
|
255
|
+
for await (const key of this._roomCache!.keys()) {
|
|
256
|
+
result.push(key)
|
|
257
|
+
}
|
|
258
|
+
return result
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
public async getRoomCount (): Promise<number> {
|
|
262
|
+
return this._roomCache!.size
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
public async hasRoom (roomId: string): Promise<boolean> {
|
|
266
|
+
if (!roomId) return false
|
|
267
|
+
return this._roomCache!.has(roomId)
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* -------------------------------
|
|
272
|
+
* Room Member Section
|
|
273
|
+
* --------------------------------
|
|
274
|
+
*/
|
|
275
|
+
public async getRoomMember (roomId: string): Promise<RoomMemberMap | undefined> {
|
|
276
|
+
if (!roomId) return
|
|
277
|
+
return this._roomMemberCache!.get(roomId)
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
public async setRoomMember (roomId: string, payload: RoomMemberMap): Promise<void> {
|
|
281
|
+
if (!roomId) return
|
|
282
|
+
await this._roomMemberCache!.set(roomId, payload)
|
|
283
|
+
|
|
284
|
+
const roomInfo = await this.getRoom(roomId)
|
|
285
|
+
if (roomInfo && roomInfo.chatroommemberList) {
|
|
286
|
+
roomInfo.chatroommemberList = Object.keys(payload)
|
|
287
|
+
await this.setRoom(roomId, roomInfo)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
public async deleteRoomMember (roomId: string): Promise<void> {
|
|
292
|
+
if (!roomId) return
|
|
293
|
+
await this._roomMemberCache!.delete(roomId)
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
public async updateSingleRoomMember (roomId: string, payload: ContactPayload): Promise<void> {
|
|
297
|
+
if (!roomId) return
|
|
298
|
+
const roomMemberMap = await this.getRoomMember(roomId)
|
|
299
|
+
if (roomMemberMap) {
|
|
300
|
+
roomMemberMap[payload.wxid] = payload
|
|
301
|
+
await this.setRoomMember(roomId, roomMemberMap)
|
|
302
|
+
} else {
|
|
303
|
+
await this.setRoomMember(roomId, { [payload.wxid]: payload })
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
public async deleteSingleRoomMember (roomId: string, contactId: string): Promise<void> {
|
|
308
|
+
if (!roomId || !contactId) return
|
|
309
|
+
const roomMemberMap = await this.getRoomMember(roomId)
|
|
310
|
+
if (roomMemberMap) {
|
|
311
|
+
delete roomMemberMap[contactId]
|
|
312
|
+
await this.setRoomMember(roomId, roomMemberMap)
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* -------------------------------
|
|
318
|
+
* Room Invitation Section
|
|
319
|
+
* -------------------------------
|
|
320
|
+
*/
|
|
321
|
+
public async getRoomInvitation (messageId: string): Promise<PUPPET.payloads.RoomInvitation | undefined> {
|
|
322
|
+
if (!messageId) return
|
|
323
|
+
return this._roomInvitationCache!.get(messageId)
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
public async setRoomInvitation (messageId: string, payload: PUPPET.payloads.RoomInvitation): Promise<void> {
|
|
327
|
+
if (!messageId) return
|
|
328
|
+
await this._roomInvitationCache!.set(messageId, payload)
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
public async deleteRoomInvitation (messageId: string): Promise<void> {
|
|
332
|
+
if (!messageId) return
|
|
333
|
+
await this._roomInvitationCache!.delete(messageId)
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* -------------------------------
|
|
338
|
+
* Friendship Cache Section
|
|
339
|
+
* --------------------------------
|
|
340
|
+
*/
|
|
341
|
+
public async getFriendshipRawPayload (id: string): Promise<PUPPET.payloads.FriendshipReceive | PUPPET.payloads.FriendshipConfirm|undefined> {
|
|
342
|
+
if (!id) return
|
|
343
|
+
return this._friendshipCache!.get(id)
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
public async setFriendshipRawPayload (id: string, payload: PUPPET.payloads.FriendshipReceive | PUPPET.payloads.FriendshipConfirm) {
|
|
347
|
+
if (!id) return
|
|
348
|
+
await this._friendshipCache!.set(id, payload)
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
public getLabelList (): Label[] | undefined {
|
|
352
|
+
return this._labelList
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
public setLabelList (labelList: Label[]): void {
|
|
356
|
+
this._labelList = labelList
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
2
|
+
import * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
+
import type { EventPayload } from './event.js'
|
|
4
|
+
import { WechatMessageType } from '../types.js'
|
|
5
|
+
import { xmlToJson } from '../utils/xml-to-json.js'
|
|
6
|
+
import { isContactId, isIMContactId } from '../utils/is-type.js'
|
|
7
|
+
|
|
8
|
+
const FRIENDSHIP_CONFIRM_REGEX_LIST = [
|
|
9
|
+
/^You have added (.+) as your WeChat contact. Start chatting!$/,
|
|
10
|
+
/^你已添加了(.+),现在可以开始聊天了。$/,
|
|
11
|
+
/I've accepted your friend request. Now let's chat!$/,
|
|
12
|
+
/^(.+) just added you to his\/her contacts list. Send a message to him\/her now!$/,
|
|
13
|
+
/^(.+)刚刚把你添加到通讯录,现在可以开始聊天了。$/,
|
|
14
|
+
/^我通过了你的朋友验证请求,现在我们可以开始聊天了$/,
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
const FRIENDSHIP_VERIFY_REGEX_LIST = [
|
|
18
|
+
/^(.+) has enabled Friend Confirmation/,
|
|
19
|
+
/^(.+)开启了朋友验证,你还不是他(她)朋友。请先发送朋友验证请求,对方验证通过后,才能聊天。/,
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
// 已经添加好友
|
|
23
|
+
const isConfirm = (message: MessagePayload): boolean => {
|
|
24
|
+
return FRIENDSHIP_CONFIRM_REGEX_LIST.some((regexp) => {
|
|
25
|
+
return !!message.text.match(regexp)
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
// 需要添加好友
|
|
29
|
+
const isNeedVerify = (message: MessagePayload): boolean => {
|
|
30
|
+
return FRIENDSHIP_VERIFY_REGEX_LIST.some((regexp) => {
|
|
31
|
+
return !!message.text.match(regexp)
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface ReceiveXmlSchema {
|
|
36
|
+
msg: {
|
|
37
|
+
$: {
|
|
38
|
+
fromusername: string
|
|
39
|
+
encryptusername: string
|
|
40
|
+
content: string
|
|
41
|
+
scene: string
|
|
42
|
+
ticket: string
|
|
43
|
+
sourcenickname?: string
|
|
44
|
+
sourceusername?: string
|
|
45
|
+
sharecardnickname?: string
|
|
46
|
+
sharecardusername?: string
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const isReceive = async (
|
|
52
|
+
message: MessagePayload,
|
|
53
|
+
): Promise<ReceiveXmlSchema | null> => {
|
|
54
|
+
if (
|
|
55
|
+
message.msgType !== WechatMessageType.VerifyMsg
|
|
56
|
+
&& message.msgType !== WechatMessageType.VerifyMsgEnterprise
|
|
57
|
+
) {
|
|
58
|
+
return null
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
const verifyXml: ReceiveXmlSchema = await xmlToJson(message.text)
|
|
63
|
+
const contactId = verifyXml.msg.$.fromusername
|
|
64
|
+
if (isContactId(contactId) && verifyXml.msg.$.encryptusername) {
|
|
65
|
+
return verifyXml
|
|
66
|
+
} else if (isIMContactId(contactId)) {
|
|
67
|
+
return verifyXml
|
|
68
|
+
}
|
|
69
|
+
} catch (e) {
|
|
70
|
+
// not receive event
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return null
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default async (_puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
|
|
77
|
+
if (isConfirm(message)) {
|
|
78
|
+
return {
|
|
79
|
+
contactId: message.talkerId,
|
|
80
|
+
id: message.id,
|
|
81
|
+
timestamp: message.timeStamp,
|
|
82
|
+
type: PUPPET.types.Friendship.Confirm,
|
|
83
|
+
} as PUPPET.payloads.FriendshipConfirm
|
|
84
|
+
} else if (isNeedVerify(message)) {
|
|
85
|
+
return {
|
|
86
|
+
contactId: message.talkerId,
|
|
87
|
+
id: message.id,
|
|
88
|
+
timestamp: message.timeStamp,
|
|
89
|
+
type: PUPPET.types.Friendship.Verify,
|
|
90
|
+
} as PUPPET.payloads.FriendshipVerify
|
|
91
|
+
} else {
|
|
92
|
+
const verifyXml = await isReceive(message)
|
|
93
|
+
if (verifyXml) {
|
|
94
|
+
const payload = verifyXml.msg.$
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
contactId: payload.fromusername,
|
|
98
|
+
hello: payload.content,
|
|
99
|
+
id: message.id,
|
|
100
|
+
scene: parseInt(payload.scene, 10),
|
|
101
|
+
stranger: payload.encryptusername,
|
|
102
|
+
// 这里的ticket并非wechaty原始意义上的ticket
|
|
103
|
+
// 因为接口不同,所以这里存放的是原始xml
|
|
104
|
+
ticket: payload.ticket,
|
|
105
|
+
timestamp: message.timeStamp,
|
|
106
|
+
type: PUPPET.types.Friendship.Receive,
|
|
107
|
+
sourceNickName: payload.sourcenickname,
|
|
108
|
+
sourceContactId: payload.sourceusername,
|
|
109
|
+
shareCardNickName: payload.sharecardnickname,
|
|
110
|
+
shareCardContactId: payload.sharecardusername,
|
|
111
|
+
} as PUPPET.payloads.FriendshipReceive
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return null
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
2
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
3
|
+
import type { EventPayload } from './event.js'
|
|
4
|
+
|
|
5
|
+
export default async (_puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
|
|
6
|
+
return message
|
|
7
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { parseAppmsgMessagePayload, AppMessagePayload, AppMessageType } from '../messages/message-appmsg.js'
|
|
2
|
+
import { isRoomId } from '../utils/is-type.js'
|
|
3
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
4
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
5
|
+
import type { EventPayload } from './event.js'
|
|
6
|
+
|
|
7
|
+
const ROOM_OTHER_INVITE_TITLE_ZH = [ /邀请你加入群聊/ ]
|
|
8
|
+
const ROOM_OTHER_INVITE_TITLE_EN = [ /Group Chat Invitation/ ]
|
|
9
|
+
const ROOM_OTHER_INVITE_LIST_ZH = [ /^"(.+)"邀请你加入群聊(.*),进入可查看详情。/ ]
|
|
10
|
+
const ROOM_OTHER_INVITE_LIST_EN = [ /"(.+)" invited you to join the group chat "(.+)"\. Enter to view details\./ ]
|
|
11
|
+
|
|
12
|
+
export default async (_puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
|
|
13
|
+
let appMsgPayload: AppMessagePayload
|
|
14
|
+
try {
|
|
15
|
+
appMsgPayload = await parseAppmsgMessagePayload(message.msg)
|
|
16
|
+
} catch (e) {
|
|
17
|
+
return null
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (appMsgPayload.type !== AppMessageType.Url) {
|
|
21
|
+
return null
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (!appMsgPayload.title || !appMsgPayload.des) {
|
|
25
|
+
return null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let matchesForOtherInviteTitleEn = null as null | string[]
|
|
29
|
+
let matchesForOtherInviteTitleZh = null as null | string[]
|
|
30
|
+
let matchesForOtherInviteEn = null as null | string[]
|
|
31
|
+
let matchesForOtherInviteZh = null as null | string[]
|
|
32
|
+
|
|
33
|
+
ROOM_OTHER_INVITE_TITLE_EN.some((regex) => !!(matchesForOtherInviteTitleEn = appMsgPayload.title.match(regex)))
|
|
34
|
+
ROOM_OTHER_INVITE_TITLE_ZH.some((regex) => !!(matchesForOtherInviteTitleZh = appMsgPayload.title.match(regex)))
|
|
35
|
+
ROOM_OTHER_INVITE_LIST_EN.some((regex) => !!(matchesForOtherInviteEn = appMsgPayload.des!.match(regex)))
|
|
36
|
+
ROOM_OTHER_INVITE_LIST_ZH.some((regex) => !!(matchesForOtherInviteZh = appMsgPayload.des!.match(regex)))
|
|
37
|
+
|
|
38
|
+
const titleMatch = matchesForOtherInviteTitleEn || matchesForOtherInviteTitleZh
|
|
39
|
+
const matchInviteEvent = matchesForOtherInviteEn || matchesForOtherInviteZh
|
|
40
|
+
const matches = !!titleMatch && !!matchInviteEvent
|
|
41
|
+
|
|
42
|
+
if (!matches) {
|
|
43
|
+
return null
|
|
44
|
+
}
|
|
45
|
+
let receiverId = ''
|
|
46
|
+
// 如果不是群,则接收人是机器人 是群的话,接收人为群
|
|
47
|
+
if (!isRoomId(message.talkerId)) {
|
|
48
|
+
receiverId = _puppet.currentUserId
|
|
49
|
+
} else {
|
|
50
|
+
receiverId = message.talkerId
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
avatar: appMsgPayload.thumburl,
|
|
55
|
+
id: message.id,
|
|
56
|
+
invitation: appMsgPayload.url,
|
|
57
|
+
inviterId: message.talkerId,
|
|
58
|
+
memberCount: 0,
|
|
59
|
+
memberIdList: [],
|
|
60
|
+
receiverId,
|
|
61
|
+
timestamp: message.timeStamp,
|
|
62
|
+
topic: matchInviteEvent![2],
|
|
63
|
+
} as PUPPET.payloads.RoomInvitation
|
|
64
|
+
}
|