wechaty-puppet-matrix 0.0.36 → 0.0.37

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 (62) hide show
  1. package/dist/cjs/src/engine-schema.d.ts +1 -0
  2. package/dist/cjs/src/engine-schema.d.ts.map +1 -1
  3. package/dist/cjs/src/matrix/events/event-room-join-no-xml.d.ts.map +1 -1
  4. package/dist/cjs/src/matrix/events/event-room-join-no-xml.js +10 -7
  5. package/dist/cjs/src/matrix/events/event-room-join.d.ts.map +1 -1
  6. package/dist/cjs/src/matrix/events/event-room-join.js +1 -1
  7. package/dist/cjs/src/matrix/events/event-room-leave.d.ts.map +1 -1
  8. package/dist/cjs/src/matrix/events/event-room-leave.js +3 -3
  9. package/dist/cjs/src/matrix/events/event-room-topic.d.ts.map +1 -1
  10. package/dist/cjs/src/matrix/events/event-room-topic.js +1 -1
  11. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -1
  12. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.js +2 -4
  13. package/dist/cjs/src/matrix/schema-mapper/contact.js +1 -1
  14. package/dist/cjs/src/matrix/service/request.d.ts +17 -4
  15. package/dist/cjs/src/matrix/service/request.d.ts.map +1 -1
  16. package/dist/cjs/src/matrix/service/request.js +45 -72
  17. package/dist/cjs/src/matrix/utils/is-type.d.ts +8 -0
  18. package/dist/cjs/src/matrix/utils/is-type.d.ts.map +1 -1
  19. package/dist/cjs/src/matrix/utils/is-type.js +25 -0
  20. package/dist/cjs/src/puppet-matrix.d.ts +3 -1
  21. package/dist/cjs/src/puppet-matrix.d.ts.map +1 -1
  22. package/dist/cjs/src/puppet-matrix.js +51 -19
  23. package/dist/cjs/src/utils/normalize-filebox.d.ts +1 -3
  24. package/dist/cjs/src/utils/normalize-filebox.d.ts.map +1 -1
  25. package/dist/cjs/src/utils/normalize-filebox.js +1 -17
  26. package/dist/esm/src/engine-schema.d.ts +1 -0
  27. package/dist/esm/src/engine-schema.d.ts.map +1 -1
  28. package/dist/esm/src/matrix/events/event-room-join-no-xml.d.ts.map +1 -1
  29. package/dist/esm/src/matrix/events/event-room-join-no-xml.js +10 -7
  30. package/dist/esm/src/matrix/events/event-room-join.d.ts.map +1 -1
  31. package/dist/esm/src/matrix/events/event-room-join.js +1 -1
  32. package/dist/esm/src/matrix/events/event-room-leave.d.ts.map +1 -1
  33. package/dist/esm/src/matrix/events/event-room-leave.js +3 -3
  34. package/dist/esm/src/matrix/events/event-room-topic.d.ts.map +1 -1
  35. package/dist/esm/src/matrix/events/event-room-topic.js +1 -1
  36. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -1
  37. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.js +2 -4
  38. package/dist/esm/src/matrix/schema-mapper/contact.js +1 -1
  39. package/dist/esm/src/matrix/service/request.d.ts +17 -4
  40. package/dist/esm/src/matrix/service/request.d.ts.map +1 -1
  41. package/dist/esm/src/matrix/service/request.js +46 -73
  42. package/dist/esm/src/matrix/utils/is-type.d.ts +8 -0
  43. package/dist/esm/src/matrix/utils/is-type.d.ts.map +1 -1
  44. package/dist/esm/src/matrix/utils/is-type.js +23 -0
  45. package/dist/esm/src/puppet-matrix.d.ts +3 -1
  46. package/dist/esm/src/puppet-matrix.d.ts.map +1 -1
  47. package/dist/esm/src/puppet-matrix.js +52 -20
  48. package/dist/esm/src/utils/normalize-filebox.d.ts +1 -3
  49. package/dist/esm/src/utils/normalize-filebox.d.ts.map +1 -1
  50. package/dist/esm/src/utils/normalize-filebox.js +1 -16
  51. package/package.json +5 -2
  52. package/src/engine-schema.ts +2 -1
  53. package/src/matrix/events/event-room-join-no-xml.ts +21 -8
  54. package/src/matrix/events/event-room-join.ts +2 -4
  55. package/src/matrix/events/event-room-leave.ts +6 -4
  56. package/src/matrix/events/event-room-topic.ts +2 -1
  57. package/src/matrix/messages/sysmsg/message-revokemsg.ts +3 -4
  58. package/src/matrix/schema-mapper/contact.ts +1 -1
  59. package/src/matrix/service/request.ts +73 -88
  60. package/src/matrix/utils/is-type.ts +34 -0
  61. package/src/puppet-matrix.ts +55 -27
  62. package/src/utils/normalize-filebox.ts +0 -24
@@ -4,7 +4,7 @@ import { EventEmitter } from 'events';
4
4
  import * as PUPPET from '@juzi/wechaty-puppet';
5
5
  import { format, getUnixTime } from 'date-fns';
6
6
  import { xmlToJson } from '../utils/xml-to-json.js';
7
- import { isRoomId } from '../utils/is-type.js';
7
+ import { isRoomId, getContactType } from '../utils/is-type.js';
8
8
  import imageSize from 'image-size';
9
9
  import fs from 'fs-extra';
10
10
  import os from 'os';
@@ -34,6 +34,11 @@ export var NotifyTypeEnum;
34
34
  NotifyTypeEnum[NotifyTypeEnum["RoomMemberUpdate"] = 1047] = "RoomMemberUpdate";
35
35
  NotifyTypeEnum[NotifyTypeEnum["RoomMemberDel"] = 1048] = "RoomMemberDel";
36
36
  NotifyTypeEnum[NotifyTypeEnum["SyncMsgFailed"] = 2006] = "SyncMsgFailed";
37
+ NotifyTypeEnum[NotifyTypeEnum["WxNotifyTypeCmdIdModContact"] = 1200] = "WxNotifyTypeCmdIdModContact";
38
+ NotifyTypeEnum[NotifyTypeEnum["WxNotifyTypeCmdIdDelContact"] = 1201] = "WxNotifyTypeCmdIdDelContact";
39
+ NotifyTypeEnum[NotifyTypeEnum["WxNotifyTypeOpenImContactAdd"] = 1202] = "WxNotifyTypeOpenImContactAdd";
40
+ NotifyTypeEnum[NotifyTypeEnum["WxNotifyTypeOpenImContactDel"] = 1203] = "WxNotifyTypeOpenImContactDel";
41
+ NotifyTypeEnum[NotifyTypeEnum["WxNotifyTypeOpenImRoomContactChange"] = 1204] = "WxNotifyTypeOpenImRoomContactChange";
37
42
  })(NotifyTypeEnum || (NotifyTypeEnum = {}));
38
43
  var ContactGender;
39
44
  (function (ContactGender) {
@@ -315,6 +320,7 @@ class Client extends EventEmitter {
315
320
  server;
316
321
  tokenInfo;
317
322
  hasEmitLogout;
323
+ lastInitSeqInfo;
318
324
  emit(event, ...args) {
319
325
  return super.emit(event, ...args);
320
326
  }
@@ -333,6 +339,7 @@ class Client extends EventEmitter {
333
339
  this.restoreTimes = 0;
334
340
  this.maxRestoreTimes = 1;
335
341
  this.hasExpired = false;
342
+ this.lastInitSeqInfo = { contactSeq: 0, roomSeq: 0 };
336
343
  }
337
344
  destroy() {
338
345
  log.verbose(PRE, 'destroy()');
@@ -532,24 +539,6 @@ class Client extends EventEmitter {
532
539
  this.emit('logout', data.errmsg);
533
540
  break;
534
541
  case NotifyTypeEnum.RoomMemberAdd:
535
- this.emit('room-join', {
536
- roomId: data.room_username,
537
- inviterId: data.member_list[0]?.invite_username,
538
- joinIds: data.member_list.map((item) => item.username),
539
- joinUsers: data.member_list.map((data) => ({
540
- wxNum: data?.alias,
541
- wxid: data?.username || '',
542
- name: data?.nickname || '',
543
- sex: data?.sex,
544
- alias: '',
545
- province: data?.province || '',
546
- city: data?.city || '',
547
- country: data?.country || '',
548
- avatar: data?.big_headimg_url || data?.small_headimg_url || '',
549
- description: '',
550
- labelIdlist: data?.labelid_list,
551
- })),
552
- });
553
542
  break;
554
543
  case NotifyTypeEnum.RoomMemberDel:
555
544
  this.emit('room-leave', {
@@ -562,6 +551,11 @@ class Client extends EventEmitter {
562
551
  void this.restore();
563
552
  }
564
553
  break;
554
+ case NotifyTypeEnum.WxNotifyTypeCmdIdModContact:
555
+ case NotifyTypeEnum.WxNotifyTypeCmdIdDelContact:
556
+ log.info('contact change sync start');
557
+ await this.syncContact(false);
558
+ break;
565
559
  default:
566
560
  log.info('other data', JSON.stringify(data));
567
561
  }
@@ -891,6 +885,7 @@ class Client extends EventEmitter {
891
885
  if (contactInfo) {
892
886
  const contact = contactInfo.contact;
893
887
  return {
888
+ contactType: getContactType(contact?.userName?.string || '', contact?.bitVal, contact?.verifyFlag),
894
889
  wxNum: contact.alias,
895
890
  wxid: contact?.userName?.string || '',
896
891
  name: contact?.nickName?.string || '',
@@ -902,6 +897,8 @@ class Client extends EventEmitter {
902
897
  avatar: contact?.bigHeadImgUrl || contact?.smallHeadImgUrl || '',
903
898
  description: contact?.description,
904
899
  labelIdlist: contact?.labelIdlist,
900
+ chatroomInfoVersion: contactInfo?.chatroomInfoVersion,
901
+ chatroomVersion: contactInfo?.chatroomVersion,
905
902
  };
906
903
  }
907
904
  return undefined;
@@ -910,6 +907,7 @@ class Client extends EventEmitter {
910
907
  const contacts = res.contactList?.map((contactInfo) => {
911
908
  const contact = contactInfo.contact;
912
909
  return {
910
+ contactType: getContactType(contact?.userName?.string || '', contact?.bitVal, contact?.verifyFlag),
913
911
  wxNum: contact.alias,
914
912
  wxid: contact?.userName?.string || '',
915
913
  name: contact?.nickName?.string || '',
@@ -921,6 +919,8 @@ class Client extends EventEmitter {
921
919
  avatar: contact?.bigHeadImgUrl || contact?.smallHeadImgUrl || '',
922
920
  description: contact?.description,
923
921
  labelIdlist: contact?.labelIdlist,
922
+ chatroomInfoVersion: contactInfo?.chatroomInfoVersion,
923
+ chatroomVersion: contactInfo?.chatroomVersion,
924
924
  };
925
925
  }) || [];
926
926
  return contacts;
@@ -1043,18 +1043,30 @@ class Client extends EventEmitter {
1043
1043
  };
1044
1044
  }
1045
1045
  }
1046
- async syncContact() {
1046
+ async syncContact(init) {
1047
1047
  try {
1048
+ if (init) {
1049
+ this.lastInitSeqInfo = { contactSeq: 0, roomSeq: 0 };
1050
+ }
1048
1051
  const res = await this.postData({
1049
1052
  path: '/contact/init_contact',
1050
1053
  data: {
1051
- contact_seq: 0,
1052
- room_seq: 0,
1054
+ contact_seq: this.lastInitSeqInfo.contactSeq || 0,
1055
+ room_seq: this.lastInitSeqInfo.roomSeq || 0,
1053
1056
  },
1054
1057
  });
1055
- const contactUsernameList = res.contactUsernameList || [];
1056
- const contactsInfo = (await this.searchContact(contactUsernameList));
1057
- this.emit('update-contacts', contactsInfo || []);
1058
+ const currentWxcontactSeq = res?.currentWxcontactSeq || 0;
1059
+ const currentRoomSeq = res?.currentChatRoomContactSeq || 0;
1060
+ const continueFlag = res?.continueFlag || false;
1061
+ this.lastInitSeqInfo = { contactSeq: currentWxcontactSeq, roomSeq: currentRoomSeq };
1062
+ const contactUsernameList = res?.contactUsernameList || [];
1063
+ if (contactUsernameList.length) {
1064
+ const contactsInfo = await this.searchContact(contactUsernameList);
1065
+ this.emit('update-contacts', contactsInfo || []);
1066
+ }
1067
+ if (continueFlag) {
1068
+ await this.syncContact();
1069
+ }
1058
1070
  }
1059
1071
  catch (e) {
1060
1072
  log.error(PRE, 'syncContact(): %s', e);
@@ -1175,15 +1187,17 @@ class Client extends EventEmitter {
1175
1187
  version: 0,
1176
1188
  },
1177
1189
  });
1178
- const memeberIdList = res?.allMemberUserNameList.map((item) => item.string) || [];
1190
+ const memeberIdList = res?.allMemberUserNameList?.map((item) => item.string) || [];
1179
1191
  const allMemberCount = res.allMemberCount;
1180
1192
  const ownerId = res.chatRoomOwner;
1181
- const adminIdList = res?.adminUserNameList.map((item) => item.string) || [];
1193
+ const adminIdList = res?.adminUserNameList?.map((item) => item.string) || [];
1182
1194
  const memberList = res?.newChatroomData?.chatRoomMember
1183
- .filter((item) => item.username)
1195
+ ?.filter((item) => item.userName)
1184
1196
  .map((item) => ({
1185
- wxid: item.username,
1186
- groupNick: item?.nickname,
1197
+ wxid: item.userName,
1198
+ name: item?.nickName,
1199
+ displayName: item?.displayName,
1200
+ groupNick: item?.nickName,
1187
1201
  avatarMinUrl: item?.smallHeadImgUrl,
1188
1202
  avatarMaxUrl: item?.bigHeadImgUrl,
1189
1203
  avatar: item?.bigHeadImgUrl || item?.smallHeadImgUrl,
@@ -1198,49 +1212,8 @@ class Client extends EventEmitter {
1198
1212
  };
1199
1213
  }
1200
1214
  catch (e) {
1201
- log.error(PRE, 'getGroupMembers(%s): %s', roomId, e);
1202
- return [];
1203
- }
1204
- }
1205
- async getGroupMembers(roomId, page = 1, pageSize = 100) {
1206
- try {
1207
- const res = await this.postData({
1208
- path: '/room/get_chatroom_members',
1209
- data: {
1210
- room_username: roomId,
1211
- page_num: page,
1212
- page_size: pageSize,
1213
- },
1214
- });
1215
- const totalPage = res.total_page || 1;
1216
- const memberList = res.room_list
1217
- .filter((item) => item.username)
1218
- .map((item) => ({
1219
- wxid: item.username,
1220
- groupNick: item?.nickname,
1221
- avatarMinUrl: item?.small_headimg_url,
1222
- avatarMaxUrl: item?.big_headimg_url,
1223
- avatar: item?.big_headimg_url || item?.small_headimg_url,
1224
- inviterUserName: item?.invite_username,
1225
- country: item?.country,
1226
- province: item?.province,
1227
- city: item?.city,
1228
- displayName: item?.display_name,
1229
- sex: item?.sex,
1230
- wxNum: item?.alias,
1231
- alias: item?.remark,
1232
- }));
1233
- if (page < totalPage) {
1234
- const nextPageContacts = await this.getGroupMembers(roomId, page + 1, pageSize);
1235
- return memberList.concat(nextPageContacts);
1236
- }
1237
- else {
1238
- return memberList;
1239
- }
1240
- }
1241
- catch (e) {
1242
- log.error(PRE, 'getGroupMembers(%s): %s', roomId, e);
1243
- return [];
1215
+ log.error(PRE, 'getGroupMembersDetail(%s): %s', roomId, e);
1216
+ return {};
1244
1217
  }
1245
1218
  }
1246
1219
  async getOfficeList(page = 1, pageSize = 100) {
@@ -6,4 +6,12 @@ export declare function isContactOfficialId(id?: string): boolean;
6
6
  export declare function isStrangerV1(strangerId?: string): boolean;
7
7
  export declare function isStrangerV2(strangerId?: string): boolean;
8
8
  export declare function isPayload(payload?: object): boolean;
9
+ export declare enum ContactType {
10
+ Stranger = 0,
11
+ System = 1,
12
+ Friend = 2,
13
+ Mp = 3,
14
+ ChatRoom = 4
15
+ }
16
+ export declare function getContactType(username: string, bitVal?: number, verifyFlag?: number): ContactType;
9
17
  //# sourceMappingURL=is-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-type.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/utils/is-type.ts"],"names":[],"mappings":"AAcA,wBAAgB,QAAQ,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK9C;AAED,wBAAgB,UAAU,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED,wBAAgB,WAAW,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,aAAa,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKnD;AAED,wBAAgB,mBAAmB,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED,wBAAgB,YAAY,CAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,wBAAgB,YAAY,CAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,wBAAgB,SAAS,CAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAKpD"}
1
+ {"version":3,"file":"is-type.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/utils/is-type.ts"],"names":[],"mappings":"AAcA,wBAAgB,QAAQ,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK9C;AAED,wBAAgB,UAAU,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED,wBAAgB,WAAW,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,aAAa,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKnD;AAED,wBAAgB,mBAAmB,CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED,wBAAgB,YAAY,CAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,wBAAgB,YAAY,CAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,wBAAgB,SAAS,CAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED,oBAAY,WAAW;IACrB,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,MAAM,IAAI;IACV,EAAE,IAAI;IACN,QAAQ,IAAI;CACb;AAED,wBAAgB,cAAc,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,UAAU,SAAI,eAwB3E"}
@@ -60,3 +60,26 @@ export function isPayload(payload) {
60
60
  }
61
61
  return false;
62
62
  }
63
+ export var ContactType;
64
+ (function (ContactType) {
65
+ ContactType[ContactType["Stranger"] = 0] = "Stranger";
66
+ ContactType[ContactType["System"] = 1] = "System";
67
+ ContactType[ContactType["Friend"] = 2] = "Friend";
68
+ ContactType[ContactType["Mp"] = 3] = "Mp";
69
+ ContactType[ContactType["ChatRoom"] = 4] = "ChatRoom";
70
+ })(ContactType || (ContactType = {}));
71
+ export function getContactType(username, bitVal = 0, verifyFlag = 0) {
72
+ if (username.includes('@chatroom')) {
73
+ return ContactType.ChatRoom;
74
+ }
75
+ if (verifyFlag !== 0) {
76
+ return ContactType.Mp;
77
+ }
78
+ if (officeWxid.includes(username)) {
79
+ return ContactType.System;
80
+ }
81
+ if ((bitVal & 1) === 1) {
82
+ return ContactType.Friend;
83
+ }
84
+ return ContactType.Stranger;
85
+ }
@@ -97,6 +97,7 @@ declare class PuppetMatrix extends PUPPET.Puppet {
97
97
  roomRawPayloadParser(payload: ContactPayload): Promise<PUPPET.payloads.Room>;
98
98
  roomRawPayload(id: string): Promise<ContactPayload | undefined>;
99
99
  roomMemberRawPayload(roomId: string, contactId: string): Promise<ContactPayload>;
100
+ private _searchRoomMemberInfo;
100
101
  roomMemberRawPayloadParser(rawPayload: ContactPayload): Promise<PUPPET.payloads.RoomMember>;
101
102
  roomInvitationRawPayload(roomInvitationId: string): Promise<any>;
102
103
  roomInvitationRawPayloadParser(rawPayload: any): Promise<PUPPET.payloads.RoomInvitation>;
@@ -116,6 +117,7 @@ declare class PuppetMatrix extends PUPPET.Puppet {
116
117
  _updateRoom(roomId: string): Promise<void>;
117
118
  private _onPushContact;
118
119
  private _onPushMessage;
120
+ private _refreshRoomInfo;
119
121
  private _refreshContact;
120
122
  private _startPuppetHeart;
121
123
  private _stopPuppetHeart;
@@ -123,7 +125,7 @@ declare class PuppetMatrix extends PUPPET.Puppet {
123
125
  private _getMessageAudioFileBox;
124
126
  private _getMessageVideoFileBox;
125
127
  private _getMessageFileFileBox;
126
- syncContact(): Promise<void>;
128
+ syncContact(init?: boolean): Promise<void>;
127
129
  }
128
130
  export { PuppetMatrix, VERSION };
129
131
  export default PuppetMatrix;
@@ -1 +1 @@
1
- {"version":3,"file":"puppet-matrix.d.ts","sourceRoot":"","sources":["../../../src/puppet-matrix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puppet-matrix.d.ts","sourceRoot":"","sources":["../../../src/puppet-matrix.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import * as PUPPET from '@juzi/wechaty-puppet';
3
3
  import { FileBox, FileBoxType, } from 'file-box';
4
4
  import Client from './matrix/service/request.js';
5
5
  import { getUnixTime } from 'date-fns';
6
- import { delay, mergeWithFallback } from './matrix/utils/index.js';
6
+ import { mergeWithFallback } from './matrix/utils/index.js';
7
7
  import path from 'path';
8
8
  import { CacheManager } from './matrix/cache-manager.js';
9
9
  import { isIMContactId, isRoomId } from './matrix/utils/is-type.js';
@@ -105,14 +105,6 @@ class PuppetMatrix extends PUPPET.Puppet {
105
105
  removerId: this._self?.wxid,
106
106
  timestamp: getUnixTime(Date.now()),
107
107
  };
108
- for (const leaveId of leaveIds) {
109
- await this._cacheMgr?.deleteSingleRoomMember(roomId, leaveId);
110
- const roomInfo = await this._cacheMgr?.getRoom(roomId);
111
- if (roomInfo && roomInfo.chatroommemberList) {
112
- roomInfo.chatroommemberList = roomInfo.chatroommemberList.filter(member => member !== leaveId);
113
- await this._cacheMgr?.setRoom(roomId, roomInfo);
114
- }
115
- }
116
108
  this.emit('room-leave', payload);
117
109
  }));
118
110
  this._client.on('room-join', this.wrapAsync(async ({ roomId, inviterId, joinIds, joinUsers }) => {
@@ -349,11 +341,10 @@ class PuppetMatrix extends PUPPET.Puppet {
349
341
  async ready() {
350
342
  try {
351
343
  await this._client?.getContactList(1, 100);
352
- await this._client?.getOpenImContactList(1, 100);
353
- await delay(2000);
354
344
  await this._client?.getGroupList(1, 100);
355
- await delay(2000);
345
+ await this._client?.getOpenImContactList(1, 100);
356
346
  await this._client?.getOfficeList(1, 100);
347
+ await this.syncContact(true);
357
348
  log.silly(PRE, 'on ready');
358
349
  setTimeout(() => {
359
350
  this.emit('ready', {
@@ -943,6 +934,20 @@ class PuppetMatrix extends PUPPET.Puppet {
943
934
  return memberInfo;
944
935
  }
945
936
  }
937
+ async _searchRoomMemberInfo(roomId, name) {
938
+ const localRes = await this.roomMemberSearch(roomId, name);
939
+ if (localRes.length > 0) {
940
+ return localRes[0];
941
+ }
942
+ const roomMemberMap = await this._getRoomMemberList(roomId);
943
+ const searchMember = Object.values(roomMemberMap).find((member) => {
944
+ if (member.name === name || member.alias === name || member.remark === name || member.displayName === name) {
945
+ return true;
946
+ }
947
+ return false;
948
+ });
949
+ return searchMember?.wxid || '';
950
+ }
946
951
  async roomMemberRawPayloadParser(rawPayload) {
947
952
  return engineRoomMemberToWechaty(rawPayload);
948
953
  }
@@ -1058,7 +1063,8 @@ class PuppetMatrix extends PUPPET.Puppet {
1058
1063
  }
1059
1064
  let ret = await this._cacheMgr.getRoomMember(roomId);
1060
1065
  if (!ret || (ret && !Object.keys(ret).length) || force) {
1061
- const resMembers = await this._client?.getGroupMembers(roomId) || [];
1066
+ const roomMemberDetail = await this._client?.getGroupMembersDetail(roomId);
1067
+ const resMembers = roomMemberDetail?.memberList || [];
1062
1068
  const roomMemberMap = {};
1063
1069
  for (const roomMember of resMembers) {
1064
1070
  const hasContact = await this._cacheMgr.hasContact(roomMember.wxid);
@@ -1070,6 +1076,7 @@ class PuppetMatrix extends PUPPET.Puppet {
1070
1076
  }
1071
1077
  else {
1072
1078
  MemberInfo = await this._cacheMgr.getContact(roomMember.wxid);
1079
+ MemberInfo = mergeWithFallback(MemberInfo, roomMember);
1073
1080
  roomMemberMap[roomMember.wxid] = MemberInfo;
1074
1081
  }
1075
1082
  }
@@ -1234,7 +1241,6 @@ class PuppetMatrix extends PUPPET.Puppet {
1234
1241
  }
1235
1242
  case EventType.RoomJoin: {
1236
1243
  const roomJoin = event.payload;
1237
- await this._updateRoomMember(roomJoin.roomId);
1238
1244
  for (const joinId of roomJoin.inviteeIdList) {
1239
1245
  if (this._roomJoinTemp[`${roomJoin.roomId}-${joinId}`]) {
1240
1246
  roomJoin.inviteeIdList = roomJoin.inviteeIdList.filter(id => id !== joinId);
@@ -1251,16 +1257,46 @@ class PuppetMatrix extends PUPPET.Puppet {
1251
1257
  break;
1252
1258
  }
1253
1259
  case EventType.RoomLeave: {
1260
+ const roomLeave = event.payload;
1261
+ this.emit('room-leave', roomLeave);
1254
1262
  break;
1255
1263
  }
1256
1264
  case EventType.RoomTopic: {
1257
1265
  const roomTopic = event.payload;
1258
1266
  this.emit('room-topic', roomTopic);
1267
+ await this._refreshContact(roomTopic.roomId);
1259
1268
  break;
1260
1269
  }
1261
1270
  }
1262
1271
  }
1272
+ async _refreshRoomInfo(roomId) {
1273
+ const roomDetail = await this._client?.searchContact([roomId]);
1274
+ if (roomDetail && roomDetail.wxid) {
1275
+ await this._updateContactCache(roomDetail);
1276
+ return roomDetail;
1277
+ }
1278
+ return {
1279
+ wxNum: '',
1280
+ wxid: roomId || '',
1281
+ name: '',
1282
+ sex: 0,
1283
+ alias: '',
1284
+ province: '',
1285
+ city: '',
1286
+ country: '',
1287
+ avatar: '',
1288
+ description: '',
1289
+ labelIdlist: '',
1290
+ scene: '',
1291
+ sign: '',
1292
+ snsBgImg: '',
1293
+ };
1294
+ }
1263
1295
  async _refreshContact(wxid, isFriend) {
1296
+ if (isRoomId(wxid)) {
1297
+ const res = await this._refreshRoomInfo(wxid);
1298
+ return res;
1299
+ }
1264
1300
  const contact = await this._client?.searchContactDetail([wxid]);
1265
1301
  if (contact && !contact.wxid) {
1266
1302
  contact.wxid = wxid;
@@ -1348,16 +1384,12 @@ class PuppetMatrix extends PUPPET.Puppet {
1348
1384
  }
1349
1385
  return FileBox.fromUrl(url, { name: appPayload.title });
1350
1386
  }
1351
- async syncContact() {
1387
+ async syncContact(init) {
1352
1388
  if (!this.currentUserId) {
1353
1389
  throw new Error('Can not sync contact before login');
1354
1390
  }
1355
1391
  log.info('syncContact');
1356
- await this._client.syncContact();
1357
- await this._client?.getGroupList(1, 100);
1358
- await this._client?.getContactList(1, 100);
1359
- await this._client?.getOpenImContactList(1, 100);
1360
- await this._client?.getOfficeList(1, 100);
1392
+ await this._client.syncContact(init);
1361
1393
  }
1362
1394
  }
1363
1395
  export { PuppetMatrix, VERSION };
@@ -1,6 +1,4 @@
1
- import type { FileBox } from 'file-box';
2
1
  import { FileBoxInterface } from 'file-box';
3
2
  declare const canPassthrough: (fileBox: FileBoxInterface) => boolean;
4
- declare const normalizeFileBoxUuid: (FileBoxUuid: typeof FileBox) => (fileBox: FileBoxInterface) => Promise<FileBoxInterface | FileBox>;
5
- export { canPassthrough, normalizeFileBoxUuid, };
3
+ export { canPassthrough, };
6
4
  //# sourceMappingURL=normalize-filebox.d.ts.map
@@ -1 +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,GAAI,SAAS,gBAAgB,YA8BhD,CAAA;AAED,QAAA,MAAM,oBAAoB,GAAI,aAAa,OAAO,OAAO,MAAY,SAAS,gBAAgB,wCAkB7F,CAAA;AAED,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,CAAA"}
1
+ {"version":3,"file":"normalize-filebox.d.ts","sourceRoot":"","sources":["../../../../src/utils/normalize-filebox.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EACjB,MAA0B,UAAU,CAAA;AA4BrC,QAAA,MAAM,cAAc,GAAI,SAAS,gBAAgB,YA8BhD,CAAA;AAED,OAAO,EACL,cAAc,GACf,CAAA"}
@@ -24,19 +24,4 @@ const canPassthrough = (fileBox) => {
24
24
  return true;
25
25
  }
26
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, };
27
+ export { canPassthrough, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wechaty-puppet-matrix",
3
- "version": "0.0.36",
3
+ "version": "0.0.37",
4
4
  "description": "Puppet matrix for Wechaty",
5
5
  "type": "module",
6
6
  "typings": "./dist/esm/src/mod.d.ts",
@@ -56,6 +56,7 @@
56
56
  "@types/xml2js": "^0.4.11",
57
57
  "cross-env": "^7.0.3",
58
58
  "eslint-plugin-n": "^15.6.1",
59
+ "markdownlint": "^0.40.0",
59
60
  "npm-run-all": "^4.1.5",
60
61
  "pkg-jq": "^0.2.11",
61
62
  "qrcode-terminal": "^0.12.0",
@@ -74,12 +75,14 @@
74
75
  "cuid": "^2.1.8",
75
76
  "date-fns": "^3.6.0",
76
77
  "file-box": "^1.4.15",
78
+ "flash-store": "^1.0.6",
77
79
  "fs-extra": "^10.1.0",
78
80
  "image-size": "^1.1.1",
79
81
  "lru-cache": "^6.0.0",
80
82
  "mqtt": "^5.10.4",
81
83
  "node-cleanup": "^2.1.2",
82
- "wechaty-web-panel": "^1.6.76",
84
+ "type-fest": "^5.3.1",
85
+ "wechaty-web-panel": "^1.6.109",
83
86
  "ws": "^8.18.0",
84
87
  "xml2js": "^0.5.0"
85
88
  },
@@ -148,7 +148,8 @@ export interface ContactPayload {
148
148
  /**
149
149
  * 群公告
150
150
  */
151
- announcement?: string
151
+ announcement?: string,
152
+ displayName?: string,
152
153
  }
153
154
 
154
155
  export interface MessageRevokeInfo {
@@ -54,8 +54,6 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
54
54
  return null
55
55
  }
56
56
 
57
- // @ts-ignore
58
- await puppet._updateRoom(roomId)
59
57
  /**
60
58
  * 1. You Invite Other to join the Room
61
59
  * (including other join var qr code you shared)
@@ -68,8 +66,11 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
68
66
 
69
67
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
70
68
  if (matches) {
69
+ // @ts-ignore
70
+ await puppet._updateRoom(roomId)
71
71
  const inviteName = matches[1]!
72
- const inviteeId = (await puppet.roomMemberSearch(roomId, inviteName))[0]!
72
+ // @ts-ignore
73
+ const inviteeId = await puppet._searchRoomMemberInfo(roomId, inviteName)
73
74
 
74
75
  return {
75
76
  inviteeIdList: [ inviteeId ],
@@ -90,8 +91,11 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
90
91
  OTHER_INVITE_YOU_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)))
91
92
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
92
93
  if (matches) {
94
+ // @ts-ignore
95
+ await puppet._updateRoom(roomId)
93
96
  const inviteName = matches[1]!
94
- const inviterId = (await puppet.roomMemberSearch(roomId, inviteName))[0]!
97
+ // @ts-ignore
98
+ const inviterId = await puppet._searchRoomMemberInfo(roomId, inviteName)
95
99
 
96
100
  return {
97
101
  inviteeIdList: [ puppet.currentUserId ],
@@ -113,11 +117,16 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
113
117
  [ ...OTHER_INVITE_YOU_AND_OTHER_REGEX_LIST, ...OTHER_INVITE_OTHER_REGEX_LIST ].some((re) => !!(matches = message.msg.match(re)))
114
118
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
115
119
  if (matches) {
120
+ // @ts-ignore
121
+ await puppet._updateRoom(roomId)
116
122
  const inviteeIdList = []
117
123
  const inviterName = matches[1]
118
- const inviterId = (await puppet.roomMemberSearch(roomId, inviterName))[0]
124
+ // @ts-ignore
125
+ const inviterId = await puppet._searchRoomMemberInfo(roomId, inviterName)
119
126
  const inviteeName = matches[2]
120
- const inviteeId = (await puppet.roomMemberSearch(roomId, inviteeName))[0]
127
+ // @ts-ignore
128
+ const inviteeId = await puppet._searchRoomMemberInfo(roomId, inviteeName)
129
+
121
130
  // 如果包含ni则把机器人的id放进去
122
131
  if (message.msg.includes('你')) {
123
132
  inviteeIdList.push(puppet.currentUserId)
@@ -142,14 +151,18 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
142
151
  OTHER_JOIN_VIA_OTHER_QRCODE_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)))
143
152
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
144
153
  if (matches) {
154
+ // @ts-ignore
155
+ await puppet._updateRoom(roomId)
145
156
  const inviteeIdList = []
146
157
 
147
158
  const inviteeName = matches[1]!
148
- const inviteeId = (await puppet.roomMemberSearch(roomId, inviteeName))[0]!
159
+ // @ts-ignore
160
+ const inviteeId = await puppet._searchRoomMemberInfo(roomId, inviteeName)
149
161
  inviteeIdList.push(inviteeId)
150
162
 
151
163
  const inviterName = matches[2]
152
- const inviterId = (await puppet.roomMemberSearch(roomId, inviterName))[0]!
164
+ // @ts-ignore
165
+ const inviterId = await puppet._searchRoomMemberInfo(roomId, inviterName)
153
166
  return {
154
167
  inviteeIdList,
155
168
  inviterId,
@@ -46,9 +46,6 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
46
46
  return null
47
47
  }
48
48
 
49
- // @ts-ignore
50
- await puppet._updateRoom(roomId)
51
-
52
49
  const jsonPayload = await xmlToJson(message.msg)
53
50
  if (
54
51
  !jsonPayload
@@ -122,7 +119,8 @@ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<E
122
119
  if (!matches) {
123
120
  return null
124
121
  }
125
-
122
+ // @ts-ignore
123
+ await puppet._updateRoom(roomId)
126
124
  const checkString = (inviteeIdList: string | string[]) => {
127
125
  return typeof inviteeIdList !== 'string'
128
126
  ? inviteeIdList