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,200 @@
|
|
|
1
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
2
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
+
import { isRoomId } from '../utils/is-type.js'
|
|
4
|
+
import type { EventPayload } from './event.js'
|
|
5
|
+
import { WechatMessageType } from '../types.js'
|
|
6
|
+
import { xmlToJson, getUserName } from '../utils/xml-to-json.js'
|
|
7
|
+
|
|
8
|
+
const ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_ZH = [
|
|
9
|
+
/^你邀请"(.+)"加入了群聊 {2}\$revoke\$/,
|
|
10
|
+
/^" ?(.+)"通过扫描你分享的二维码加入群聊/,
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
const ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_ZH = [
|
|
14
|
+
/^"([^"]+?)"邀请你加入了群聊,群聊参与人还有:(.+)/,
|
|
15
|
+
/^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
|
|
16
|
+
]
|
|
17
|
+
const ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_ZH = [
|
|
18
|
+
/^"(.+)"邀请"(.+)"加入了群聊/,
|
|
19
|
+
]
|
|
20
|
+
const ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_ZH = [
|
|
21
|
+
/^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
const ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_EN = [
|
|
25
|
+
/^You invited (.+) to the group chat/,
|
|
26
|
+
/^" ?(.+)" joined group chat via the QR code you shared/,
|
|
27
|
+
]
|
|
28
|
+
const ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_EN = [
|
|
29
|
+
/^(.+) invited you to a group chat with (.+)/,
|
|
30
|
+
]
|
|
31
|
+
const ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_EN = [
|
|
32
|
+
/^(.+?) invited (.+?) to (the|a) group chat/,
|
|
33
|
+
]
|
|
34
|
+
const ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_EN = [
|
|
35
|
+
/^"(.+)" joined the group chat via the QR Code shared by "(.+)"/,
|
|
36
|
+
]
|
|
37
|
+
export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
|
|
38
|
+
const roomId = message.fromWxid || ''
|
|
39
|
+
if (!isRoomId(roomId)) {
|
|
40
|
+
return null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const timestamp = message.timeStamp
|
|
44
|
+
// 都是系统消息
|
|
45
|
+
if (message.msgType !== WechatMessageType.Sys && message.msgType !== WechatMessageType.SysTemplate) {
|
|
46
|
+
return null
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const jsonPayload = await xmlToJson(message.msg)
|
|
50
|
+
if (
|
|
51
|
+
!jsonPayload
|
|
52
|
+
|| !jsonPayload.sysmsg
|
|
53
|
+
|| !jsonPayload.sysmsg.sysmsgtemplate
|
|
54
|
+
) {
|
|
55
|
+
return null
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const content = jsonPayload.sysmsg.sysmsgtemplate.content_template.template
|
|
59
|
+
const linkList
|
|
60
|
+
= jsonPayload.sysmsg.sysmsgtemplate.content_template.link_list.link
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Process English language
|
|
64
|
+
*/
|
|
65
|
+
let matchesForBotInviteOtherEn = null as null | string[]
|
|
66
|
+
let matchesForOtherInviteBotEn = null as null | string[]
|
|
67
|
+
let matchesForOtherInviteOtherEn = null as null | string[]
|
|
68
|
+
let matchesForOtherInviteOtherQrcodeEn = null as null | string[]
|
|
69
|
+
|
|
70
|
+
ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_EN.some(
|
|
71
|
+
(regex) => !!(matchesForBotInviteOtherEn = content.match(regex)),
|
|
72
|
+
)
|
|
73
|
+
ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_EN.some(
|
|
74
|
+
(regex) => !!(matchesForOtherInviteBotEn = content.match(regex)),
|
|
75
|
+
)
|
|
76
|
+
ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_EN.some(
|
|
77
|
+
(regex) => !!(matchesForOtherInviteOtherEn = content.match(regex)),
|
|
78
|
+
)
|
|
79
|
+
ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_EN.some(
|
|
80
|
+
(regex) => !!(matchesForOtherInviteOtherQrcodeEn = content.match(regex)),
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Process Chinese language
|
|
85
|
+
*/
|
|
86
|
+
let matchesForBotInviteOtherZh = null as null | string[]
|
|
87
|
+
let matchesForOtherInviteBotZh = null as null | string[]
|
|
88
|
+
let matchesForOtherInviteOtherZh = null as null | string[]
|
|
89
|
+
let matchesForOtherInviteOtherQrcodeZh = null as null | string[]
|
|
90
|
+
|
|
91
|
+
ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_ZH.some(
|
|
92
|
+
(regex) => !!(matchesForBotInviteOtherZh = content.match(regex)),
|
|
93
|
+
)
|
|
94
|
+
ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_ZH.some(
|
|
95
|
+
(regex) => !!(matchesForOtherInviteBotZh = content.match(regex)),
|
|
96
|
+
)
|
|
97
|
+
ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_ZH.some(
|
|
98
|
+
(regex) => !!(matchesForOtherInviteOtherZh = content.match(regex)),
|
|
99
|
+
)
|
|
100
|
+
ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_ZH.some(
|
|
101
|
+
(regex) => !!(matchesForOtherInviteOtherQrcodeZh = content.match(regex)),
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
const matchesForBotInviteOther
|
|
105
|
+
= matchesForBotInviteOtherEn || matchesForBotInviteOtherZh
|
|
106
|
+
const matchesForOtherInviteBot
|
|
107
|
+
= matchesForOtherInviteBotEn || matchesForOtherInviteBotZh
|
|
108
|
+
const matchesForOtherInviteOther
|
|
109
|
+
= matchesForOtherInviteOtherEn || matchesForOtherInviteOtherZh
|
|
110
|
+
const matchesForOtherInviteOtherQrcode
|
|
111
|
+
= matchesForOtherInviteOtherQrcodeEn || matchesForOtherInviteOtherQrcodeZh
|
|
112
|
+
|
|
113
|
+
const matches
|
|
114
|
+
= matchesForBotInviteOther
|
|
115
|
+
|| matchesForOtherInviteBot
|
|
116
|
+
|| matchesForOtherInviteOther
|
|
117
|
+
|| matchesForOtherInviteOtherQrcode
|
|
118
|
+
|
|
119
|
+
if (!matches) {
|
|
120
|
+
return null
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const checkString = (inviteeIdList: string | string[]) => {
|
|
124
|
+
return typeof inviteeIdList !== 'string'
|
|
125
|
+
? inviteeIdList
|
|
126
|
+
: [ inviteeIdList ]
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Parse all Names From the Event Text
|
|
131
|
+
*/
|
|
132
|
+
if (matchesForBotInviteOther) {
|
|
133
|
+
/**
|
|
134
|
+
* 1. Bot Invite Other to join the Room
|
|
135
|
+
* (include invite via QrCode)
|
|
136
|
+
*/
|
|
137
|
+
const other = matches[1] || ''
|
|
138
|
+
const inviteeIdList = getUserName(linkList, other)
|
|
139
|
+
|
|
140
|
+
return {
|
|
141
|
+
inviteeIdList: checkString(inviteeIdList),
|
|
142
|
+
inviterId: puppet.currentUserId,
|
|
143
|
+
roomId,
|
|
144
|
+
timestamp,
|
|
145
|
+
} as PUPPET.payloads.EventRoomJoin
|
|
146
|
+
} else if (matchesForOtherInviteBot) {
|
|
147
|
+
/**
|
|
148
|
+
* 2. Other Invite Bot to join the Room
|
|
149
|
+
*/
|
|
150
|
+
// /^"([^"]+?)"邀请你加入了群聊/,
|
|
151
|
+
// /^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
|
|
152
|
+
const _inviterName = matches[1] || ''
|
|
153
|
+
const inviterId = getUserName(linkList, _inviterName)
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
inviteeIdList: [ puppet.currentUserId ],
|
|
157
|
+
inviterId,
|
|
158
|
+
roomId,
|
|
159
|
+
timestamp,
|
|
160
|
+
} as PUPPET.payloads.EventRoomJoin
|
|
161
|
+
} else if (matchesForOtherInviteOther) {
|
|
162
|
+
/**
|
|
163
|
+
* 3. Other Invite Other to a Room
|
|
164
|
+
* (NOT include invite via Qrcode)
|
|
165
|
+
*/
|
|
166
|
+
// /^"([^"]+?)"邀请"([^"]+)"加入了群聊$/,
|
|
167
|
+
// /^([^"]+?) invited ([^"]+?) to (the|a) group chat/,
|
|
168
|
+
const _inviterName = matches[1] || ''
|
|
169
|
+
const inviterId = getUserName(linkList, _inviterName)
|
|
170
|
+
|
|
171
|
+
const _others = matches[2] || ''
|
|
172
|
+
const inviteeIdList = getUserName(linkList, _others)
|
|
173
|
+
|
|
174
|
+
return {
|
|
175
|
+
inviteeIdList: checkString(inviteeIdList),
|
|
176
|
+
inviterId,
|
|
177
|
+
roomId,
|
|
178
|
+
timestamp,
|
|
179
|
+
} as PUPPET.payloads.EventRoomJoin
|
|
180
|
+
} else if (matchesForOtherInviteOtherQrcode) {
|
|
181
|
+
/**
|
|
182
|
+
* 4. Other Invite Other via Qrcode to join a Room
|
|
183
|
+
* /^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
|
|
184
|
+
*/
|
|
185
|
+
const _inviterName = matches[2] || ''
|
|
186
|
+
const inviterId = getUserName(linkList, _inviterName)
|
|
187
|
+
|
|
188
|
+
const other = matches[1] || ''
|
|
189
|
+
const inviteeIdList = getUserName(linkList, other)
|
|
190
|
+
|
|
191
|
+
return {
|
|
192
|
+
inviteeIdList: checkString(inviteeIdList),
|
|
193
|
+
inviterId,
|
|
194
|
+
roomId,
|
|
195
|
+
timestamp,
|
|
196
|
+
} as PUPPET.payloads.EventRoomJoin
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return null
|
|
200
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
2
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
+
import { isRoomId } from '../utils/is-type.js'
|
|
4
|
+
import type { EventPayload } from './event.js'
|
|
5
|
+
import { WechatMessageType } from '../types.js'
|
|
6
|
+
import { executeRunners } from '../utils/runner.js'
|
|
7
|
+
|
|
8
|
+
const YOU_REMOVE_OTHER_REGEX_LIST = [
|
|
9
|
+
/^(你)将"(.+)"移出了群聊/,
|
|
10
|
+
/^(You) removed "(.+)" from the group chat/,
|
|
11
|
+
]
|
|
12
|
+
const OTHER_REMOVE_YOU_REGEX_LIST = [
|
|
13
|
+
/^(你)被"([^"]+?)"移出群聊/,
|
|
14
|
+
/^(You) were removed from the group chat by "([^"]+)"/,
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
const roomLeaveDebounceMap: Map<string, ReturnType<typeof setTimeout>> = new Map()
|
|
18
|
+
const DEBOUNCE_TIMEOUT = 3600 * 1000 // 1 hour
|
|
19
|
+
|
|
20
|
+
function roomLeaveDebounceKey (roomId: string, removeeId: string) {
|
|
21
|
+
return `${roomId}:${removeeId}`
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function roomLeaveAddDebounce (roomId: string, removeeId: string) {
|
|
25
|
+
const key = roomLeaveDebounceKey(roomId, removeeId)
|
|
26
|
+
const oldTimeout = roomLeaveDebounceMap.get(key)
|
|
27
|
+
if (oldTimeout) {
|
|
28
|
+
clearTimeout(oldTimeout)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const timeout = setTimeout(() => {
|
|
32
|
+
roomLeaveDebounceMap.delete(key)
|
|
33
|
+
}, DEBOUNCE_TIMEOUT)
|
|
34
|
+
roomLeaveDebounceMap.set(key, timeout)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// to fix: https://github.com/padlocal/wechaty-puppet-padlocal/issues/43
|
|
38
|
+
export function removeRoomLeaveDebounce (roomId: string, removeeId: string) {
|
|
39
|
+
const key = roomLeaveDebounceKey(roomId, removeeId)
|
|
40
|
+
roomLeaveDebounceMap.delete(key)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function isRoomLeaveDebouncing (roomId: string, removeeId: string): boolean {
|
|
44
|
+
const key = roomLeaveDebounceKey(roomId, removeeId)
|
|
45
|
+
return roomLeaveDebounceMap.get(key) !== undefined
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
|
|
49
|
+
const roomId = message.fromWxid || ''
|
|
50
|
+
if (!isRoomId(roomId) || message.msgType !== WechatMessageType.Sys) {
|
|
51
|
+
return null
|
|
52
|
+
}
|
|
53
|
+
// @ts-ignore
|
|
54
|
+
await puppet._updateRoom(roomId)
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 1. 我将别人移除
|
|
58
|
+
* /^(你)将"(.+)"移出了群聊/,
|
|
59
|
+
* 我移除别人是 10000: https://gist.github.com/padlocal/5676b96ad0ca918fdd53849417eff422
|
|
60
|
+
*/
|
|
61
|
+
const youRemoveOther = async () => {
|
|
62
|
+
let matches: null | string[] = null
|
|
63
|
+
YOU_REMOVE_OTHER_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)))
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
65
|
+
if (matches) {
|
|
66
|
+
const removerName = matches[2]!
|
|
67
|
+
const removerId = (await puppet.roomMemberSearch(roomId, removerName))[0]!
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
removeeIdList: [ removerId ],
|
|
71
|
+
removerId: puppet.currentUserId,
|
|
72
|
+
roomId,
|
|
73
|
+
timestamp: message.timeStamp,
|
|
74
|
+
} as PUPPET.payloads.EventRoomLeave
|
|
75
|
+
}
|
|
76
|
+
return null
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* 2. 别人移除我
|
|
81
|
+
* /^(你)被"([^"]+?)"移出群聊/,
|
|
82
|
+
* // 我被别人移除是 10000:https://gist.github.com/padlocal/60be89334d4d743937f07023da20291e
|
|
83
|
+
*/
|
|
84
|
+
const otherRemoveYou = async () => {
|
|
85
|
+
let matches: null | string[] = null
|
|
86
|
+
OTHER_REMOVE_YOU_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)))
|
|
87
|
+
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
89
|
+
if (matches) {
|
|
90
|
+
const removerName = matches[2]!
|
|
91
|
+
const removerId = (await puppet.roomMemberSearch(roomId, removerName))[0]!
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
removeeIdList: [ puppet.currentUserId ],
|
|
95
|
+
removerId,
|
|
96
|
+
roomId,
|
|
97
|
+
timestamp: message.timeStamp,
|
|
98
|
+
} as PUPPET.payloads.EventRoomLeave
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return null
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const ret = await executeRunners<PUPPET.payloads.EventRoomLeave>([ youRemoveOther, otherRemoveYou ])
|
|
105
|
+
if (ret) {
|
|
106
|
+
ret.removeeIdList.forEach((leaverId) => {
|
|
107
|
+
roomLeaveAddDebounce(roomId, leaverId)
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
return ret
|
|
111
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
2
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
+
import { isRoomId } from '../utils/is-type.js'
|
|
4
|
+
import type { EventPayload } from './event.js'
|
|
5
|
+
import { parseTextWithRegexList } from '../utils/regex.js'
|
|
6
|
+
import { WechatMessageType } from '../types.js'
|
|
7
|
+
import { executeRunners } from '../utils/runner.js'
|
|
8
|
+
|
|
9
|
+
const OTHER_CHANGE_TOPIC_REGEX_LIST = [
|
|
10
|
+
/^"(.+)"修改群名为“(.+)”$/,
|
|
11
|
+
/^"(.+)" changed the group name to "(.+)"$/,
|
|
12
|
+
]
|
|
13
|
+
const YOU_CHANGE_TOPIC_REGEX_LIST = [
|
|
14
|
+
/^(你)修改群名为“(.+)”$/,
|
|
15
|
+
/^(You) changed the group name to "(.+)"$/,
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
type TopicChange = {changerId: string, newTopic: string};
|
|
19
|
+
|
|
20
|
+
export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
|
|
21
|
+
const roomId = message.fromWxid || ''
|
|
22
|
+
if (!isRoomId(roomId) || message.msgType !== WechatMessageType.Sys) {
|
|
23
|
+
return null
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* 1. Message payload "you change the room topic" is plain text with type 10000 : https://gist.github.com/padlocal/0c7bb4f5d51e7e94a0efa108bebb4645
|
|
28
|
+
* 你修改群名
|
|
29
|
+
*/
|
|
30
|
+
const youChangeTopic = async () => {
|
|
31
|
+
return parseTextWithRegexList(message.msg, YOU_CHANGE_TOPIC_REGEX_LIST, async (_, match) => {
|
|
32
|
+
const newTopic = match[2]
|
|
33
|
+
return {
|
|
34
|
+
changerId: puppet.currentUserId,
|
|
35
|
+
newTopic,
|
|
36
|
+
} as TopicChange
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 2. Message payload "others change room topic" is xml text with type 10002: https://gist.github.com/padlocal/3480ada677839c8c11578d47e820e893
|
|
42
|
+
* 别人修改群名
|
|
43
|
+
*/
|
|
44
|
+
const otherChangeTopic = async () => {
|
|
45
|
+
return parseTextWithRegexList(message.msg, OTHER_CHANGE_TOPIC_REGEX_LIST, async (_, match) => {
|
|
46
|
+
const newTopic = match[2]
|
|
47
|
+
const changeName = match[1]
|
|
48
|
+
let changeId = ''
|
|
49
|
+
if (changeName) {
|
|
50
|
+
changeId = (await puppet.roomMemberSearch(roomId, changeName))[0]!
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
changerId: changeId,
|
|
54
|
+
newTopic,
|
|
55
|
+
} as TopicChange
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const topicChange = await executeRunners<TopicChange>([ youChangeTopic, otherChangeTopic ])
|
|
60
|
+
if (topicChange) {
|
|
61
|
+
const room = await puppet.roomPayload(roomId)
|
|
62
|
+
const oldTopic = room.topic
|
|
63
|
+
return {
|
|
64
|
+
changerId: topicChange.changerId,
|
|
65
|
+
newTopic: topicChange.newTopic,
|
|
66
|
+
oldTopic,
|
|
67
|
+
roomId,
|
|
68
|
+
timestamp: message.timeStamp,
|
|
69
|
+
} as PUPPET.payloads.EventRoomTopic
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return null
|
|
73
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Puppet, log } from '@juzi/wechaty-puppet'
|
|
2
|
+
import type * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
+
import type { MessagePayload } from '../../engine-schema.js'
|
|
4
|
+
|
|
5
|
+
export enum EventType {
|
|
6
|
+
Message,
|
|
7
|
+
Friendship,
|
|
8
|
+
RoomInvite,
|
|
9
|
+
RoomJoin,
|
|
10
|
+
RoomLeave,
|
|
11
|
+
RoomTopic,
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface EventPayloadSpec {
|
|
15
|
+
[EventType.Message]: MessagePayload;
|
|
16
|
+
[EventType.Friendship]: PUPPET.payloads.Friendship;
|
|
17
|
+
[EventType.RoomInvite]: PUPPET.payloads.RoomInvitation;
|
|
18
|
+
[EventType.RoomJoin]: PUPPET.payloads.EventRoomJoin;
|
|
19
|
+
[EventType.RoomLeave]: PUPPET.payloads.EventRoomLeave;
|
|
20
|
+
[EventType.RoomTopic]: PUPPET.payloads.EventRoomTopic;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface Event<T extends keyof EventPayloadSpec> {
|
|
24
|
+
type: T;
|
|
25
|
+
payload: EventPayloadSpec[T];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type EventPayload = EventPayloadSpec[keyof EventPayloadSpec] | null;
|
|
29
|
+
export type EventParserHandler = (puppet: Puppet, message: MessagePayload) => Promise<EventPayload>;
|
|
30
|
+
type EventParser = { type: EventType, handler: EventParserHandler, };
|
|
31
|
+
|
|
32
|
+
const EventParserList: Array<EventParser> = []
|
|
33
|
+
export function addEventParser (eventType: EventType, parser: EventParserHandler): void {
|
|
34
|
+
EventParserList.push({
|
|
35
|
+
handler: parser,
|
|
36
|
+
type: eventType,
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export async function parseEvent (puppet: Puppet, message: MessagePayload): Promise<Event<any>> {
|
|
41
|
+
for (const parser of EventParserList) {
|
|
42
|
+
try {
|
|
43
|
+
const parsedPayload = await parser.handler(puppet, message)
|
|
44
|
+
if (parsedPayload) {
|
|
45
|
+
return {
|
|
46
|
+
payload: parsedPayload,
|
|
47
|
+
type: parser.type,
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
} catch (e) {
|
|
51
|
+
log.error('[Event]', `parse message error: ${(e as Error).stack}`)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// return normal as message bvy default
|
|
56
|
+
return {
|
|
57
|
+
payload: message,
|
|
58
|
+
type: EventType.Message,
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import friendShipParser from './event-friendship.js'
|
|
2
|
+
import roomInviteParser from './event-room-invite.js'
|
|
3
|
+
import roomJoinParser from './event-room-join.js'
|
|
4
|
+
import roomLeaveParser from './event-room-leave.js'
|
|
5
|
+
import roomTopicParser from './event-room-topic.js'
|
|
6
|
+
import messageParser from './event-message.js'
|
|
7
|
+
import { addEventParser, EventType, parseEvent } from './event.js'
|
|
8
|
+
|
|
9
|
+
addEventParser(EventType.Friendship, friendShipParser)
|
|
10
|
+
addEventParser(EventType.RoomInvite, roomInviteParser)
|
|
11
|
+
addEventParser(EventType.RoomJoin, roomJoinParser)
|
|
12
|
+
addEventParser(EventType.RoomLeave, roomLeaveParser)
|
|
13
|
+
addEventParser(EventType.RoomTopic, roomTopicParser)
|
|
14
|
+
addEventParser(EventType.Message, messageParser)
|
|
15
|
+
|
|
16
|
+
export { parseEvent, EventType }
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
2
|
+
import { xmlToJson } from '../utils/xml-to-json.js'
|
|
3
|
+
|
|
4
|
+
interface AppMsgXmlSchema {
|
|
5
|
+
msg: {
|
|
6
|
+
appmsg: {
|
|
7
|
+
title: string;
|
|
8
|
+
des: string;
|
|
9
|
+
type: string;
|
|
10
|
+
url: string;
|
|
11
|
+
appattach: {
|
|
12
|
+
totallen: string;
|
|
13
|
+
attachid: string;
|
|
14
|
+
emoticonmd5: string;
|
|
15
|
+
fileext: string;
|
|
16
|
+
cdnattachurl: string;
|
|
17
|
+
cdnthumbaeskey: string;
|
|
18
|
+
aeskey: string;
|
|
19
|
+
encryver: string;
|
|
20
|
+
islargefilemsg: string;
|
|
21
|
+
};
|
|
22
|
+
thumburl: string;
|
|
23
|
+
md5: any;
|
|
24
|
+
recorditem?: string;
|
|
25
|
+
refermsg?: {
|
|
26
|
+
type: string;
|
|
27
|
+
svrid: string;
|
|
28
|
+
fromusr: string;
|
|
29
|
+
chatusr: string;
|
|
30
|
+
displayname: string;
|
|
31
|
+
content: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
fromusername: string;
|
|
35
|
+
appinfo: {
|
|
36
|
+
appname: any;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export enum AppMessageType {
|
|
42
|
+
Text = 1,
|
|
43
|
+
Img = 2,
|
|
44
|
+
Audio = 3,
|
|
45
|
+
Video = 4,
|
|
46
|
+
Url = 5,
|
|
47
|
+
Attach = 6,
|
|
48
|
+
Open = 7,
|
|
49
|
+
Emoji = 8,
|
|
50
|
+
VoiceRemind = 9,
|
|
51
|
+
ScanGood = 10,
|
|
52
|
+
Good = 13,
|
|
53
|
+
Emotion = 15,
|
|
54
|
+
CardTicket = 16,
|
|
55
|
+
RealtimeShareLocation = 17,
|
|
56
|
+
ChatHistory = 19,
|
|
57
|
+
MiniProgram = 33,
|
|
58
|
+
MiniProgramApp = 36, // this is forwardable mini program
|
|
59
|
+
GroupNote = 53,
|
|
60
|
+
ReferMsg = 57,
|
|
61
|
+
Transfers = 2000,
|
|
62
|
+
RedEnvelopes = 2001,
|
|
63
|
+
ReaderType = 100001,
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface AppAttachPayload {
|
|
67
|
+
totallen?: number;
|
|
68
|
+
attachid?: string;
|
|
69
|
+
emoticonmd5?: string;
|
|
70
|
+
fileext?: string;
|
|
71
|
+
cdnattachurl?: string;
|
|
72
|
+
aeskey?: string;
|
|
73
|
+
cdnthumbaeskey?: string;
|
|
74
|
+
encryver?: number;
|
|
75
|
+
islargefilemsg: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface ReferMsgPayload {
|
|
79
|
+
type: string;
|
|
80
|
+
svrid: string;
|
|
81
|
+
fromusr: string;
|
|
82
|
+
chatusr: string;
|
|
83
|
+
displayname: string;
|
|
84
|
+
content: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface AppMessagePayload {
|
|
88
|
+
des?: string;
|
|
89
|
+
thumburl?: string;
|
|
90
|
+
title: string;
|
|
91
|
+
url: string;
|
|
92
|
+
appattach?: AppAttachPayload;
|
|
93
|
+
type: AppMessageType;
|
|
94
|
+
md5?: string;
|
|
95
|
+
fromusername?: string;
|
|
96
|
+
recorditem?: string;
|
|
97
|
+
refermsg?: ReferMsgPayload;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export async function parseAppmsgMessagePayload (messageContent: string): Promise<AppMessagePayload> {
|
|
101
|
+
const appMsgXml: AppMsgXmlSchema = await xmlToJson(messageContent)
|
|
102
|
+
const { title, des, url, thumburl, type, md5, recorditem } = appMsgXml?.msg.appmsg
|
|
103
|
+
|
|
104
|
+
let appattach: AppAttachPayload | undefined
|
|
105
|
+
const tmp = appMsgXml?.msg.appmsg.appattach
|
|
106
|
+
if (tmp) {
|
|
107
|
+
appattach = {
|
|
108
|
+
aeskey: tmp.aeskey,
|
|
109
|
+
attachid: tmp.attachid,
|
|
110
|
+
cdnattachurl: tmp.cdnattachurl,
|
|
111
|
+
cdnthumbaeskey: tmp.cdnthumbaeskey,
|
|
112
|
+
emoticonmd5: tmp.emoticonmd5,
|
|
113
|
+
encryver: (tmp.encryver && parseInt(tmp.encryver, 10)) || 0,
|
|
114
|
+
fileext: tmp.fileext,
|
|
115
|
+
islargefilemsg: (tmp.islargefilemsg && parseInt(tmp.islargefilemsg, 10)) || 0,
|
|
116
|
+
totallen: (tmp.totallen && parseInt(tmp.totallen, 10)) || 0,
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return {
|
|
121
|
+
appattach,
|
|
122
|
+
des,
|
|
123
|
+
md5,
|
|
124
|
+
recorditem,
|
|
125
|
+
refermsg: appMsgXml.msg.appmsg.refermsg,
|
|
126
|
+
thumburl,
|
|
127
|
+
title,
|
|
128
|
+
type: parseInt(type, 10),
|
|
129
|
+
url,
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MessagePayload } from '../../engine-schema.js'
|
|
2
|
+
import { xmlToJson } from '../utils/xml-to-json.js'
|
|
3
|
+
|
|
4
|
+
export interface VoiceXmlSchema {
|
|
5
|
+
msg: {
|
|
6
|
+
voicemsg: {
|
|
7
|
+
$: {
|
|
8
|
+
endflag: string
|
|
9
|
+
cancelflag: string
|
|
10
|
+
forwardflag: string
|
|
11
|
+
voiceformat: string
|
|
12
|
+
voicelength: string
|
|
13
|
+
length: string
|
|
14
|
+
bufid: string
|
|
15
|
+
aeskey: string
|
|
16
|
+
voiceurl: string
|
|
17
|
+
voicemd5: string
|
|
18
|
+
clientmsgid: string
|
|
19
|
+
fromusername: string
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface AudioMessagePayload {
|
|
26
|
+
aesKey: string,
|
|
27
|
+
length: string,
|
|
28
|
+
voicelength: string,
|
|
29
|
+
voiceurl: string,
|
|
30
|
+
voicemd5: string,
|
|
31
|
+
clientmsgid: string,
|
|
32
|
+
fromusername: string,
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export async function parseAudioMessagePayload (rawPayload: MessagePayload): Promise<AudioMessagePayload> {
|
|
36
|
+
const audioXml: VoiceXmlSchema = await xmlToJson(rawPayload.msg)
|
|
37
|
+
const schema = audioXml.msg.voicemsg.$
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
aesKey: schema.aeskey,
|
|
41
|
+
length: schema.length,
|
|
42
|
+
voicelength: schema.length,
|
|
43
|
+
voiceurl: schema.voiceurl,
|
|
44
|
+
voicemd5: schema.voicemd5,
|
|
45
|
+
clientmsgid: schema.clientmsgid,
|
|
46
|
+
fromusername: schema.fromusername,
|
|
47
|
+
}
|
|
48
|
+
}
|