wechaty-puppet-matrix 0.0.10 → 0.0.12

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 (39) hide show
  1. package/dist/cjs/src/matrix/cache-manager.js +1 -1
  2. package/dist/cjs/src/matrix/service/request.d.ts +55 -0
  3. package/dist/cjs/src/matrix/service/request.d.ts.map +1 -1
  4. package/dist/cjs/src/matrix/service/request.js +349 -1
  5. package/dist/cjs/src/matrix/utils/index.d.ts +3 -0
  6. package/dist/cjs/src/matrix/utils/index.d.ts.map +1 -1
  7. package/dist/cjs/src/matrix/utils/index.js +31 -0
  8. package/dist/cjs/src/puppet-matrix.d.ts +6 -0
  9. package/dist/cjs/src/puppet-matrix.d.ts.map +1 -1
  10. package/dist/cjs/src/puppet-matrix.js +84 -0
  11. package/dist/cjs/src/utils/normalize-filebox.d.ts +6 -0
  12. package/dist/cjs/src/utils/normalize-filebox.d.ts.map +1 -0
  13. package/dist/cjs/src/utils/normalize-filebox.js +46 -0
  14. package/dist/cjs/src/utils/sns-xml-generator.d.ts +19 -0
  15. package/dist/cjs/src/utils/sns-xml-generator.d.ts.map +1 -0
  16. package/dist/cjs/src/utils/sns-xml-generator.js +171 -0
  17. package/dist/esm/src/matrix/cache-manager.js +1 -1
  18. package/dist/esm/src/matrix/service/request.d.ts +55 -0
  19. package/dist/esm/src/matrix/service/request.d.ts.map +1 -1
  20. package/dist/esm/src/matrix/service/request.js +349 -1
  21. package/dist/esm/src/matrix/utils/index.d.ts +3 -0
  22. package/dist/esm/src/matrix/utils/index.d.ts.map +1 -1
  23. package/dist/esm/src/matrix/utils/index.js +28 -0
  24. package/dist/esm/src/puppet-matrix.d.ts +6 -0
  25. package/dist/esm/src/puppet-matrix.d.ts.map +1 -1
  26. package/dist/esm/src/puppet-matrix.js +85 -1
  27. package/dist/esm/src/utils/normalize-filebox.d.ts +6 -0
  28. package/dist/esm/src/utils/normalize-filebox.d.ts.map +1 -0
  29. package/dist/esm/src/utils/normalize-filebox.js +42 -0
  30. package/dist/esm/src/utils/sns-xml-generator.d.ts +19 -0
  31. package/dist/esm/src/utils/sns-xml-generator.d.ts.map +1 -0
  32. package/dist/esm/src/utils/sns-xml-generator.js +165 -0
  33. package/package.json +6 -5
  34. package/src/matrix/cache-manager.ts +1 -1
  35. package/src/matrix/service/request.ts +455 -2
  36. package/src/matrix/utils/index.ts +62 -0
  37. package/src/puppet-matrix.ts +112 -1
  38. package/src/utils/normalize-filebox.ts +90 -0
  39. package/src/utils/sns-xml-generator.ts +184 -0
@@ -6,6 +6,10 @@ import * as PUPPET from '@juzi/wechaty-puppet';
6
6
  import { format, getUnixTime } from 'date-fns';
7
7
  import { xmlToJson } from '../utils/xml-to-json.js';
8
8
  import { isRoomId } from '../utils/is-type.js';
9
+ import imageSize from 'image-size';
10
+ import fs from 'fs-extra';
11
+ import os from 'os';
12
+ import path from 'path';
9
13
  const PRE = '[PuppetMatrix]';
10
14
  export var NotifyTypeEnum;
11
15
  (function (NotifyTypeEnum) {
@@ -87,6 +91,199 @@ async function getAtWxidList(source) {
87
91
  }
88
92
  return [];
89
93
  }
94
+ async function getImageInfo(imageUrl) {
95
+ try {
96
+ const response = await axios({
97
+ method: 'get',
98
+ url: imageUrl,
99
+ responseType: 'arraybuffer',
100
+ });
101
+ const fileSize = response.data.length;
102
+ const tempFilePath = path.join(os.homedir(), path.sep, '.wechaty', 'puppet-matrix-cache', path.sep, 'temp_image_' + Date.now() + path.extname(imageUrl), path.sep);
103
+ const baseDirExist = await fs.pathExists(tempFilePath);
104
+ if (!baseDirExist) {
105
+ await fs.mkdirp(tempFilePath);
106
+ }
107
+ await fs.writeFile(tempFilePath, response.data);
108
+ const dimensions = imageSize(tempFilePath);
109
+ await fs.unlink(tempFilePath);
110
+ return {
111
+ file_size: fileSize,
112
+ image_width: dimensions.width,
113
+ image_height: dimensions.height,
114
+ file_type: dimensions.type,
115
+ };
116
+ }
117
+ catch (error) {
118
+ console.error('获取图片信息错误:', error);
119
+ throw error;
120
+ }
121
+ }
122
+ const genTextSnsXml = (wxid, content) => {
123
+ const xmlTemplate = `
124
+ <TimelineObject>
125
+ <id><![CDATA[0]]></id>
126
+ <username><![CDATA[${wxid}]]></username>
127
+ <createTime><![CDATA[${Math.floor(Date.now() / 1000)}]]></createTime>
128
+ <contentDescShowType>0</contentDescShowType>
129
+ <contentDescScene>0</contentDescScene>
130
+ <private><![CDATA[0]]></private>
131
+ <contentDesc><![CDATA[${content}]]></contentDesc>
132
+ <contentattr><![CDATA[0]]></contentattr>
133
+ <sourceUserName></sourceUserName>
134
+ <sourceNickName></sourceNickName>
135
+ <statisticsData></statisticsData>
136
+ <weappInfo>
137
+ <appUserName></appUserName>
138
+ <pagePath></pagePath>
139
+ <version><![CDATA[0]]></version>
140
+ <isHidden>0</isHidden>
141
+ <debugMode><![CDATA[0]]></debugMode>
142
+ <shareActionId></shareActionId>
143
+ <isGame><![CDATA[0]]></isGame>
144
+ <messageExtraData></messageExtraData>
145
+ <subType><![CDATA[0]]></subType>
146
+ <preloadResources></preloadResources>
147
+ </weappInfo>
148
+ <canvasInfoXml></canvasInfoXml>
149
+ <ContentObject>
150
+ <contentStyle><![CDATA[2]]></contentStyle>
151
+ <contentSubStyle><![CDATA[0]]></contentSubStyle>
152
+ <title></title>
153
+ <description></description>
154
+ <contentUrl></contentUrl>
155
+ </ContentObject>
156
+ <actionInfo>
157
+ <appMsg>
158
+ <mediaTagName></mediaTagName>
159
+ <messageExt></messageExt>
160
+ <messageAction></messageAction>
161
+ </appMsg>
162
+ </actionInfo>
163
+ <appInfo><id></id></appInfo>
164
+ <publicUserName></publicUserName>
165
+ <streamvideo>
166
+ <streamvideourl></streamvideourl>
167
+ <streamvideothumburl></streamvideothumburl>
168
+ <streamvideoweburl></streamvideoweburl>
169
+ </streamvideo>
170
+ </TimelineObject>`.replace(/\s+/g, '');
171
+ return xmlTemplate;
172
+ };
173
+ const genVideoSnsXml = (wxid, content, media) => {
174
+ const xmlTemplate = `
175
+ <TimelineObject>
176
+ <id>0</id>
177
+ <username>${wxid}</username>
178
+ <createTime>${Math.floor(Date.now() / 1000)}</createTime>
179
+ <contentDesc>${content}</contentDesc>
180
+ <contentDescShowType>0</contentDescShowType>
181
+ <contentDescScene>0</contentDescScene>
182
+ <private>0</private>
183
+ <sightFolded>0</sightFolded>
184
+ <showFlag>0</showFlag>
185
+ <appInfo>
186
+ <id></id>
187
+ <version></version>
188
+ <appName></appName>
189
+ <installUrl></installUrl>
190
+ <fromUrl></fromUrl>
191
+ <isForceUpdate>0</isForceUpdate>
192
+ <isHidden>0</isHidden>
193
+ </appInfo>
194
+ <sourceUserName></sourceUserName>
195
+ <sourceNickName></sourceNickName>
196
+ <statisticsData></statisticsData>
197
+ <statExtStr></statExtStr>
198
+ <ContentObject>
199
+ <contentStyle>15</contentStyle>
200
+ <title></title>
201
+ <description>Sight</description>
202
+ <mediaList>
203
+ <media>
204
+ <id>0</id>
205
+ <type>6</type>
206
+ <title></title>
207
+ <description>测试</description>
208
+ <private>0</private>
209
+ <userData></userData>
210
+ <subType>0</subType>
211
+ <videoSize width="${media.video_width}" height="${media.video_height}"/>
212
+ <url type="1" md5="951a7d7864d685a92fd2624155794bf9" videomd5="577f55635faf44f595a69ded26d87bcc">${media.file_url}</url>
213
+ <thumb type="1">${media.thumb_url}</thumb>
214
+ <size width="${media.thumb_width}.000000" height="${media.thumb_height}.000000" totalSize="${media.file_size}"/>
215
+ <videoDuration>${media.video_duration}.000000</videoDuration>
216
+ </media>
217
+ </mediaList>
218
+ </ContentObject>
219
+ </TimelineObject>`;
220
+ return xmlTemplate;
221
+ };
222
+ const genImageSnsXml = (wxid, contentDesc, mediaList) => {
223
+ const mediaTemplate = (media) => `
224
+ <media>
225
+ <id><![CDATA[0]]></id>
226
+ <type><![CDATA[2]]></type>
227
+ <title></title>
228
+ <description></description>
229
+ <private><![CDATA[0]]></private>
230
+ <url type="1" md5="951a7d7864d685a92fd2624155794bf9"><![CDATA[${media.file_url}]]></url>
231
+ <thumb type="1"><![CDATA[${media.thumb_url}]]></thumb>
232
+ <videoDuration><![CDATA[0.0]]></videoDuration>
233
+ <size totalSize="${media.file_size}" width="${media.image_width}" height="${media.image_height}"></size>
234
+ </media>`;
235
+ const mediaString = mediaList.map(media => mediaTemplate(media)).join('');
236
+ const xmlTemplate = `
237
+ <TimelineObject>
238
+ <id><![CDATA[0]]></id>
239
+ <username><![CDATA[${wxid}]]></username>
240
+ <createTime><![CDATA[${Math.floor(Date.now() / 1000)}]]></createTime>
241
+ <contentDescShowType>0</contentDescShowType>
242
+ <contentDescScene>0</contentDescScene>
243
+ <private><![CDATA[0]]></private>
244
+ <contentDesc><![CDATA[${contentDesc}]]></contentDesc>
245
+ <contentattr><![CDATA[0]]></contentattr>
246
+ <sourceUserName></sourceUserName>
247
+ <sourceNickName></sourceNickName>
248
+ <statisticsData></statisticsData>
249
+ <weappInfo>
250
+ <appUserName></appUserName>
251
+ <pagePath></pagePath>
252
+ <version><![CDATA[0]]></version>
253
+ <isHidden>0</isHidden>
254
+ <debugMode><![CDATA[0]]></debugMode>
255
+ <shareActionId></shareActionId>
256
+ <isGame><![CDATA[0]]></isGame>
257
+ <messageExtraData></messageExtraData>
258
+ <subType><![CDATA[0]]></subType>
259
+ <preloadResources></preloadResources>
260
+ </weappInfo>
261
+ <canvasInfoXml></canvasInfoXml>
262
+ <ContentObject>
263
+ <contentStyle><![CDATA[1]]></contentStyle>
264
+ <contentSubStyle><![CDATA[0]]></contentSubStyle>
265
+ <title></title>
266
+ <description></description>
267
+ <contentUrl></contentUrl>
268
+ <mediaList>${mediaString}</mediaList>
269
+ </ContentObject>
270
+ <actionInfo>
271
+ <appMsg>
272
+ <mediaTagName></mediaTagName>
273
+ <messageExt></messageExt>
274
+ <messageAction></messageAction>
275
+ </appMsg>
276
+ </actionInfo>
277
+ <appInfo><id></id></appInfo>
278
+ <publicUserName></publicUserName>
279
+ <streamvideo>
280
+ <streamvideourl></streamvideourl>
281
+ <streamvideothumburl></streamvideothumburl>
282
+ <streamvideoweburl></streamvideoweburl>
283
+ </streamvideo>
284
+ </TimelineObject>`;
285
+ return xmlTemplate;
286
+ };
90
287
  class Client extends EventEmitter {
91
288
  options;
92
289
  connectionStatus = { status: 'disconnected' };
@@ -1398,7 +1595,7 @@ class Client extends EventEmitter {
1398
1595
  announcement: content,
1399
1596
  },
1400
1597
  });
1401
- if (res.baseResponse.ret) {
1598
+ if (res?.baseResponse?.ret) {
1402
1599
  log.error('sendAnnouncement error: %s', JSON.stringify(res.baseResponse));
1403
1600
  }
1404
1601
  }
@@ -1406,5 +1603,156 @@ class Client extends EventEmitter {
1406
1603
  log.error(PRE, 'sendAnnouncement(%s, %s): %s', roomId, content, error);
1407
1604
  }
1408
1605
  }
1606
+ async uploadSnsImage(url) {
1607
+ try {
1608
+ const res = await this.postData({
1609
+ path: '/cloud/cdn_upload_sns_image',
1610
+ data: {
1611
+ url,
1612
+ },
1613
+ });
1614
+ if (res?.errcode !== 0) {
1615
+ log.error('uploadSnsImage error: %s', JSON.stringify(res));
1616
+ return;
1617
+ }
1618
+ return res;
1619
+ }
1620
+ catch (error) {
1621
+ log.error(PRE, 'uploadSnsImage(%s): %s', url, error);
1622
+ }
1623
+ }
1624
+ async uploadSnsVideo(url) {
1625
+ try {
1626
+ const res = await this.postData({
1627
+ path: '/cloud/cdn_upload_sns_video',
1628
+ data: {
1629
+ url,
1630
+ },
1631
+ });
1632
+ log.info('uploadSnsVideo result:%s', res.data);
1633
+ if (res?.errcode !== 0) {
1634
+ log.error('uploadSnsVideo error: %s', JSON.stringify(res));
1635
+ }
1636
+ return res;
1637
+ }
1638
+ catch (error) {
1639
+ log.error(PRE, 'updateSnsImage(%s): %s', url, error);
1640
+ }
1641
+ }
1642
+ async sendSnsMoment(wxid, momentInfo) {
1643
+ try {
1644
+ log.info('momentInfo: %s', JSON.stringify(momentInfo));
1645
+ let xmlContent = '';
1646
+ if (momentInfo.parentId && momentInfo.rootId) {
1647
+ return await this.sendMomentReply(momentInfo.rootId, momentInfo.content, momentInfo.parentId === momentInfo.rootId ? '' : momentInfo.parentId);
1648
+ }
1649
+ if (momentInfo.imageUrls.length) {
1650
+ const imageInfo = [];
1651
+ for (const image of momentInfo.imageUrls) {
1652
+ const res = await this.uploadSnsImage(image);
1653
+ if (res) {
1654
+ const imageBaseInfo = await getImageInfo(image);
1655
+ imageInfo.push({ ...res, ...imageBaseInfo });
1656
+ }
1657
+ xmlContent = genImageSnsXml(wxid, momentInfo.content, imageInfo);
1658
+ }
1659
+ }
1660
+ else if (momentInfo.videoUrl) {
1661
+ const mediaInfo = await this.uploadSnsVideo(momentInfo.videoUrl);
1662
+ if (mediaInfo) {
1663
+ const thumbInfo = await getImageInfo(mediaInfo.thumb_url);
1664
+ xmlContent = genVideoSnsXml(wxid, momentInfo.content, { ...mediaInfo, ...thumbInfo });
1665
+ }
1666
+ }
1667
+ else {
1668
+ xmlContent = genTextSnsXml(wxid, momentInfo.content);
1669
+ }
1670
+ return await this.sendMoment(xmlContent);
1671
+ }
1672
+ catch (error) {
1673
+ log.error(PRE, 'sendSnsMoment(%s): %s', JSON.stringify(momentInfo), error);
1674
+ }
1675
+ }
1676
+ async sendMoment(content) {
1677
+ try {
1678
+ const res = await this.postData({
1679
+ path: '/sns/sns_post',
1680
+ data: {
1681
+ object_desc: content,
1682
+ with_user_list: [],
1683
+ block_user_list: [],
1684
+ group_user_list: [],
1685
+ group_contact_tag_id_list: [],
1686
+ black_contact_tag_id_list: [],
1687
+ },
1688
+ });
1689
+ if (res?.baseResponse?.ret !== 0) {
1690
+ log.error('sendMoment error: %s', JSON.stringify(res));
1691
+ return;
1692
+ }
1693
+ log.info(PRE, 'sendMomen success: %s', res?.snsObject?.id);
1694
+ return res?.snsObject?.id;
1695
+ }
1696
+ catch (error) {
1697
+ log.error(PRE, 'sendMoment(%s): %s', content, error);
1698
+ }
1699
+ }
1700
+ async unSendMoment(objectId) {
1701
+ try {
1702
+ const res = await this.postData({
1703
+ path: '/sns/sns_delete',
1704
+ data: {
1705
+ object_id: objectId,
1706
+ },
1707
+ });
1708
+ if (res?.baseResponse?.ret !== 0) {
1709
+ log.error('unSendMoment error: %s', JSON.stringify(res));
1710
+ return;
1711
+ }
1712
+ return objectId;
1713
+ }
1714
+ catch (error) {
1715
+ log.error(PRE, 'unSendMoment(%s): %s', objectId, error);
1716
+ }
1717
+ }
1718
+ async sendMomentLike(objectId, status) {
1719
+ try {
1720
+ const res = await this.postData({
1721
+ path: '/sns/sns_like',
1722
+ data: {
1723
+ object_id: objectId,
1724
+ status,
1725
+ },
1726
+ });
1727
+ if (res?.baseResponse?.ret !== 0) {
1728
+ log.error('sendMomentLike error: %s', JSON.stringify(res));
1729
+ return;
1730
+ }
1731
+ return res?.snsObject?.id;
1732
+ }
1733
+ catch (error) {
1734
+ log.error(PRE, 'sendMomentLike(%s): %s', objectId, error);
1735
+ }
1736
+ }
1737
+ async sendMomentReply(objectId, content, commentId) {
1738
+ try {
1739
+ const res = await this.postData({
1740
+ path: '/sns/sns_comment',
1741
+ data: {
1742
+ object_id: objectId,
1743
+ content,
1744
+ reply_comment_id: commentId || '0',
1745
+ },
1746
+ });
1747
+ if (res?.baseResponse?.ret !== 0) {
1748
+ log.error('sendMomentLike error: %s', JSON.stringify(res));
1749
+ return;
1750
+ }
1751
+ return res?.snsObject?.id;
1752
+ }
1753
+ catch (error) {
1754
+ log.error(PRE, 'sendMomentLike(%s): %s', objectId, error);
1755
+ }
1756
+ }
1409
1757
  }
1410
1758
  export default Client;
@@ -1,4 +1,7 @@
1
1
  export declare function delay(ms: number): Promise<void>;
2
2
  export declare function putFileTransfer(fileName: string, fileData: Buffer): Promise<string>;
3
3
  export declare function getFileName(path: string): string;
4
+ export declare function generateUniqueNumeric(digits?: number): number;
5
+ export declare function generateRandomString(length: number): string;
6
+ export declare function generateCustomRandomString(prefix: string, length: number): string;
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/utils/index.ts"],"names":[],"mappings":"AAOA,wBAAsB,KAAK,CAAE,EAAE,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,CAEpD;AAKD,wBAAsB,eAAe,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1F;AAOD,wBAAgB,WAAW,CAAE,IAAI,EAAC,MAAM,GAAG,MAAM,CAKhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/utils/index.ts"],"names":[],"mappings":"AAOA,wBAAsB,KAAK,CAAE,EAAE,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,CAEpD;AAKD,wBAAsB,eAAe,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1F;AAOD,wBAAgB,WAAW,CAAE,IAAI,EAAC,MAAM,GAAG,MAAM,CAKhD;AAOD,wBAAgB,qBAAqB,CAAE,MAAM,SAAK,UAoBjD;AAOD,wBAAgB,oBAAoB,CAAE,MAAM,EAAE,MAAM,UAUnD;AAQD,wBAAgB,0BAA0B,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAUzE"}
@@ -22,3 +22,31 @@ export function getFileName(path) {
22
22
  return path.substring(pos + 1);
23
23
  }
24
24
  }
25
+ export function generateUniqueNumeric(digits = 20) {
26
+ digits = digits - 13;
27
+ if (digits <= 0) {
28
+ throw new Error('位数长度必须大于0');
29
+ }
30
+ const currentTimestamp = Date.now();
31
+ const maxRandom = Math.pow(10, digits) - 1;
32
+ const randomPart = Math.floor(Math.random() * maxRandom);
33
+ const paddedRandomPart = randomPart.toString().padStart(digits, '0');
34
+ const uniqueNumeric = parseInt(`${currentTimestamp}${paddedRandomPart}`);
35
+ return uniqueNumeric;
36
+ }
37
+ export function generateRandomString(length) {
38
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
39
+ let result = '';
40
+ for (let i = 0; i < length; i++) {
41
+ const randomIndex = Math.floor(Math.random() * characters.length);
42
+ result += characters.charAt(randomIndex);
43
+ }
44
+ return result;
45
+ }
46
+ export function generateCustomRandomString(prefix, length) {
47
+ if (prefix.length >= length) {
48
+ throw new Error('前缀长度不能大于或等于总长度');
49
+ }
50
+ const remainingPart = generateRandomString(length - prefix.length);
51
+ return prefix + remainingPart;
52
+ }
@@ -95,6 +95,12 @@ declare class PuppetMatrix extends PUPPET.Puppet {
95
95
  roomInvitationRawPayloadParser(rawPayload: any): Promise<PUPPET.payloads.RoomInvitation>;
96
96
  friendshipRawPayloadParser(rawPayload: PUPPET.payloads.Friendship): Promise<PUPPET.payloads.Friendship>;
97
97
  friendshipRawPayload(id: string): Promise<PUPPET.payloads.Friendship>;
98
+ postPublish(payload: PUPPET.payloads.Post): Promise<void | string>;
99
+ postUnpublish(id: string): Promise<void>;
100
+ postRawPayload(id: string): Promise<PUPPET.payloads.Post | string>;
101
+ postPayloadSayable(postId: string, sayableId: string): Promise<PUPPET.payloads.Sayable>;
102
+ postRawPayloadParser(payload: PUPPET.payloads.Post): Promise<PUPPET.payloads.Post>;
103
+ tap(postId: string, type: PUPPET.types.Tap, tap?: boolean): Promise<boolean | void>;
98
104
  syncRoom(): Promise<void>;
99
105
  private _getRoomMemberList;
100
106
  private _updateContactCache;
@@ -1 +1 @@
1
- {"version":3,"file":"puppet-matrix.d.ts","sourceRoot":"","sources":["../../../src/puppet-matrix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAe,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExE,OAAO,MAAM,MAAM,6BAA6B,CAAA;AA2BhD,QAAA,MAAM,OAAO,QAAiC,CAAA;AAK9C,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,GAAG;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAA;CACb,CAAA;AAED,cAAM,YAAa,SAAQ,MAAM,CAAC,MAAM;IAaT,OAAO,EAAE,mBAAmB;IAXzD,OAAO,CAAC,SAAS,CAAC,CAAc;IAChC,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAC,CAA4B;IAC1C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAC,CAA+B;IACvD,OAAO,CAAC,eAAe,CAAC,CAAuC;IAC/D,OAAO,CAAC,eAAe,CAAC,CAAuC;IAC/D,OAAO,CAAC,sBAAsB,CAAC,CAAuC;IACtE,gBAAiC,OAAO,SAAU;gBAErB,OAAO,GAAE,mBAA+C;IAmBrF,IAAW,MAAM,uBAEhB;IAEc,OAAO,IAAK,OAAO,CAAC,IAAI,CAAC;YAS1B,YAAY;YA0GZ,YAAY;IAqB1B,OAAO,CAAC,eAAe;YAOT,UAAU;IA6CT,eAAe,CAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAS1D,aAAa;YA4Cb,OAAO;IAiCR,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAoBvB,MAAM,IAAK,OAAO,CAAC,IAAI,CAAC;YAIvB,WAAW;IAaV,MAAM,CAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,IAAI,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBpB,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,iBAAiB,IAAK,OAAO,CAAC,MAAM,CAAC;IAKrC,oBAAoB,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD,YAAY,CAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1E,YAAY,CAAE,SAAS,EAAE,MAAM,GAAyB,OAAO,CAAC,MAAM,CAAC;IACvE,YAAY,CAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/D,aAAa,CAAE,SAAS,EAAE,MAAM,GAA6B,OAAO,CAAC,gBAAgB,CAAC;IACtF,aAAa,CAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAK,OAAO,CAAC,IAAI,CAAC;IAa1E,WAAW,IAAK,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjC,wBAAwB,CAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAK7E,kBAAkB,CAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjE,aAAa,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhD,gBAAgB,CAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxE,mBAAmB,CAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3E,YAAY,CAAE,SAAS,EAAE,MAAM,EAAE,GAAI,OAAO,CAAC,IAAI,CAAC;IAKlD,iBAAiB,CAAE,SAAS,CAAC,EAAE,MAAM,GAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAW1D,gBAAgB,CAAE,YAAY,EAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvD,aAAa,CAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD5F,qBAAqB,CAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;IAQ7D,sBAAsB,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;YAU5D,iBAAiB;YAmBjB,kBAAkB;IAuBjB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnD,WAAW,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsC1D,YAAY,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS3D,kBAAkB,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;IAe5E,UAAU,CAAE,SAAS,EAAE,MAAM,GAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IAsBlE,kBAAkB,CAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;IA8BhF,eAAe,CAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0C3F,sBAAsB,CAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;IAwB3G,eAAe,CAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBxG,cAAc,CAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBxG,eAAe,CAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1F,aAAa,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASnD,cAAc,CAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCrE,OAAO,CAAE,MAAM,EAAM,MAAM,EAAE,SAAS,EAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,UAAU,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWtD,UAAU,CACvB,aAAa,EAAG,MAAM,EAAE,EACxB,KAAK,EAAW,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAKH,OAAO,CACpB,MAAM,EAAM,MAAM,EAClB,SAAS,EAAG,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAKD,QAAQ,IAAK,OAAO,CAAC,MAAM,EAAE,CAAC;IAK9B,UAAU,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5C,QAAQ,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,SAAS,CAAE,MAAM,EAAE,MAAM,GAAmB,OAAO,CAAC,MAAM,CAAC;IAC3D,SAAS,CAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAI,OAAO,CAAC,IAAI,CAAC;IAUzD,YAAY,CAAE,MAAM,EAAE,MAAM,GAAmB,OAAO,CAAC,MAAM,CAAC;IAC9D,YAAY,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAK,OAAO,CAAC,IAAI,CAAC;IAW5D,cAAc,CAAE,MAAM,EAAE,MAAM,GAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMnD,oBAAoB,CAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,uBAAuB,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IAKnF,iBAAiB,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAsBnE,uBAAuB,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IAQnF,iBAAiB,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAavD,oBAAoB,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAQ7E,cAAc,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAC,SAAS,CAAC;IAc9D,oBAAoB,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAcjF,0BAA0B,CAAE,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;IAQ5F,wBAAwB,CAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAQjE,8BAA8B,CAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;IAQzF,0BAA0B,CAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;IAQxG,oBAAoB,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;IAa/E,QAAQ;YAWA,kBAAkB;YAkClB,mBAAmB;YAgCnB,iBAAiB;IAYlB,WAAW,CAAE,MAAM,EAAC,MAAM;YAgBzB,cAAc;YAcd,cAAc;YA4Dd,eAAe;YAcf,iBAAiB;IAa/B,OAAO,CAAC,gBAAgB;YAeV,uBAAuB;YASvB,uBAAuB;YASvB,uBAAuB;YAgBvB,sBAAsB;IAuBvB,WAAW;CAQzB;AAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAA;AAEhC,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"puppet-matrix.d.ts","sourceRoot":"","sources":["../../../src/puppet-matrix.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { log } from '@juzi/wechaty-puppet';
2
2
  import * as PUPPET from '@juzi/wechaty-puppet';
3
- import { FileBox } from 'file-box';
3
+ import { FileBox, FileBoxType, } from 'file-box';
4
4
  import Client from './matrix/service/request.js';
5
5
  import { getUnixTime } from 'date-fns';
6
6
  import { delay } from './matrix/utils/index.js';
@@ -837,6 +837,90 @@ class PuppetMatrix extends PUPPET.Puppet {
837
837
  }
838
838
  return ret;
839
839
  }
840
+ async postPublish(payload) {
841
+ log.verbose(PRE, 'postPublish(%s)', payload);
842
+ if (!PUPPET.payloads.isPostClient(payload)) {
843
+ throw new Error('can only publish client post now');
844
+ }
845
+ const momentInfo = {
846
+ content: '',
847
+ mentionIdList: [],
848
+ visibledList: [],
849
+ imageUrls: [],
850
+ videoUrl: '',
851
+ urlLink: null,
852
+ channel: null,
853
+ miniInfo: null,
854
+ location: null,
855
+ rootId: '',
856
+ parentId: '',
857
+ };
858
+ for (const item of payload.sayableList) {
859
+ switch (item.type) {
860
+ case PUPPET.types.Sayable.Text:
861
+ momentInfo.content = `${momentInfo.content ? momentInfo.content + '\n' : ''}${item.payload.text}`;
862
+ momentInfo.mentionIdList = item.payload.mentions;
863
+ break;
864
+ case PUPPET.types.Sayable.Attachment: {
865
+ const fileBox = item.payload.filebox;
866
+ if (typeof item.payload.filebox !== 'string' && fileBox.type === FileBoxType.Url) {
867
+ const fileType = fileBox.mediaType && fileBox.mediaType !== 'application/octet-stream' ? fileBox.mediaType : path.extname(fileBox.name);
868
+ const fileUrl = fileBox.remoteUrl || '';
869
+ if (fileBox.mediaType.startsWith('image/')) {
870
+ momentInfo.imageUrls.push(fileUrl);
871
+ }
872
+ else if (fileType.includes('video/mp4') || fileType.includes('.mp4')) {
873
+ momentInfo.videoInfo = fileUrl;
874
+ }
875
+ }
876
+ break;
877
+ }
878
+ case PUPPET.types.Sayable.Url: {
879
+ momentInfo.urlLink = item.payload;
880
+ break;
881
+ }
882
+ case PUPPET.types.Sayable.Channel: {
883
+ momentInfo.channel = item.payload;
884
+ break;
885
+ }
886
+ case PUPPET.types.Sayable.MiniProgram: {
887
+ momentInfo.miniInfo = item.payload;
888
+ break;
889
+ }
890
+ default:
891
+ throw new Error(`postPublish unsupported type ${item.type}`);
892
+ }
893
+ }
894
+ if (payload.rootId)
895
+ momentInfo.rootId = payload.rootId;
896
+ if (payload.parentId)
897
+ momentInfo.parentId = payload.parentId;
898
+ if (payload.location)
899
+ momentInfo.location = payload.location;
900
+ momentInfo.visibleList = payload.visibleList;
901
+ const res = await this._client?.sendSnsMoment(this._self?.wxid || '', momentInfo);
902
+ return res;
903
+ }
904
+ async postUnpublish(id) {
905
+ log.verbose(PRE, 'postUnpublish(%s)', id);
906
+ await this._client?.unSendMoment(id);
907
+ }
908
+ async postRawPayload(id) {
909
+ log.verbose(PRE, 'postRawPayload(%s)', id);
910
+ return id;
911
+ }
912
+ async postPayloadSayable(postId, sayableId) {
913
+ log.verbose(PRE, 'postPayloadSayable(%s, %s)', postId, sayableId);
914
+ return postId;
915
+ }
916
+ async postRawPayloadParser(payload) {
917
+ return payload;
918
+ }
919
+ async tap(postId, type, tap = true) {
920
+ log.verbose(PRE, 'tap(%s, %s, %s)', postId, type, tap);
921
+ const res = await this._client?.sendMomentLike(postId, type);
922
+ return !!res;
923
+ }
840
924
  async syncRoom() {
841
925
  if (this.state.active() !== true) {
842
926
  throw new Error('Can not sync contact before login');
@@ -0,0 +1,6 @@
1
+ import type { FileBox } from 'file-box';
2
+ import { FileBoxInterface } from 'file-box';
3
+ declare const canPassthrough: (fileBox: FileBoxInterface) => boolean;
4
+ declare const normalizeFileBoxUuid: (FileBoxUuid: typeof FileBox) => (fileBox: FileBoxInterface) => Promise<FileBoxInterface | FileBox>;
5
+ export { canPassthrough, normalizeFileBoxUuid, };
6
+ //# sourceMappingURL=normalize-filebox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-filebox.d.ts","sourceRoot":"","sources":["../../../../src/utils/normalize-filebox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACR,MAA0B,UAAU,CAAA;AACrC,OAAO,EAEL,gBAAgB,EACjB,MAA0B,UAAU,CAAA;AA4BrC,QAAA,MAAM,cAAc,YAAa,gBAAgB,YA8BhD,CAAA;AAED,QAAA,MAAM,oBAAoB,gBAAiB,OAAO,OAAO,eAAqB,gBAAgB,wCAkB7F,CAAA;AAED,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { FileBoxType, } from 'file-box';
2
+ const PASS_THROUGH_THRESHOLD_BYTES = 20 * 1024;
3
+ const greenFileBoxTypes = [
4
+ FileBoxType.Url,
5
+ FileBoxType.Uuid,
6
+ FileBoxType.QRCode,
7
+ ];
8
+ const yellowFileBoxTypes = [];
9
+ const canPassthrough = (fileBox) => {
10
+ if (greenFileBoxTypes.includes(fileBox.type)) {
11
+ return true;
12
+ }
13
+ if (!yellowFileBoxTypes.includes(fileBox.type)) {
14
+ return false;
15
+ }
16
+ const size = fileBox.size;
17
+ if (size < 0) {
18
+ return false;
19
+ }
20
+ else if (size > PASS_THROUGH_THRESHOLD_BYTES) {
21
+ return false;
22
+ }
23
+ else {
24
+ return true;
25
+ }
26
+ };
27
+ const normalizeFileBoxUuid = (FileBoxUuid) => async (fileBox) => {
28
+ if (canPassthrough(fileBox)) {
29
+ return fileBox;
30
+ }
31
+ const stream = await fileBox.toStream();
32
+ const uuid = await FileBoxUuid
33
+ .fromStream(stream, fileBox.name)
34
+ .toUuid();
35
+ const uuidFileBox = FileBoxUuid.fromUuid(uuid, {
36
+ md5: fileBox.md5,
37
+ name: fileBox.name,
38
+ size: fileBox.size,
39
+ });
40
+ return uuidFileBox;
41
+ };
42
+ export { canPassthrough, normalizeFileBoxUuid, };
@@ -0,0 +1,19 @@
1
+ type Media = {
2
+ fileId: string;
3
+ fileSize: number;
4
+ fileType: number;
5
+ videoDuration: number;
6
+ url: string;
7
+ width: number;
8
+ height: number;
9
+ fileUrl: string;
10
+ fileKey: string;
11
+ thumbUrl: string;
12
+ thumbWidth: number;
13
+ thumbHeight: number;
14
+ };
15
+ export declare const genTextSnsXml: (wxid: string, content: string) => string;
16
+ export declare const genVideoSnsXml: (wxid: string, content: string, media: Media) => string;
17
+ export declare const genImageSnsXml: (wxid: string, contentDesc: string, mediaList: Media[]) => string;
18
+ export {};
19
+ //# sourceMappingURL=sns-xml-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sns-xml-generator.d.ts","sourceRoot":"","sources":["../../../../src/utils/sns-xml-generator.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,aAAa,SAAU,MAAM,WAAW,MAAM,KAAG,MAkD7D,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,MAAM,WAAW,MAAM,SAAS,KAAK,KAAG,MAgD5E,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,MAAM,eAAe,MAAM,aAAa,KAAK,EAAE,KAAG,MAkEtF,CAAA"}