wechaty-puppet-matrix 0.0.36 → 0.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/engine-schema.d.ts +1 -0
- package/dist/cjs/src/engine-schema.d.ts.map +1 -1
- package/dist/cjs/src/matrix/events/event-room-join-no-xml.d.ts.map +1 -1
- package/dist/cjs/src/matrix/events/event-room-join-no-xml.js +10 -7
- package/dist/cjs/src/matrix/events/event-room-join.d.ts.map +1 -1
- package/dist/cjs/src/matrix/events/event-room-join.js +1 -1
- package/dist/cjs/src/matrix/events/event-room-leave.d.ts.map +1 -1
- package/dist/cjs/src/matrix/events/event-room-leave.js +3 -3
- package/dist/cjs/src/matrix/events/event-room-topic.d.ts.map +1 -1
- package/dist/cjs/src/matrix/events/event-room-topic.js +1 -1
- package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -1
- package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.js +2 -4
- package/dist/cjs/src/matrix/schema-mapper/contact.js +1 -1
- package/dist/cjs/src/matrix/service/request.d.ts +17 -4
- package/dist/cjs/src/matrix/service/request.d.ts.map +1 -1
- package/dist/cjs/src/matrix/service/request.js +50 -75
- package/dist/cjs/src/matrix/utils/is-type.d.ts +8 -0
- package/dist/cjs/src/matrix/utils/is-type.d.ts.map +1 -1
- package/dist/cjs/src/matrix/utils/is-type.js +25 -0
- package/dist/cjs/src/puppet-matrix.d.ts +3 -1
- package/dist/cjs/src/puppet-matrix.d.ts.map +1 -1
- package/dist/cjs/src/puppet-matrix.js +51 -19
- package/dist/cjs/src/utils/normalize-filebox.d.ts +1 -3
- package/dist/cjs/src/utils/normalize-filebox.d.ts.map +1 -1
- package/dist/cjs/src/utils/normalize-filebox.js +1 -17
- package/dist/esm/src/engine-schema.d.ts +1 -0
- package/dist/esm/src/engine-schema.d.ts.map +1 -1
- package/dist/esm/src/matrix/events/event-room-join-no-xml.d.ts.map +1 -1
- package/dist/esm/src/matrix/events/event-room-join-no-xml.js +10 -7
- package/dist/esm/src/matrix/events/event-room-join.d.ts.map +1 -1
- package/dist/esm/src/matrix/events/event-room-join.js +1 -1
- package/dist/esm/src/matrix/events/event-room-leave.d.ts.map +1 -1
- package/dist/esm/src/matrix/events/event-room-leave.js +3 -3
- package/dist/esm/src/matrix/events/event-room-topic.d.ts.map +1 -1
- package/dist/esm/src/matrix/events/event-room-topic.js +1 -1
- package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -1
- package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.js +2 -4
- package/dist/esm/src/matrix/schema-mapper/contact.js +1 -1
- package/dist/esm/src/matrix/service/request.d.ts +17 -4
- package/dist/esm/src/matrix/service/request.d.ts.map +1 -1
- package/dist/esm/src/matrix/service/request.js +51 -76
- package/dist/esm/src/matrix/utils/is-type.d.ts +8 -0
- package/dist/esm/src/matrix/utils/is-type.d.ts.map +1 -1
- package/dist/esm/src/matrix/utils/is-type.js +23 -0
- package/dist/esm/src/puppet-matrix.d.ts +3 -1
- package/dist/esm/src/puppet-matrix.d.ts.map +1 -1
- package/dist/esm/src/puppet-matrix.js +52 -20
- package/dist/esm/src/utils/normalize-filebox.d.ts +1 -3
- package/dist/esm/src/utils/normalize-filebox.d.ts.map +1 -1
- package/dist/esm/src/utils/normalize-filebox.js +1 -16
- package/package.json +5 -2
- package/src/engine-schema.ts +2 -1
- package/src/matrix/events/event-room-join-no-xml.ts +21 -8
- package/src/matrix/events/event-room-join.ts +2 -4
- package/src/matrix/events/event-room-leave.ts +6 -4
- package/src/matrix/events/event-room-topic.ts +2 -1
- package/src/matrix/messages/sysmsg/message-revokemsg.ts +3 -4
- package/src/matrix/schema-mapper/contact.ts +1 -1
- package/src/matrix/service/request.ts +80 -92
- package/src/matrix/utils/is-type.ts +34 -0
- package/src/puppet-matrix.ts +55 -27
- 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()');
|
|
@@ -402,10 +409,12 @@ class Client extends EventEmitter {
|
|
|
402
409
|
const client = mqtt.connect(this.tokenInfo.mqServer, {
|
|
403
410
|
username: this.tokenInfo.mqUser,
|
|
404
411
|
password: this.tokenInfo.mqPsd,
|
|
405
|
-
keepalive:
|
|
406
|
-
reconnectPeriod:
|
|
412
|
+
keepalive: 120,
|
|
413
|
+
reconnectPeriod: 3000,
|
|
407
414
|
connectTimeout: 60 * 1000,
|
|
408
|
-
|
|
415
|
+
clean: true,
|
|
416
|
+
family: 4,
|
|
417
|
+
clientId: this.tokenInfo.guid,
|
|
409
418
|
});
|
|
410
419
|
client.on('connect', () => {
|
|
411
420
|
this.connectionStatus.status = 'connected';
|
|
@@ -532,24 +541,6 @@ class Client extends EventEmitter {
|
|
|
532
541
|
this.emit('logout', data.errmsg);
|
|
533
542
|
break;
|
|
534
543
|
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
544
|
break;
|
|
554
545
|
case NotifyTypeEnum.RoomMemberDel:
|
|
555
546
|
this.emit('room-leave', {
|
|
@@ -562,6 +553,11 @@ class Client extends EventEmitter {
|
|
|
562
553
|
void this.restore();
|
|
563
554
|
}
|
|
564
555
|
break;
|
|
556
|
+
case NotifyTypeEnum.WxNotifyTypeCmdIdModContact:
|
|
557
|
+
case NotifyTypeEnum.WxNotifyTypeCmdIdDelContact:
|
|
558
|
+
log.info('contact change sync start');
|
|
559
|
+
await this.syncContact(false);
|
|
560
|
+
break;
|
|
565
561
|
default:
|
|
566
562
|
log.info('other data', JSON.stringify(data));
|
|
567
563
|
}
|
|
@@ -891,6 +887,7 @@ class Client extends EventEmitter {
|
|
|
891
887
|
if (contactInfo) {
|
|
892
888
|
const contact = contactInfo.contact;
|
|
893
889
|
return {
|
|
890
|
+
contactType: getContactType(contact?.userName?.string || '', contact?.bitVal, contact?.verifyFlag),
|
|
894
891
|
wxNum: contact.alias,
|
|
895
892
|
wxid: contact?.userName?.string || '',
|
|
896
893
|
name: contact?.nickName?.string || '',
|
|
@@ -902,6 +899,8 @@ class Client extends EventEmitter {
|
|
|
902
899
|
avatar: contact?.bigHeadImgUrl || contact?.smallHeadImgUrl || '',
|
|
903
900
|
description: contact?.description,
|
|
904
901
|
labelIdlist: contact?.labelIdlist,
|
|
902
|
+
chatroomInfoVersion: contactInfo?.chatroomInfoVersion,
|
|
903
|
+
chatroomVersion: contactInfo?.chatroomVersion,
|
|
905
904
|
};
|
|
906
905
|
}
|
|
907
906
|
return undefined;
|
|
@@ -910,6 +909,7 @@ class Client extends EventEmitter {
|
|
|
910
909
|
const contacts = res.contactList?.map((contactInfo) => {
|
|
911
910
|
const contact = contactInfo.contact;
|
|
912
911
|
return {
|
|
912
|
+
contactType: getContactType(contact?.userName?.string || '', contact?.bitVal, contact?.verifyFlag),
|
|
913
913
|
wxNum: contact.alias,
|
|
914
914
|
wxid: contact?.userName?.string || '',
|
|
915
915
|
name: contact?.nickName?.string || '',
|
|
@@ -921,6 +921,8 @@ class Client extends EventEmitter {
|
|
|
921
921
|
avatar: contact?.bigHeadImgUrl || contact?.smallHeadImgUrl || '',
|
|
922
922
|
description: contact?.description,
|
|
923
923
|
labelIdlist: contact?.labelIdlist,
|
|
924
|
+
chatroomInfoVersion: contactInfo?.chatroomInfoVersion,
|
|
925
|
+
chatroomVersion: contactInfo?.chatroomVersion,
|
|
924
926
|
};
|
|
925
927
|
}) || [];
|
|
926
928
|
return contacts;
|
|
@@ -1043,18 +1045,30 @@ class Client extends EventEmitter {
|
|
|
1043
1045
|
};
|
|
1044
1046
|
}
|
|
1045
1047
|
}
|
|
1046
|
-
async syncContact() {
|
|
1048
|
+
async syncContact(init) {
|
|
1047
1049
|
try {
|
|
1050
|
+
if (init) {
|
|
1051
|
+
this.lastInitSeqInfo = { contactSeq: 0, roomSeq: 0 };
|
|
1052
|
+
}
|
|
1048
1053
|
const res = await this.postData({
|
|
1049
1054
|
path: '/contact/init_contact',
|
|
1050
1055
|
data: {
|
|
1051
|
-
contact_seq: 0,
|
|
1052
|
-
room_seq: 0,
|
|
1056
|
+
contact_seq: this.lastInitSeqInfo.contactSeq || 0,
|
|
1057
|
+
room_seq: this.lastInitSeqInfo.roomSeq || 0,
|
|
1053
1058
|
},
|
|
1054
1059
|
});
|
|
1055
|
-
const
|
|
1056
|
-
const
|
|
1057
|
-
|
|
1060
|
+
const currentWxcontactSeq = res?.currentWxcontactSeq || 0;
|
|
1061
|
+
const currentRoomSeq = res?.currentChatRoomContactSeq || 0;
|
|
1062
|
+
const continueFlag = res?.continueFlag || false;
|
|
1063
|
+
this.lastInitSeqInfo = { contactSeq: currentWxcontactSeq, roomSeq: currentRoomSeq };
|
|
1064
|
+
const contactUsernameList = res?.contactUsernameList || [];
|
|
1065
|
+
if (contactUsernameList.length) {
|
|
1066
|
+
const contactsInfo = await this.searchContact(contactUsernameList);
|
|
1067
|
+
this.emit('update-contacts', contactsInfo || []);
|
|
1068
|
+
}
|
|
1069
|
+
if (continueFlag) {
|
|
1070
|
+
await this.syncContact();
|
|
1071
|
+
}
|
|
1058
1072
|
}
|
|
1059
1073
|
catch (e) {
|
|
1060
1074
|
log.error(PRE, 'syncContact(): %s', e);
|
|
@@ -1175,15 +1189,17 @@ class Client extends EventEmitter {
|
|
|
1175
1189
|
version: 0,
|
|
1176
1190
|
},
|
|
1177
1191
|
});
|
|
1178
|
-
const memeberIdList = res?.allMemberUserNameList
|
|
1192
|
+
const memeberIdList = res?.allMemberUserNameList?.map((item) => item.string) || [];
|
|
1179
1193
|
const allMemberCount = res.allMemberCount;
|
|
1180
1194
|
const ownerId = res.chatRoomOwner;
|
|
1181
|
-
const adminIdList = res?.adminUserNameList
|
|
1195
|
+
const adminIdList = res?.adminUserNameList?.map((item) => item.string) || [];
|
|
1182
1196
|
const memberList = res?.newChatroomData?.chatRoomMember
|
|
1183
|
-
|
|
1197
|
+
?.filter((item) => item.userName)
|
|
1184
1198
|
.map((item) => ({
|
|
1185
|
-
wxid: item.
|
|
1186
|
-
|
|
1199
|
+
wxid: item.userName,
|
|
1200
|
+
name: item?.nickName,
|
|
1201
|
+
displayName: item?.displayName,
|
|
1202
|
+
groupNick: item?.nickName,
|
|
1187
1203
|
avatarMinUrl: item?.smallHeadImgUrl,
|
|
1188
1204
|
avatarMaxUrl: item?.bigHeadImgUrl,
|
|
1189
1205
|
avatar: item?.bigHeadImgUrl || item?.smallHeadImgUrl,
|
|
@@ -1198,49 +1214,8 @@ class Client extends EventEmitter {
|
|
|
1198
1214
|
};
|
|
1199
1215
|
}
|
|
1200
1216
|
catch (e) {
|
|
1201
|
-
log.error(PRE, '
|
|
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 [];
|
|
1217
|
+
log.error(PRE, 'getGroupMembersDetail(%s): %s', roomId, e);
|
|
1218
|
+
return {};
|
|
1244
1219
|
}
|
|
1245
1220
|
}
|
|
1246
1221
|
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":"AACA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExE,OAAO,MAAM,MAAM,6BAA6B,CAAA;AA4BhD,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;IACZ,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,cAAM,YAAa,SAAQ,MAAM,CAAC,MAAM;IAoBT,OAAO,EAAE,mBAAmB;IAlBzD,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,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,aAAa,CAA6B;IAClD,gBAAgC,OAAO,SAAU;gBAOpB,OAAO,GAAE,mBAA+C;IAuBrF,IAAW,MAAM,uBAEhB;IAEc,OAAO,IAAK,OAAO,CAAC,IAAI,CAAC;YAS1B,YAAY;
|
|
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 {
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "0.0.38",
|
|
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
|
-
"
|
|
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
|
},
|
package/src/engine-schema.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
124
|
+
// @ts-ignore
|
|
125
|
+
const inviterId = await puppet._searchRoomMemberInfo(roomId, inviterName)
|
|
119
126
|
const inviteeName = matches[2]
|
|
120
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|