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.
Files changed (352) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +14 -0
  3. package/dist/cjs/package.json +3 -0
  4. package/dist/cjs/src/cleanup.d.ts +4 -0
  5. package/dist/cjs/src/cleanup.d.ts.map +1 -0
  6. package/dist/cjs/src/cleanup.js +31 -0
  7. package/dist/cjs/src/config.d.ts +5 -0
  8. package/dist/cjs/src/config.d.ts.map +1 -0
  9. package/dist/cjs/src/config.js +10 -0
  10. package/dist/cjs/src/engine-schema.d.ts +76 -0
  11. package/dist/cjs/src/engine-schema.d.ts.map +1 -0
  12. package/dist/cjs/src/engine-schema.js +14 -0
  13. package/dist/cjs/src/matrix/cache-manager.d.ts +58 -0
  14. package/dist/cjs/src/matrix/cache-manager.d.ts.map +1 -0
  15. package/dist/cjs/src/matrix/cache-manager.js +286 -0
  16. package/dist/cjs/src/matrix/events/event-friendship.d.ts +6 -0
  17. package/dist/cjs/src/matrix/events/event-friendship.d.ts.map +1 -0
  18. package/dist/cjs/src/matrix/events/event-friendship.js +109 -0
  19. package/dist/cjs/src/matrix/events/event-message.d.ts +6 -0
  20. package/dist/cjs/src/matrix/events/event-message.d.ts.map +1 -0
  21. package/dist/cjs/src/matrix/events/event-message.js +5 -0
  22. package/dist/cjs/src/matrix/events/event-room-invite.d.ts +6 -0
  23. package/dist/cjs/src/matrix/events/event-room-invite.d.ts.map +1 -0
  24. package/dist/cjs/src/matrix/events/event-room-invite.js +55 -0
  25. package/dist/cjs/src/matrix/events/event-room-join.d.ts +6 -0
  26. package/dist/cjs/src/matrix/events/event-room-join.d.ts.map +1 -0
  27. package/dist/cjs/src/matrix/events/event-room-join.js +127 -0
  28. package/dist/cjs/src/matrix/events/event-room-leave.d.ts +8 -0
  29. package/dist/cjs/src/matrix/events/event-room-leave.d.ts.map +1 -0
  30. package/dist/cjs/src/matrix/events/event-room-leave.js +83 -0
  31. package/dist/cjs/src/matrix/events/event-room-topic.d.ts +6 -0
  32. package/dist/cjs/src/matrix/events/event-room-topic.d.ts.map +1 -0
  33. package/dist/cjs/src/matrix/events/event-room-topic.js +56 -0
  34. package/dist/cjs/src/matrix/events/event.d.ts +28 -0
  35. package/dist/cjs/src/matrix/events/event.d.ts.map +1 -0
  36. package/dist/cjs/src/matrix/events/event.js +42 -0
  37. package/dist/cjs/src/matrix/events/mod.d.ts +3 -0
  38. package/dist/cjs/src/matrix/events/mod.d.ts.map +1 -0
  39. package/dist/cjs/src/matrix/events/mod.js +21 -0
  40. package/dist/cjs/src/matrix/messages/message-appmsg.d.ts +57 -0
  41. package/dist/cjs/src/matrix/messages/message-appmsg.d.ts.map +1 -0
  42. package/dist/cjs/src/matrix/messages/message-appmsg.js +60 -0
  43. package/dist/cjs/src/matrix/messages/message-audio.d.ts +32 -0
  44. package/dist/cjs/src/matrix/messages/message-audio.d.ts.map +1 -0
  45. package/dist/cjs/src/matrix/messages/message-audio.js +17 -0
  46. package/dist/cjs/src/matrix/messages/message-emotion.d.ts +13 -0
  47. package/dist/cjs/src/matrix/messages/message-emotion.d.ts.map +1 -0
  48. package/dist/cjs/src/matrix/messages/message-emotion.js +32 -0
  49. package/dist/cjs/src/matrix/messages/message-image.d.ts +33 -0
  50. package/dist/cjs/src/matrix/messages/message-image.d.ts.map +1 -0
  51. package/dist/cjs/src/matrix/messages/message-image.js +14 -0
  52. package/dist/cjs/src/matrix/messages/message-miniprogram.d.ts +4 -0
  53. package/dist/cjs/src/matrix/messages/message-miniprogram.d.ts.map +1 -0
  54. package/dist/cjs/src/matrix/messages/message-miniprogram.js +21 -0
  55. package/dist/cjs/src/matrix/messages/message-sysmsg.d.ts +18 -0
  56. package/dist/cjs/src/matrix/messages/message-sysmsg.d.ts.map +1 -0
  57. package/dist/cjs/src/matrix/messages/message-sysmsg.js +76 -0
  58. package/dist/cjs/src/matrix/messages/message-video.d.ts +43 -0
  59. package/dist/cjs/src/matrix/messages/message-video.d.ts.map +1 -0
  60. package/dist/cjs/src/matrix/messages/message-video.js +20 -0
  61. package/dist/cjs/src/matrix/messages/sysmsg/message-pat.d.ts +14 -0
  62. package/dist/cjs/src/matrix/messages/sysmsg/message-pat.d.ts.map +1 -0
  63. package/dist/cjs/src/matrix/messages/sysmsg/message-pat.js +11 -0
  64. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts +19 -0
  65. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -0
  66. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.js +48 -0
  67. package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts +59 -0
  68. package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts.map +1 -0
  69. package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.js +61 -0
  70. package/dist/cjs/src/matrix/messages/sysmsg/message-todo.d.ts +31 -0
  71. package/dist/cjs/src/matrix/messages/sysmsg/message-todo.d.ts.map +1 -0
  72. package/dist/cjs/src/matrix/messages/sysmsg/message-todo.js +16 -0
  73. package/dist/cjs/src/matrix/schema-mapper/contact.d.ts +4 -0
  74. package/dist/cjs/src/matrix/schema-mapper/contact.d.ts.map +1 -0
  75. package/dist/cjs/src/matrix/schema-mapper/contact.js +62 -0
  76. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts +3 -0
  77. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts.map +1 -0
  78. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.js +100 -0
  79. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts +3 -0
  80. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts.map +1 -0
  81. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.js +67 -0
  82. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.d.ts +3 -0
  83. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.d.ts.map +1 -0
  84. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.js +40 -0
  85. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts +3 -0
  86. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts.map +1 -0
  87. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.js +11 -0
  88. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts +3 -0
  89. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts.map +1 -0
  90. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.js +41 -0
  91. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.d.ts +3 -0
  92. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.d.ts.map +1 -0
  93. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.js +65 -0
  94. package/dist/cjs/src/matrix/schema-mapper/message/message-parser.d.ts +13 -0
  95. package/dist/cjs/src/matrix/schema-mapper/message/message-parser.d.ts.map +1 -0
  96. package/dist/cjs/src/matrix/schema-mapper/message/message-parser.js +20 -0
  97. package/dist/cjs/src/matrix/schema-mapper/message/mod.d.ts +3 -0
  98. package/dist/cjs/src/matrix/schema-mapper/message/mod.d.ts.map +1 -0
  99. package/dist/cjs/src/matrix/schema-mapper/message/mod.js +17 -0
  100. package/dist/cjs/src/matrix/schema-mapper/message.d.ts +6 -0
  101. package/dist/cjs/src/matrix/schema-mapper/message.d.ts.map +1 -0
  102. package/dist/cjs/src/matrix/schema-mapper/message.js +47 -0
  103. package/dist/cjs/src/matrix/schema-mapper/room.d.ts +6 -0
  104. package/dist/cjs/src/matrix/schema-mapper/room.d.ts.map +1 -0
  105. package/dist/cjs/src/matrix/schema-mapper/room.js +27 -0
  106. package/dist/cjs/src/matrix/service/request.d.ts +290 -0
  107. package/dist/cjs/src/matrix/service/request.d.ts.map +1 -0
  108. package/dist/cjs/src/matrix/service/request.js +1315 -0
  109. package/dist/cjs/src/matrix/types.d.ts +34 -0
  110. package/dist/cjs/src/matrix/types.d.ts.map +1 -0
  111. package/dist/cjs/src/matrix/types.js +30 -0
  112. package/dist/cjs/src/matrix/utils/cached-promise.d.ts +5 -0
  113. package/dist/cjs/src/matrix/utils/cached-promise.d.ts.map +1 -0
  114. package/dist/cjs/src/matrix/utils/cached-promise.js +22 -0
  115. package/dist/cjs/src/matrix/utils/image-decrypt.d.ts +7 -0
  116. package/dist/cjs/src/matrix/utils/image-decrypt.d.ts.map +1 -0
  117. package/dist/cjs/src/matrix/utils/image-decrypt.js +158 -0
  118. package/dist/cjs/src/matrix/utils/index.d.ts +4 -0
  119. package/dist/cjs/src/matrix/utils/index.d.ts.map +1 -0
  120. package/dist/cjs/src/matrix/utils/index.js +32 -0
  121. package/dist/cjs/src/matrix/utils/is-type.d.ts +9 -0
  122. package/dist/cjs/src/matrix/utils/is-type.d.ts.map +1 -0
  123. package/dist/cjs/src/matrix/utils/is-type.js +72 -0
  124. package/dist/cjs/src/matrix/utils/regex.d.ts +3 -0
  125. package/dist/cjs/src/matrix/utils/regex.d.ts.map +1 -0
  126. package/dist/cjs/src/matrix/utils/regex.js +14 -0
  127. package/dist/cjs/src/matrix/utils/runner.d.ts +3 -0
  128. package/dist/cjs/src/matrix/utils/runner.d.ts.map +1 -0
  129. package/dist/cjs/src/matrix/utils/runner.js +12 -0
  130. package/dist/cjs/src/matrix/utils/string.d.ts +2 -0
  131. package/dist/cjs/src/matrix/utils/string.d.ts.map +1 -0
  132. package/dist/cjs/src/matrix/utils/string.js +7 -0
  133. package/dist/cjs/src/matrix/utils/xml-to-json.d.ts +5 -0
  134. package/dist/cjs/src/matrix/utils/xml-to-json.d.ts.map +1 -0
  135. package/dist/cjs/src/matrix/utils/xml-to-json.js +51 -0
  136. package/dist/cjs/src/mod.d.ts +5 -0
  137. package/dist/cjs/src/mod.d.ts.map +1 -0
  138. package/dist/cjs/src/mod.js +9 -0
  139. package/dist/cjs/src/package-json.d.ts +3 -0
  140. package/dist/cjs/src/package-json.d.ts.map +1 -0
  141. package/dist/cjs/src/package-json.js +4 -0
  142. package/dist/cjs/src/package-json.spec.d.ts +3 -0
  143. package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
  144. package/dist/cjs/src/package-json.spec.js +9 -0
  145. package/dist/cjs/src/puppet-matrix.d.ts +114 -0
  146. package/dist/cjs/src/puppet-matrix.d.ts.map +1 -0
  147. package/dist/cjs/src/puppet-matrix.js +1037 -0
  148. package/dist/cjs/tests/integration.spec.d.ts +3 -0
  149. package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
  150. package/dist/cjs/tests/integration.spec.js +7 -0
  151. package/dist/cjs/tests/tap.spec.d.ts +3 -0
  152. package/dist/cjs/tests/tap.spec.d.ts.map +1 -0
  153. package/dist/cjs/tests/tap.spec.js +32 -0
  154. package/dist/esm/src/cleanup.d.ts +4 -0
  155. package/dist/esm/src/cleanup.d.ts.map +1 -0
  156. package/dist/esm/src/cleanup.js +24 -0
  157. package/dist/esm/src/config.d.ts +5 -0
  158. package/dist/esm/src/config.d.ts.map +1 -0
  159. package/dist/esm/src/config.js +5 -0
  160. package/dist/esm/src/engine-schema.d.ts +76 -0
  161. package/dist/esm/src/engine-schema.d.ts.map +1 -0
  162. package/dist/esm/src/engine-schema.js +11 -0
  163. package/dist/esm/src/matrix/cache-manager.d.ts +58 -0
  164. package/dist/esm/src/matrix/cache-manager.d.ts.map +1 -0
  165. package/dist/esm/src/matrix/cache-manager.js +279 -0
  166. package/dist/esm/src/matrix/events/event-friendship.d.ts +6 -0
  167. package/dist/esm/src/matrix/events/event-friendship.d.ts.map +1 -0
  168. package/dist/esm/src/matrix/events/event-friendship.js +84 -0
  169. package/dist/esm/src/matrix/events/event-message.d.ts +6 -0
  170. package/dist/esm/src/matrix/events/event-message.d.ts.map +1 -0
  171. package/dist/esm/src/matrix/events/event-message.js +3 -0
  172. package/dist/esm/src/matrix/events/event-room-invite.d.ts +6 -0
  173. package/dist/esm/src/matrix/events/event-room-invite.d.ts.map +1 -0
  174. package/dist/esm/src/matrix/events/event-room-invite.js +53 -0
  175. package/dist/esm/src/matrix/events/event-room-join.d.ts +6 -0
  176. package/dist/esm/src/matrix/events/event-room-join.d.ts.map +1 -0
  177. package/dist/esm/src/matrix/events/event-room-join.js +125 -0
  178. package/dist/esm/src/matrix/events/event-room-leave.d.ts +8 -0
  179. package/dist/esm/src/matrix/events/event-room-leave.d.ts.map +1 -0
  180. package/dist/esm/src/matrix/events/event-room-leave.js +79 -0
  181. package/dist/esm/src/matrix/events/event-room-topic.d.ts +6 -0
  182. package/dist/esm/src/matrix/events/event-room-topic.d.ts.map +1 -0
  183. package/dist/esm/src/matrix/events/event-room-topic.js +54 -0
  184. package/dist/esm/src/matrix/events/event.d.ts +28 -0
  185. package/dist/esm/src/matrix/events/event.d.ts.map +1 -0
  186. package/dist/esm/src/matrix/events/event.js +37 -0
  187. package/dist/esm/src/matrix/events/mod.d.ts +3 -0
  188. package/dist/esm/src/matrix/events/mod.d.ts.map +1 -0
  189. package/dist/esm/src/matrix/events/mod.js +14 -0
  190. package/dist/esm/src/matrix/messages/message-appmsg.d.ts +57 -0
  191. package/dist/esm/src/matrix/messages/message-appmsg.d.ts.map +1 -0
  192. package/dist/esm/src/matrix/messages/message-appmsg.js +56 -0
  193. package/dist/esm/src/matrix/messages/message-audio.d.ts +32 -0
  194. package/dist/esm/src/matrix/messages/message-audio.d.ts.map +1 -0
  195. package/dist/esm/src/matrix/messages/message-audio.js +14 -0
  196. package/dist/esm/src/matrix/messages/message-emotion.d.ts +13 -0
  197. package/dist/esm/src/matrix/messages/message-emotion.d.ts.map +1 -0
  198. package/dist/esm/src/matrix/messages/message-emotion.js +28 -0
  199. package/dist/esm/src/matrix/messages/message-image.d.ts +33 -0
  200. package/dist/esm/src/matrix/messages/message-image.d.ts.map +1 -0
  201. package/dist/esm/src/matrix/messages/message-image.js +11 -0
  202. package/dist/esm/src/matrix/messages/message-miniprogram.d.ts +4 -0
  203. package/dist/esm/src/matrix/messages/message-miniprogram.d.ts.map +1 -0
  204. package/dist/esm/src/matrix/messages/message-miniprogram.js +18 -0
  205. package/dist/esm/src/matrix/messages/message-sysmsg.d.ts +18 -0
  206. package/dist/esm/src/matrix/messages/message-sysmsg.d.ts.map +1 -0
  207. package/dist/esm/src/matrix/messages/message-sysmsg.js +69 -0
  208. package/dist/esm/src/matrix/messages/message-video.d.ts +43 -0
  209. package/dist/esm/src/matrix/messages/message-video.d.ts.map +1 -0
  210. package/dist/esm/src/matrix/messages/message-video.js +17 -0
  211. package/dist/esm/src/matrix/messages/sysmsg/message-pat.d.ts +14 -0
  212. package/dist/esm/src/matrix/messages/sysmsg/message-pat.d.ts.map +1 -0
  213. package/dist/esm/src/matrix/messages/sysmsg/message-pat.js +8 -0
  214. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts +19 -0
  215. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -0
  216. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.js +43 -0
  217. package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts +59 -0
  218. package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts.map +1 -0
  219. package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.js +56 -0
  220. package/dist/esm/src/matrix/messages/sysmsg/message-todo.d.ts +31 -0
  221. package/dist/esm/src/matrix/messages/sysmsg/message-todo.d.ts.map +1 -0
  222. package/dist/esm/src/matrix/messages/sysmsg/message-todo.js +13 -0
  223. package/dist/esm/src/matrix/schema-mapper/contact.d.ts +4 -0
  224. package/dist/esm/src/matrix/schema-mapper/contact.d.ts.map +1 -0
  225. package/dist/esm/src/matrix/schema-mapper/contact.js +36 -0
  226. package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts +3 -0
  227. package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts.map +1 -0
  228. package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.js +73 -0
  229. package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts +3 -0
  230. package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts.map +1 -0
  231. package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.js +40 -0
  232. package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.d.ts +3 -0
  233. package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.d.ts.map +1 -0
  234. package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.js +36 -0
  235. package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts +3 -0
  236. package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts.map +1 -0
  237. package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.js +7 -0
  238. package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts +3 -0
  239. package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts.map +1 -0
  240. package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.js +37 -0
  241. package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.d.ts +3 -0
  242. package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.d.ts.map +1 -0
  243. package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.js +38 -0
  244. package/dist/esm/src/matrix/schema-mapper/message/message-parser.d.ts +13 -0
  245. package/dist/esm/src/matrix/schema-mapper/message/message-parser.d.ts.map +1 -0
  246. package/dist/esm/src/matrix/schema-mapper/message/message-parser.js +15 -0
  247. package/dist/esm/src/matrix/schema-mapper/message/mod.d.ts +3 -0
  248. package/dist/esm/src/matrix/schema-mapper/message/mod.d.ts.map +1 -0
  249. package/dist/esm/src/matrix/schema-mapper/message/mod.js +14 -0
  250. package/dist/esm/src/matrix/schema-mapper/message.d.ts +6 -0
  251. package/dist/esm/src/matrix/schema-mapper/message.d.ts.map +1 -0
  252. package/dist/esm/src/matrix/schema-mapper/message.js +21 -0
  253. package/dist/esm/src/matrix/schema-mapper/room.d.ts +6 -0
  254. package/dist/esm/src/matrix/schema-mapper/room.d.ts.map +1 -0
  255. package/dist/esm/src/matrix/schema-mapper/room.js +22 -0
  256. package/dist/esm/src/matrix/service/request.d.ts +290 -0
  257. package/dist/esm/src/matrix/service/request.d.ts.map +1 -0
  258. package/dist/esm/src/matrix/service/request.js +1286 -0
  259. package/dist/esm/src/matrix/types.d.ts +34 -0
  260. package/dist/esm/src/matrix/types.d.ts.map +1 -0
  261. package/dist/esm/src/matrix/types.js +27 -0
  262. package/dist/esm/src/matrix/utils/cached-promise.d.ts +5 -0
  263. package/dist/esm/src/matrix/utils/cached-promise.d.ts.map +1 -0
  264. package/dist/esm/src/matrix/utils/cached-promise.js +18 -0
  265. package/dist/esm/src/matrix/utils/image-decrypt.d.ts +7 -0
  266. package/dist/esm/src/matrix/utils/image-decrypt.d.ts.map +1 -0
  267. package/dist/esm/src/matrix/utils/image-decrypt.js +153 -0
  268. package/dist/esm/src/matrix/utils/index.d.ts +4 -0
  269. package/dist/esm/src/matrix/utils/index.d.ts.map +1 -0
  270. package/dist/esm/src/matrix/utils/index.js +24 -0
  271. package/dist/esm/src/matrix/utils/is-type.d.ts +9 -0
  272. package/dist/esm/src/matrix/utils/is-type.d.ts.map +1 -0
  273. package/dist/esm/src/matrix/utils/is-type.js +62 -0
  274. package/dist/esm/src/matrix/utils/regex.d.ts +3 -0
  275. package/dist/esm/src/matrix/utils/regex.d.ts.map +1 -0
  276. package/dist/esm/src/matrix/utils/regex.js +11 -0
  277. package/dist/esm/src/matrix/utils/runner.d.ts +3 -0
  278. package/dist/esm/src/matrix/utils/runner.d.ts.map +1 -0
  279. package/dist/esm/src/matrix/utils/runner.js +9 -0
  280. package/dist/esm/src/matrix/utils/string.d.ts +2 -0
  281. package/dist/esm/src/matrix/utils/string.d.ts.map +1 -0
  282. package/dist/esm/src/matrix/utils/string.js +3 -0
  283. package/dist/esm/src/matrix/utils/xml-to-json.d.ts +5 -0
  284. package/dist/esm/src/matrix/utils/xml-to-json.d.ts.map +1 -0
  285. package/dist/esm/src/matrix/utils/xml-to-json.js +45 -0
  286. package/dist/esm/src/mod.d.ts +5 -0
  287. package/dist/esm/src/mod.d.ts.map +1 -0
  288. package/dist/esm/src/mod.js +4 -0
  289. package/dist/esm/src/package-json.d.ts +3 -0
  290. package/dist/esm/src/package-json.d.ts.map +1 -0
  291. package/dist/esm/src/package-json.js +1 -0
  292. package/dist/esm/src/package-json.spec.d.ts +3 -0
  293. package/dist/esm/src/package-json.spec.d.ts.map +1 -0
  294. package/dist/esm/src/package-json.spec.js +7 -0
  295. package/dist/esm/src/puppet-matrix.d.ts +114 -0
  296. package/dist/esm/src/puppet-matrix.d.ts.map +1 -0
  297. package/dist/esm/src/puppet-matrix.js +1007 -0
  298. package/dist/esm/tests/integration.spec.d.ts +3 -0
  299. package/dist/esm/tests/integration.spec.d.ts.map +1 -0
  300. package/dist/esm/tests/integration.spec.js +5 -0
  301. package/dist/esm/tests/tap.spec.d.ts +3 -0
  302. package/dist/esm/tests/tap.spec.d.ts.map +1 -0
  303. package/dist/esm/tests/tap.spec.js +7 -0
  304. package/package.json +98 -0
  305. package/src/cleanup.ts +36 -0
  306. package/src/config.ts +15 -0
  307. package/src/engine-schema.ts +171 -0
  308. package/src/matrix/cache-manager.ts +359 -0
  309. package/src/matrix/events/event-friendship.ts +116 -0
  310. package/src/matrix/events/event-message.ts +7 -0
  311. package/src/matrix/events/event-room-invite.ts +64 -0
  312. package/src/matrix/events/event-room-join.ts +200 -0
  313. package/src/matrix/events/event-room-leave.ts +111 -0
  314. package/src/matrix/events/event-room-topic.ts +73 -0
  315. package/src/matrix/events/event.ts +60 -0
  316. package/src/matrix/events/mod.ts +16 -0
  317. package/src/matrix/messages/message-appmsg.ts +131 -0
  318. package/src/matrix/messages/message-audio.ts +48 -0
  319. package/src/matrix/messages/message-emotion.ts +68 -0
  320. package/src/matrix/messages/message-image.ts +46 -0
  321. package/src/matrix/messages/message-miniprogram.ts +45 -0
  322. package/src/matrix/messages/message-sysmsg.ts +106 -0
  323. package/src/matrix/messages/message-video.ts +62 -0
  324. package/src/matrix/messages/sysmsg/message-pat.ts +22 -0
  325. package/src/matrix/messages/sysmsg/message-revokemsg.ts +70 -0
  326. package/src/matrix/messages/sysmsg/message-sysmsgtemplate.ts +133 -0
  327. package/src/matrix/messages/sysmsg/message-todo.ts +45 -0
  328. package/src/matrix/schema-mapper/contact.ts +37 -0
  329. package/src/matrix/schema-mapper/message/message-parser-appmsg.ts +78 -0
  330. package/src/matrix/schema-mapper/message/message-parser-refermsg.ts +53 -0
  331. package/src/matrix/schema-mapper/message/message-parser-room.ts +62 -0
  332. package/src/matrix/schema-mapper/message/message-parser-single-chat.ts +12 -0
  333. package/src/matrix/schema-mapper/message/message-parser-sysmsg.ts +62 -0
  334. package/src/matrix/schema-mapper/message/message-parser-type.ts +48 -0
  335. package/src/matrix/schema-mapper/message/message-parser.ts +35 -0
  336. package/src/matrix/schema-mapper/message/mod.ts +17 -0
  337. package/src/matrix/schema-mapper/message.ts +30 -0
  338. package/src/matrix/schema-mapper/room.ts +28 -0
  339. package/src/matrix/service/request.ts +1944 -0
  340. package/src/matrix/types.ts +37 -0
  341. package/src/matrix/utils/cached-promise.ts +25 -0
  342. package/src/matrix/utils/image-decrypt.ts +198 -0
  343. package/src/matrix/utils/index.ts +34 -0
  344. package/src/matrix/utils/is-type.ts +72 -0
  345. package/src/matrix/utils/regex.ts +15 -0
  346. package/src/matrix/utils/runner.ts +12 -0
  347. package/src/matrix/utils/string.ts +3 -0
  348. package/src/matrix/utils/xml-to-json.ts +59 -0
  349. package/src/mod.ts +10 -0
  350. package/src/package-json.spec.ts +10 -0
  351. package/src/package-json.ts +11 -0
  352. 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
+ }