wechaty-puppet-padplus2 3.1.2
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/README.md +50 -0
- package/dist/cjs/cleanup.cjs +1 -0
- package/dist/cjs/config.cjs +1 -0
- package/dist/cjs/mock/cache-manager.cjs +1 -0
- package/dist/cjs/mock/events/event-friendship.cjs +1 -0
- package/dist/cjs/mock/events/event-message.cjs +1 -0
- package/dist/cjs/mock/events/event-room-invite.cjs +1 -0
- package/dist/cjs/mock/events/event-room-join.cjs +1 -0
- package/dist/cjs/mock/events/event-room-leave.cjs +1 -0
- package/dist/cjs/mock/events/event-room-topic.cjs +1 -0
- package/dist/cjs/mock/events/event.cjs +1 -0
- package/dist/cjs/mock/events/mod.cjs +1 -0
- package/dist/cjs/mock/messages/message-appmsg.cjs +1 -0
- package/dist/cjs/mock/messages/message-emotion.cjs +1 -0
- package/dist/cjs/mock/messages/message-miniprogram.cjs +1 -0
- package/dist/cjs/mock/messages/message-sysmsg.cjs +1 -0
- package/dist/cjs/mock/messages/sysmsg/message-pat.cjs +1 -0
- package/dist/cjs/mock/messages/sysmsg/message-revokemsg.cjs +1 -0
- package/dist/cjs/mock/messages/sysmsg/message-sysmsgtemplate.cjs +1 -0
- package/dist/cjs/mock/messages/sysmsg/message-todo.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/contact.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser-appmsg.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser-refermsg.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser-room.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser-single-chat.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser-sysmsg.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser-type.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/message-parser.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message/mod.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/message.cjs +1 -0
- package/dist/cjs/mock/schema-mapper/room.cjs +1 -0
- package/dist/cjs/mock/types.cjs +1 -0
- package/dist/cjs/mock/utils/cached-promise.cjs +1 -0
- package/dist/cjs/mock/utils/is-type.cjs +1 -0
- package/dist/cjs/mock/utils/regex.cjs +1 -0
- package/dist/cjs/mock/utils/runner.cjs +1 -0
- package/dist/cjs/mock/utils/xml-to-json.cjs +1 -0
- package/dist/cjs/mod.cjs +1 -0
- package/dist/cjs/package-json.cjs +1 -0
- package/dist/cjs/puppet-plus.cjs +1 -0
- package/dist/cjs/server/cache-manager.cjs +1 -0
- package/dist/cjs/server/index.cjs +1 -0
- package/dist/cjs/server/map/AppMessageLink.cjs +1 -0
- package/dist/cjs/server/map/Label.cjs +1 -0
- package/dist/cjs/server/map/RoomMemberList.cjs +1 -0
- package/dist/cjs/server/map/contact.cjs +1 -0
- package/dist/cjs/server/map/index.cjs +1 -0
- package/dist/cjs/server/map/message.cjs +1 -0
- package/dist/cjs/server/map/response.cjs +1 -0
- package/dist/cjs/server/service/api/index3.cjs +1 -0
- package/dist/cjs/server/service/config/index.cjs +1 -0
- package/dist/cjs/server/service/index.cjs +1 -0
- package/dist/cjs/server/service/request/index.cjs +1 -0
- package/dist/cjs/server/service/utils/polling.cjs +1 -0
- package/dist/cjs/server/utils/PromiseUtils.cjs +1 -0
- package/dist/cjs/server/utils/SerialExecutor.cjs +1 -0
- package/dist/cjs/server/utils/Utils.cjs +1 -0
- package/dist/cjs/server/utils/xml-to-json.cjs +1 -0
- package/dist/esm/cleanup.js +26 -0
- package/dist/esm/config.js +9 -0
- package/dist/esm/mock/cache-manager.js +182 -0
- package/dist/esm/mock/events/event-friendship.js +59 -0
- package/dist/esm/mock/events/event-message.js +3 -0
- package/dist/esm/mock/events/event-room-invite.js +33 -0
- package/dist/esm/mock/events/event-room-join.js +105 -0
- package/dist/esm/mock/events/event-room-leave.js +83 -0
- package/dist/esm/mock/events/event-room-topic.js +50 -0
- package/dist/esm/mock/events/event.js +38 -0
- package/dist/esm/mock/events/mod.js +20 -0
- package/dist/esm/mock/messages/message-appmsg.js +41 -0
- package/dist/esm/mock/messages/message-emotion.js +24 -0
- package/dist/esm/mock/messages/message-miniprogram.js +18 -0
- package/dist/esm/mock/messages/message-sysmsg.js +50 -0
- package/dist/esm/mock/messages/sysmsg/message-pat.js +10 -0
- package/dist/esm/mock/messages/sysmsg/message-revokemsg.js +20 -0
- package/dist/esm/mock/messages/sysmsg/message-sysmsgtemplate.js +45 -0
- package/dist/esm/mock/messages/sysmsg/message-todo.js +15 -0
- package/dist/esm/mock/schema-mapper/contact.js +22 -0
- package/dist/esm/mock/schema-mapper/message/message-parser-appmsg.js +64 -0
- package/dist/esm/mock/schema-mapper/message/message-parser-refermsg.js +46 -0
- package/dist/esm/mock/schema-mapper/message/message-parser-room.js +33 -0
- package/dist/esm/mock/schema-mapper/message/message-parser-single-chat.js +4 -0
- package/dist/esm/mock/schema-mapper/message/message-parser-sysmsg.js +33 -0
- package/dist/esm/mock/schema-mapper/message/message-parser-type.js +31 -0
- package/dist/esm/mock/schema-mapper/message/message-parser.js +20 -0
- package/dist/esm/mock/schema-mapper/message/mod.js +19 -0
- package/dist/esm/mock/schema-mapper/message.js +21 -0
- package/dist/esm/mock/schema-mapper/room.js +30 -0
- package/dist/esm/mock/types.js +13 -0
- package/dist/esm/mock/utils/cached-promise.js +12 -0
- package/dist/esm/mock/utils/is-type.js +21 -0
- package/dist/esm/mock/utils/regex.js +11 -0
- package/dist/esm/mock/utils/runner.js +11 -0
- package/dist/esm/mock/utils/xml-to-json.js +14 -0
- package/dist/esm/mod.js +5 -0
- package/dist/esm/package-json.js +5 -0
- package/dist/esm/puppet-plus.js +829 -0
- package/dist/esm/server/cache-manager.js +77 -0
- package/dist/esm/server/index.js +19 -0
- package/dist/esm/server/map/AppMessageLink.js +58 -0
- package/dist/esm/server/map/Label.js +30 -0
- package/dist/esm/server/map/RoomMemberList.js +48 -0
- package/dist/esm/server/map/contact.js +192 -0
- package/dist/esm/server/map/index.js +7 -0
- package/dist/esm/server/map/message.js +107 -0
- package/dist/esm/server/map/response.js +78 -0
- package/dist/esm/server/service/api/index3.js +960 -0
- package/dist/esm/server/service/config/index.js +7 -0
- package/dist/esm/server/service/index.js +30 -0
- package/dist/esm/server/service/request/index.js +47 -0
- package/dist/esm/server/service/utils/polling.js +24 -0
- package/dist/esm/server/utils/PromiseUtils.js +19 -0
- package/dist/esm/server/utils/SerialExecutor.js +41 -0
- package/dist/esm/server/utils/Utils.js +7 -0
- package/dist/esm/server/utils/xml-to-json.js +18 -0
- package/dist/types/cleanup.d.ts +4 -0
- package/dist/types/config.d.ts +9 -0
- package/dist/types/mock/cache-manager.d.ts +55 -0
- package/dist/types/mock/events/event-friendship.d.ts +5 -0
- package/dist/types/mock/events/event-message.d.ts +5 -0
- package/dist/types/mock/events/event-room-invite.d.ts +5 -0
- package/dist/types/mock/events/event-room-join.d.ts +5 -0
- package/dist/types/mock/events/event-room-leave.d.ts +7 -0
- package/dist/types/mock/events/event-room-topic.d.ts +5 -0
- package/dist/types/mock/events/event.d.ts +28 -0
- package/dist/types/mock/events/mod.d.ts +4 -0
- package/dist/types/mock/messages/message-appmsg.d.ts +57 -0
- package/dist/types/mock/messages/message-emotion.d.ts +12 -0
- package/dist/types/mock/messages/message-miniprogram.d.ts +3 -0
- package/dist/types/mock/messages/message-sysmsg.d.ts +18 -0
- package/dist/types/mock/messages/sysmsg/message-pat.d.ts +14 -0
- package/dist/types/mock/messages/sysmsg/message-revokemsg.d.ts +19 -0
- package/dist/types/mock/messages/sysmsg/message-sysmsgtemplate.d.ts +60 -0
- package/dist/types/mock/messages/sysmsg/message-todo.d.ts +31 -0
- package/dist/types/mock/schema-mapper/contact.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser-appmsg.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser-refermsg.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser-room.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser-single-chat.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser-sysmsg.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser-type.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message/message-parser.d.ts +12 -0
- package/dist/types/mock/schema-mapper/message/mod.d.ts +4 -0
- package/dist/types/mock/schema-mapper/message.d.ts +3 -0
- package/dist/types/mock/schema-mapper/room.d.ts +5 -0
- package/dist/types/mock/types.d.ts +35 -0
- package/dist/types/mock/utils/cached-promise.d.ts +5 -0
- package/dist/types/mock/utils/is-type.d.ts +9 -0
- package/dist/types/mock/utils/regex.d.ts +3 -0
- package/dist/types/mock/utils/runner.d.ts +3 -0
- package/dist/types/mock/utils/xml-to-json.d.ts +2 -0
- package/dist/types/mod.d.ts +6 -0
- package/dist/types/package-json.d.ts +4 -0
- package/dist/types/puppet-plus.d.ts +102 -0
- package/dist/types/server/cache-manager.d.ts +22 -0
- package/dist/types/server/index.d.ts +15 -0
- package/dist/types/server/map/AppMessageLink.d.ts +31 -0
- package/dist/types/server/map/Label.d.ts +17 -0
- package/dist/types/server/map/RoomMemberList.d.ts +31 -0
- package/dist/types/server/map/contact.d.ts +113 -0
- package/dist/types/server/map/index.d.ts +13 -0
- package/dist/types/server/map/message.d.ts +68 -0
- package/dist/types/server/map/response.d.ts +45 -0
- package/dist/types/server/server.d.ts +6 -0
- package/dist/types/server/service/api/index.d.ts +78 -0
- package/dist/types/server/service/api/index2.d.ts +72 -0
- package/dist/types/server/service/api/index3.d.ts +78 -0
- package/dist/types/server/service/api/index_c.d.ts +71 -0
- package/dist/types/server/service/api/ws.d.ts +2 -0
- package/dist/types/server/service/config/index.d.ts +6 -0
- package/dist/types/server/service/index.d.ts +8 -0
- package/dist/types/server/service/request/index.d.ts +14 -0
- package/dist/types/server/service/request/type.d.ts +11 -0
- package/dist/types/server/service/utils/polling.d.ts +8 -0
- package/dist/types/server/utils/PromiseUtils.d.ts +13 -0
- package/dist/types/server/utils/SerialExecutor.d.ts +10 -0
- package/dist/types/server/utils/Utils.d.ts +3 -0
- package/dist/types/server/utils/diff.d.ts +35 -0
- package/dist/types/server/utils/polling.d.ts +7 -0
- package/dist/types/server/utils/token.d.ts +11 -0
- package/dist/types/server/utils/xml-to-json.d.ts +3 -0
- package/package.json +123 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import e from "fs-extra";
|
|
2
|
+
|
|
3
|
+
import t from "os";
|
|
4
|
+
|
|
5
|
+
import a from "path";
|
|
6
|
+
|
|
7
|
+
import { LRUCache as s } from "lru-cache";
|
|
8
|
+
|
|
9
|
+
import { log as o } from "wechaty-puppet";
|
|
10
|
+
|
|
11
|
+
import { FlashStore as c } from "flash-store";
|
|
12
|
+
|
|
13
|
+
const i = "[CacheManager]";
|
|
14
|
+
|
|
15
|
+
class CacheManager {
|
|
16
|
+
_userName;
|
|
17
|
+
_messageCache;
|
|
18
|
+
_messageRevokeCache;
|
|
19
|
+
_contactCache;
|
|
20
|
+
_contactSearchCache;
|
|
21
|
+
_contactStrangerAliasCache;
|
|
22
|
+
_roomCache;
|
|
23
|
+
_roomMemberCache;
|
|
24
|
+
_roomInvitationCache;
|
|
25
|
+
_friendshipCache;
|
|
26
|
+
_labelList;
|
|
27
|
+
constructor(e) {
|
|
28
|
+
this._userName = e;
|
|
29
|
+
}
|
|
30
|
+
async init() {
|
|
31
|
+
if (this._messageCache) {
|
|
32
|
+
throw new Error("already initialized");
|
|
33
|
+
}
|
|
34
|
+
const n = a.join(t.homedir(), a.sep, ".wechaty", "puppet-padplus-cache", a.sep, this._userName, a.sep);
|
|
35
|
+
await e.pathExists(n) || await e.mkdirp(n), this._messageCache = new s({
|
|
36
|
+
dispose(e, t) {
|
|
37
|
+
o.silly(i, "constructor() lruOptions.dispose(%s, %s)", e, JSON.stringify(t));
|
|
38
|
+
},
|
|
39
|
+
max: 1e3,
|
|
40
|
+
ttl: 36e5
|
|
41
|
+
}), this._messageRevokeCache = new s({
|
|
42
|
+
dispose(e, t) {
|
|
43
|
+
o.silly(i, "constructor() lruOptions.dispose(%s, %s)", e, JSON.stringify(t));
|
|
44
|
+
},
|
|
45
|
+
max: 1e3,
|
|
46
|
+
ttl: 36e5
|
|
47
|
+
}), this._contactCache = new c(a.join(n, "contact-raw-payload")), this._contactSearchCache = new s({
|
|
48
|
+
dispose(e, t) {
|
|
49
|
+
o.silly(i, "constructor() lruOptions.dispose(%s, %s)", e, JSON.stringify(t));
|
|
50
|
+
},
|
|
51
|
+
max: 1e3,
|
|
52
|
+
ttl: 36e5
|
|
53
|
+
}), this._contactStrangerAliasCache = new c(a.join(n, "contact-stranger-alias")),
|
|
54
|
+
this._roomCache = new c(a.join(n, "room-raw-payload")), this._roomMemberCache = new c(a.join(n, "room-member-raw-payload")),
|
|
55
|
+
this._roomInvitationCache = new c(a.join(n, "room-invitation-raw-payload")), this._friendshipCache = new c(a.join(n, "friendship-raw-payload"));
|
|
56
|
+
const h = await this._contactCache.size;
|
|
57
|
+
o.silly(i, `initCache() inited ${h} Contacts, cachedir="${n}"`);
|
|
58
|
+
}
|
|
59
|
+
async close() {
|
|
60
|
+
o.silly(i, "close()"), this._contactCache && this._contactStrangerAliasCache && this._roomMemberCache && this._roomCache && this._friendshipCache && this._roomInvitationCache && this._messageCache ? (o.silly(i, "close() closing caches ..."),
|
|
61
|
+
await Promise.all([ this._contactCache.close(), this._contactStrangerAliasCache.close(), this._roomMemberCache.close(), this._roomCache.close(), this._friendshipCache.close(), this._roomInvitationCache.close() ]),
|
|
62
|
+
this._contactCache = void 0, this._contactStrangerAliasCache = void 0, this._roomMemberCache = void 0,
|
|
63
|
+
this._roomCache = void 0, this._friendshipCache = void 0, this._roomInvitationCache = void 0,
|
|
64
|
+
this._messageCache = void 0, o.silly(i, "close() cache closed.")) : o.silly(i, "close() cache not exist.");
|
|
65
|
+
}
|
|
66
|
+
async getMessage(e) {
|
|
67
|
+
return this._messageCache.get(e);
|
|
68
|
+
}
|
|
69
|
+
async setMessage(e, t) {
|
|
70
|
+
await this._messageCache.set(e, t);
|
|
71
|
+
}
|
|
72
|
+
async hasMessage(e) {
|
|
73
|
+
return this._messageCache.has(e);
|
|
74
|
+
}
|
|
75
|
+
async getMessageRevokeInfo(e) {
|
|
76
|
+
return this._messageRevokeCache.get(e);
|
|
77
|
+
}
|
|
78
|
+
async setMessageRevokeInfo(e, t) {
|
|
79
|
+
await this._messageRevokeCache.set(e, t);
|
|
80
|
+
}
|
|
81
|
+
async getContact(e) {
|
|
82
|
+
return this._contactCache.get(e);
|
|
83
|
+
}
|
|
84
|
+
async setContact(e, t) {
|
|
85
|
+
await this._contactCache.set(e, t);
|
|
86
|
+
}
|
|
87
|
+
async deleteContact(e) {
|
|
88
|
+
await this._contactCache.delete(e);
|
|
89
|
+
}
|
|
90
|
+
async getContactIds() {
|
|
91
|
+
const e = [];
|
|
92
|
+
for await (const t of this._contactCache.keys()) {
|
|
93
|
+
e.push(t);
|
|
94
|
+
}
|
|
95
|
+
return e;
|
|
96
|
+
}
|
|
97
|
+
async getAllContacts() {
|
|
98
|
+
const e = [];
|
|
99
|
+
for await (const t of this._contactCache.values()) {
|
|
100
|
+
e.push(t);
|
|
101
|
+
}
|
|
102
|
+
return e;
|
|
103
|
+
}
|
|
104
|
+
async hasContact(e) {
|
|
105
|
+
return this._contactCache.has(e);
|
|
106
|
+
}
|
|
107
|
+
async getContactCount() {
|
|
108
|
+
return this._contactCache.size;
|
|
109
|
+
}
|
|
110
|
+
async getContactSearch(e) {
|
|
111
|
+
return this._contactSearchCache.get(e);
|
|
112
|
+
}
|
|
113
|
+
async setContactSearch(e, t) {
|
|
114
|
+
await this._contactSearchCache.set(e, t);
|
|
115
|
+
}
|
|
116
|
+
async hasContactSearch(e) {
|
|
117
|
+
return this._contactSearchCache.has(e);
|
|
118
|
+
}
|
|
119
|
+
async getContactStrangerAlias(e) {
|
|
120
|
+
return this._contactStrangerAliasCache.get(e);
|
|
121
|
+
}
|
|
122
|
+
async setContactStrangerAlias(e, t) {
|
|
123
|
+
await this._contactStrangerAliasCache.set(e, t);
|
|
124
|
+
}
|
|
125
|
+
async deleteContactStrangerAlias(e) {
|
|
126
|
+
await this._contactStrangerAliasCache.delete(e);
|
|
127
|
+
}
|
|
128
|
+
async getRoom(e) {
|
|
129
|
+
return this._roomCache.get(e);
|
|
130
|
+
}
|
|
131
|
+
async setRoom(e, t) {
|
|
132
|
+
await this._roomCache.set(e, t);
|
|
133
|
+
}
|
|
134
|
+
async deleteRoom(e) {
|
|
135
|
+
await this._roomCache.delete(e);
|
|
136
|
+
}
|
|
137
|
+
async getRoomIds() {
|
|
138
|
+
const e = [];
|
|
139
|
+
for await (const t of this._roomCache.keys()) {
|
|
140
|
+
e.push(t);
|
|
141
|
+
}
|
|
142
|
+
return e;
|
|
143
|
+
}
|
|
144
|
+
async getRoomCount() {
|
|
145
|
+
return this._roomCache.size;
|
|
146
|
+
}
|
|
147
|
+
async hasRoom(e) {
|
|
148
|
+
return this._roomCache.has(e);
|
|
149
|
+
}
|
|
150
|
+
async getRoomMember(e) {
|
|
151
|
+
return this._roomMemberCache.get(e);
|
|
152
|
+
}
|
|
153
|
+
async setRoomMember(e, t) {
|
|
154
|
+
await this._roomMemberCache.set(e, t);
|
|
155
|
+
}
|
|
156
|
+
async deleteRoomMember(e) {
|
|
157
|
+
await this._roomMemberCache.delete(e);
|
|
158
|
+
}
|
|
159
|
+
async getRoomInvitation(e) {
|
|
160
|
+
return this._roomInvitationCache.get(e);
|
|
161
|
+
}
|
|
162
|
+
async setRoomInvitation(e, t) {
|
|
163
|
+
await this._roomInvitationCache.set(e, t);
|
|
164
|
+
}
|
|
165
|
+
async deleteRoomInvitation(e) {
|
|
166
|
+
await this._roomInvitationCache.delete(e);
|
|
167
|
+
}
|
|
168
|
+
async getFriendshipRawPayload(e) {
|
|
169
|
+
return this._friendshipCache.get(e);
|
|
170
|
+
}
|
|
171
|
+
async setFriendshipRawPayload(e, t) {
|
|
172
|
+
await this._friendshipCache.set(e, t);
|
|
173
|
+
}
|
|
174
|
+
getLabelList() {
|
|
175
|
+
return this._labelList;
|
|
176
|
+
}
|
|
177
|
+
setLabelList(e) {
|
|
178
|
+
this._labelList = e;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export { CacheManager };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as e from "wechaty-puppet";
|
|
2
|
+
|
|
3
|
+
import { isContactId as t, isIMContactId as r } from "../utils/is-type.js";
|
|
4
|
+
|
|
5
|
+
import { xmlToJson as s } from "../utils/xml-to-json.js";
|
|
6
|
+
|
|
7
|
+
import { WechatMessageType as a } from "../types.js";
|
|
8
|
+
|
|
9
|
+
const n = [ /^You have added (.+) as your WeChat contact. Start chatting!$/, /^你已添加了(.+),现在可以开始聊天了。$/, /I've accepted your friend request. Now let's chat!$/, /^(.+) just added you to his\/her contacts list. Send a message to him\/her now!$/, /^(.+)刚刚把你添加到通讯录,现在可以开始聊天了。$/, /^我通过了你的朋友验证请求,现在我们可以开始聊天了$/ ], m = [ /^(.+) has enabled Friend Confirmation/, /^(.+)开启了朋友验证,你还不是他(她)朋友。请先发送朋友验证请求,对方验证通过后,才能聊天。/ ], i = async (i, message) => {
|
|
10
|
+
if ((message => n.some((e => !!message.content.match(e))))(message)) {
|
|
11
|
+
return {
|
|
12
|
+
contactId: message.fromusername,
|
|
13
|
+
id: message.id,
|
|
14
|
+
timestamp: message.createtime,
|
|
15
|
+
type: e.types.Friendship.Confirm
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if ((message => m.some((e => !!message.content.match(e))))(message)) {
|
|
19
|
+
return {
|
|
20
|
+
contactId: message.fromusername,
|
|
21
|
+
id: message.id,
|
|
22
|
+
timestamp: message.createtime,
|
|
23
|
+
type: e.types.Friendship.Verify
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
{
|
|
27
|
+
const n = await (async message => {
|
|
28
|
+
if (message.type !== a.VerifyMsg && message.type !== a.VerifyMsgEnterprise) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const e = await s(message.content), a = e.msg.$.fromusername;
|
|
33
|
+
if (t(a) && e.msg.$.encryptusername) {
|
|
34
|
+
return e;
|
|
35
|
+
}
|
|
36
|
+
if (r(a)) {
|
|
37
|
+
return e;
|
|
38
|
+
}
|
|
39
|
+
} catch (e) {}
|
|
40
|
+
return null;
|
|
41
|
+
})(message);
|
|
42
|
+
return n ? {
|
|
43
|
+
contactId: n.msg.$.fromusername,
|
|
44
|
+
hello: n.msg.$.content,
|
|
45
|
+
id: message.id,
|
|
46
|
+
scene: parseInt(n.msg.$.scene, 10),
|
|
47
|
+
shareCardContactId: n.msg.$.sharecardusername,
|
|
48
|
+
shareCardNickName: n.msg.$.sharecardnickname,
|
|
49
|
+
sourceContactId: n.msg.$.sourceusername,
|
|
50
|
+
sourceNickName: n.msg.$.sourcenickname,
|
|
51
|
+
stranger: n.msg.$.encryptusername,
|
|
52
|
+
ticket: n.msg.$.ticket,
|
|
53
|
+
timestamp: message.createtime,
|
|
54
|
+
type: e.types.Friendship.Receive
|
|
55
|
+
} : null;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { i as default };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { parseAppmsgMessagePayload as t, AppMessageType as e } from "../messages/message-appmsg.js";
|
|
2
|
+
|
|
3
|
+
const n = [ /邀请你加入群聊/ ], r = [ /Group Chat Invitation/ ], i = [ /^"(.+)"邀请你加入群聊(.*),进入可查看详情。/ ], l = [ /"(.+)" invited you to join the group chat "(.+)"\. Enter to view details\./ ], a = async (a, message) => {
|
|
4
|
+
let m;
|
|
5
|
+
try {
|
|
6
|
+
m = await t(message.content);
|
|
7
|
+
} catch (t) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
if (m.type !== e.Url) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (!m.title || !m.des) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
let s = null, o = null, u = null, c = null;
|
|
17
|
+
r.some((t => !!(s = m.title.match(t)))), n.some((t => !!(o = m.title.match(t)))),
|
|
18
|
+
l.some((t => !!(u = m.des.match(t)))), i.some((t => !!(c = m.des.match(t))));
|
|
19
|
+
const d = u || c;
|
|
20
|
+
return !!(s || o) && !!d ? {
|
|
21
|
+
avatar: m.thumburl,
|
|
22
|
+
id: message.id,
|
|
23
|
+
invitation: m.url,
|
|
24
|
+
inviterId: message.fromusername,
|
|
25
|
+
memberCount: 0,
|
|
26
|
+
memberIdList: [],
|
|
27
|
+
receiverId: message.tousername,
|
|
28
|
+
timestamp: message.createtime,
|
|
29
|
+
topic: d[2]
|
|
30
|
+
} : null;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { a as default };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { isRoomId as e } from "../utils/is-type.js";
|
|
2
|
+
|
|
3
|
+
import { removeRoomLeaveDebounce as t } from "./event-room-leave.js";
|
|
4
|
+
|
|
5
|
+
import { parseSysmsgSysmsgTemplateMessagePayload as r } from "../messages/message-sysmsg.js";
|
|
6
|
+
|
|
7
|
+
import { WechatMessageType as i } from "../types.js";
|
|
8
|
+
|
|
9
|
+
import { parseTextWithRegexList as a } from "../utils/regex.js";
|
|
10
|
+
|
|
11
|
+
import { createSysmsgTemplateRunner as s } from "../messages/sysmsg/message-sysmsgtemplate.js";
|
|
12
|
+
|
|
13
|
+
import { executeRunners as o } from "../utils/runner.js";
|
|
14
|
+
|
|
15
|
+
const n = [ /^你邀请"(.+)"加入了群聊 {2}\$revoke\$/, /^You invited (.+) to the group chat/ ], m = [ /^"([^"]+?)"邀请你加入了群聊,群聊参与人还有:(.+)/, /^(.+) invited you to a group chat with (.+)/ ], c = [ /^"([^"]+?)"邀请你和"(.+?)"加入了群聊/, /^(.+?) invited you and (.+?) to (the|a) group chat/ ], d = [ /^"(.+)"邀请"(.+)"加入了群聊/, /^(.+?) invited (.+?) to (the|a) group chat/ ], u = [ /^" ?(.+)"通过扫描你分享的二维码加入群聊/, /^" ?(.+)" joined group chat via the QR code you shared/ ], p = [ /^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/, /^"(.+)" joined the group chat via the QR Code shared by "(.+)"/ ], I = [ /^(.*?)通过(.+)加入群聊/, /^(.*?) joined the group chat through (.+)/ ], y = async (puppet, message) => {
|
|
16
|
+
const y = message.fromusername;
|
|
17
|
+
if (!e(y)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const l = message.createtime, h = await r(message);
|
|
21
|
+
if (!h && 1e4 !== message.type) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
let v = null;
|
|
25
|
+
if (h) {
|
|
26
|
+
const e = s(h, [ ...n, ...u ], (async e => ({
|
|
27
|
+
inviteeIdList: e[0].payload.map((e => e.userName)).filter((e => !!e)),
|
|
28
|
+
inviterId: puppet.currentUserId,
|
|
29
|
+
roomId: y,
|
|
30
|
+
timestamp: l
|
|
31
|
+
}))), r = s(h, m, (async e => {
|
|
32
|
+
const t = e[0].payload;
|
|
33
|
+
return {
|
|
34
|
+
inviteeIdList: [ puppet.currentUserId ],
|
|
35
|
+
inviterId: t[0].userName,
|
|
36
|
+
roomId: y,
|
|
37
|
+
timestamp: l
|
|
38
|
+
};
|
|
39
|
+
})), i = s(h, [ ...c, ...d ], (async (e, t) => {
|
|
40
|
+
const r = e[0].payload, i = e[1].payload.map((e => e.userName)).filter((e => !!e));
|
|
41
|
+
return t < c.length && i.unshift(puppet.currentUserId), {
|
|
42
|
+
inviteeIdList: i,
|
|
43
|
+
inviterId: r[0].userName,
|
|
44
|
+
roomId: y,
|
|
45
|
+
timestamp: l
|
|
46
|
+
};
|
|
47
|
+
})), a = s(h, p, (async e => ({
|
|
48
|
+
inviteeIdList: e[0].payload.map((e => e.userName)).filter((e => !!e)),
|
|
49
|
+
inviterId: e[1].payload[0].userName,
|
|
50
|
+
roomId: y,
|
|
51
|
+
timestamp: l
|
|
52
|
+
}))), f = s(h, I, (async e => ({
|
|
53
|
+
inviteeIdList: e[0].payload.map((e => e.userName)).filter((e => !!e)),
|
|
54
|
+
inviterId: puppet.currentUserId,
|
|
55
|
+
roomId: y,
|
|
56
|
+
timestamp: l
|
|
57
|
+
})));
|
|
58
|
+
v = await o([ e, r, i, a, f ]), v && v.inviteeIdList.forEach((e => {
|
|
59
|
+
t(v.roomId, e);
|
|
60
|
+
}));
|
|
61
|
+
} else {
|
|
62
|
+
if (message.type !== i.Sys) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const e = async () => a(message.content, [ ...n, ...u ], (async (e, t) => {
|
|
66
|
+
t[1];
|
|
67
|
+
const r = t[2];
|
|
68
|
+
return {
|
|
69
|
+
inviteeIdList: [ (await puppet.roomMemberSearch(y, r))[0] ],
|
|
70
|
+
inviterId: puppet.currentUserId,
|
|
71
|
+
roomId: y,
|
|
72
|
+
timestamp: message.createtime
|
|
73
|
+
};
|
|
74
|
+
})), t = async () => a(message.content, m, (async (e, t) => {
|
|
75
|
+
const r = t[1], i = (await puppet.roomMemberSearch(y, r))[0];
|
|
76
|
+
return {
|
|
77
|
+
inviteeIdList: [ puppet.currentUserId ],
|
|
78
|
+
inviterId: i,
|
|
79
|
+
roomId: y,
|
|
80
|
+
timestamp: message.createtime
|
|
81
|
+
};
|
|
82
|
+
})), r = async () => a(message.content, [ ...c, ...d ], (async (e, t) => {
|
|
83
|
+
const r = t[1], i = await Promise.all(t[2].split("、").map((async e => (await puppet.roomMemberSearch(y, e))[0])));
|
|
84
|
+
e < c.length && i.unshift(puppet.currentUserId);
|
|
85
|
+
return {
|
|
86
|
+
inviteeIdList: i,
|
|
87
|
+
inviterId: (await puppet.roomMemberSearch(y, r))[0],
|
|
88
|
+
roomId: y,
|
|
89
|
+
timestamp: message.createtime
|
|
90
|
+
};
|
|
91
|
+
})), s = async () => a(message.content, p, (async (e, t) => {
|
|
92
|
+
const r = t[1], i = t[2], a = (await puppet.roomMemberSearch(y, r))[0];
|
|
93
|
+
return {
|
|
94
|
+
inviteeIdList: [ (await puppet.roomMemberSearch(y, i))[0] ],
|
|
95
|
+
inviterId: a,
|
|
96
|
+
roomId: y,
|
|
97
|
+
timestamp: message.createtime
|
|
98
|
+
};
|
|
99
|
+
}));
|
|
100
|
+
v = await o([ e, t, r, s ]);
|
|
101
|
+
}
|
|
102
|
+
return v;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export { y as default };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { isRoomId as e } from "../utils/is-type.js";
|
|
2
|
+
|
|
3
|
+
import { parseSysmsgSysmsgTemplateMessagePayload as t } from "../messages/message-sysmsg.js";
|
|
4
|
+
|
|
5
|
+
import { parseSysmsgTemplate as r } from "../messages/sysmsg/message-sysmsgtemplate.js";
|
|
6
|
+
|
|
7
|
+
import { WechatMessageType as s } from "../types.js";
|
|
8
|
+
|
|
9
|
+
import { executeRunners as o } from "../utils/runner.js";
|
|
10
|
+
|
|
11
|
+
const m = [ /^(你)将"(.+)"移出了群聊/, /^(You) removed "(.+)" from the group chat/ ], n = [ /^(你)被"([^"]+?)"移出群聊/, /^(You) were removed from the group chat by "([^"]+)"/ ], a = new Map;
|
|
12
|
+
|
|
13
|
+
function u(e, t) {
|
|
14
|
+
return `${e}:${t}`;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function c(e, t) {
|
|
18
|
+
const r = u(e, t);
|
|
19
|
+
a.delete(r);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function i(e, t) {
|
|
23
|
+
const r = u(e, t);
|
|
24
|
+
return void 0 !== a.get(r);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const l = async (puppet, message) => {
|
|
28
|
+
const c = message.fromusername;
|
|
29
|
+
if (!e(c)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const i = await o([ async () => {
|
|
33
|
+
const e = await t(message);
|
|
34
|
+
return e ? await r(e, m, (async e => ({
|
|
35
|
+
removeeIdList: e[0].payload.map((e => e.userName)).filter((e => !!e)),
|
|
36
|
+
removerId: puppet.currentUserId,
|
|
37
|
+
roomId: c,
|
|
38
|
+
timestamp: message.createtime
|
|
39
|
+
}))) : null;
|
|
40
|
+
}, async () => {
|
|
41
|
+
if (message.type !== s.Sys) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
let e = null;
|
|
45
|
+
if (n.some((t => !!(e = message.content.match(t)))), e) {
|
|
46
|
+
const t = e[2], r = (await puppet.roomMemberSearch(c, t))[0];
|
|
47
|
+
return {
|
|
48
|
+
removeeIdList: [ puppet.currentUserId ],
|
|
49
|
+
removerId: r,
|
|
50
|
+
roomId: c,
|
|
51
|
+
timestamp: message.createtime
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}, async () => {
|
|
56
|
+
if (message.type !== s.Sys) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
let e = null;
|
|
60
|
+
if (m.some((t => !!(e = message.content.match(t)))), e) {
|
|
61
|
+
const t = e[2];
|
|
62
|
+
return {
|
|
63
|
+
removeeIdList: [ (await puppet.roomMemberSearch(c, t))[0] ],
|
|
64
|
+
removerId: puppet.currentUserId,
|
|
65
|
+
roomId: c,
|
|
66
|
+
timestamp: message.createtime
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
} ]);
|
|
71
|
+
return i && i.removeeIdList.forEach((e => {
|
|
72
|
+
!function(e, t) {
|
|
73
|
+
const r = u(e, t), s = a.get(r);
|
|
74
|
+
s && clearTimeout(s);
|
|
75
|
+
const o = setTimeout((() => {
|
|
76
|
+
a.delete(r);
|
|
77
|
+
}), 36e5);
|
|
78
|
+
a.set(r, o);
|
|
79
|
+
}(c, e);
|
|
80
|
+
})), i;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export { l as default, i as isRoomLeaveDebouncing, c as removeRoomLeaveDebounce };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isRoomId as e } from "../utils/is-type.js";
|
|
2
|
+
|
|
3
|
+
import { parseSysmsgSysmsgTemplateMessagePayload as s } from "../messages/message-sysmsg.js";
|
|
4
|
+
|
|
5
|
+
import { parseSysmsgTemplate as n } from "../messages/sysmsg/message-sysmsgtemplate.js";
|
|
6
|
+
|
|
7
|
+
import { parseTextWithRegexList as t } from "../utils/regex.js";
|
|
8
|
+
|
|
9
|
+
import { WechatMessageType as r } from "../types.js";
|
|
10
|
+
|
|
11
|
+
import { executeRunners as o } from "../utils/runner.js";
|
|
12
|
+
|
|
13
|
+
const a = [ /^"(.+)"修改群名为“(.+)”$/, /^"(.+)" changed the group name to "(.+)"$/ ], c = [ /^(你)修改群名为“(.+)”$/, /^(You) changed the group name to "(.+)"$/ ], m = async (puppet, message) => {
|
|
14
|
+
const m = message.fromusername;
|
|
15
|
+
if (!e(m)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const i = await o([ async () => message.type !== r.Sys ? null : t(message.content, c, (async (e, s) => {
|
|
19
|
+
const n = s[2];
|
|
20
|
+
return {
|
|
21
|
+
changerId: puppet.currentUserId,
|
|
22
|
+
newTopic: n
|
|
23
|
+
};
|
|
24
|
+
})), async () => {
|
|
25
|
+
const e = await s(message);
|
|
26
|
+
return e ? n(e, a, (async e => ({
|
|
27
|
+
changerId: e[0].payload[0].userName,
|
|
28
|
+
newTopic: e[1].payload[0].nickName
|
|
29
|
+
}))) : null;
|
|
30
|
+
}, async () => message.type !== r.Sys ? null : t(message.content, a, (async (e, s) => {
|
|
31
|
+
const n = s[2], t = s[1];
|
|
32
|
+
return {
|
|
33
|
+
changerId: (await puppet.roomMemberSearch(m, t))[0],
|
|
34
|
+
newTopic: n
|
|
35
|
+
};
|
|
36
|
+
})) ]);
|
|
37
|
+
if (i) {
|
|
38
|
+
const e = (await puppet.roomPayload(m)).topic;
|
|
39
|
+
return {
|
|
40
|
+
changerId: i.changerId,
|
|
41
|
+
newTopic: i.newTopic,
|
|
42
|
+
oldTopic: e,
|
|
43
|
+
roomId: m,
|
|
44
|
+
timestamp: message.createtime
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { m as default };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { log as o } from "wechaty-puppet";
|
|
2
|
+
|
|
3
|
+
var e, t;
|
|
4
|
+
|
|
5
|
+
(t = e || (e = {}))[t.Message = 0] = "Message", t[t.Friendship = 1] = "Friendship",
|
|
6
|
+
t[t.RoomInvite = 2] = "RoomInvite", t[t.RoomJoin = 3] = "RoomJoin", t[t.RoomLeave = 4] = "RoomLeave",
|
|
7
|
+
t[t.RoomTopic = 5] = "RoomTopic";
|
|
8
|
+
|
|
9
|
+
const r = [];
|
|
10
|
+
|
|
11
|
+
function a(o, e) {
|
|
12
|
+
r.push({
|
|
13
|
+
handler: e,
|
|
14
|
+
type: o
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function n(puppet, message) {
|
|
19
|
+
for (const e of r) {
|
|
20
|
+
try {
|
|
21
|
+
const o = await e.handler(puppet, message);
|
|
22
|
+
if (o) {
|
|
23
|
+
return {
|
|
24
|
+
payload: o,
|
|
25
|
+
type: e.type
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
} catch (e) {
|
|
29
|
+
o.error("[Event]", `parse message error: ${e.stack}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
payload: message,
|
|
34
|
+
type: e.Message
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { e as EventType, a as addEventParser, n as parseEvent };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import o from "./event-friendship.js";
|
|
2
|
+
|
|
3
|
+
import e from "./event-room-invite.js";
|
|
4
|
+
|
|
5
|
+
import m from "./event-room-join.js";
|
|
6
|
+
|
|
7
|
+
import r from "./event-room-leave.js";
|
|
8
|
+
|
|
9
|
+
import t from "./event-room-topic.js";
|
|
10
|
+
|
|
11
|
+
import i from "./event-message.js";
|
|
12
|
+
|
|
13
|
+
import { addEventParser as n, EventType as s } from "./event.js";
|
|
14
|
+
|
|
15
|
+
import { parseEvent as p } from "./event.js";
|
|
16
|
+
|
|
17
|
+
n(s.Friendship, o), n(s.RoomInvite, e), n(s.RoomJoin, m), n(s.RoomLeave, r), n(s.RoomTopic, t),
|
|
18
|
+
n(s.Message, i);
|
|
19
|
+
|
|
20
|
+
export { s as EventType, p as parseEvent };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { xmlToJson as e } from "../utils/xml-to-json.js";
|
|
2
|
+
|
|
3
|
+
var t, r;
|
|
4
|
+
|
|
5
|
+
async function a(t) {
|
|
6
|
+
const r = await e(t), {title: a, des: o, url: i, thumburl: n, type: m, md5: s, recorditem: c} = r.msg.appmsg;
|
|
7
|
+
let l;
|
|
8
|
+
const d = r.msg.appmsg.appattach;
|
|
9
|
+
return d && (l = {
|
|
10
|
+
aeskey: d.aeskey,
|
|
11
|
+
attachid: d.attachid,
|
|
12
|
+
cdnattachurl: d.cdnattachurl,
|
|
13
|
+
cdnthumbaeskey: d.cdnthumbaeskey,
|
|
14
|
+
emoticonmd5: d.emoticonmd5,
|
|
15
|
+
encryver: d.encryver && parseInt(d.encryver, 10) || 0,
|
|
16
|
+
fileext: d.fileext,
|
|
17
|
+
islargefilemsg: d.islargefilemsg && parseInt(d.islargefilemsg, 10) || 0,
|
|
18
|
+
totallen: d.totallen && parseInt(d.totallen, 10) || 0
|
|
19
|
+
}), {
|
|
20
|
+
appattach: l,
|
|
21
|
+
des: o,
|
|
22
|
+
md5: s,
|
|
23
|
+
recorditem: c,
|
|
24
|
+
refermsg: r.msg.appmsg.refermsg,
|
|
25
|
+
thumburl: n,
|
|
26
|
+
title: a,
|
|
27
|
+
type: parseInt(m, 10),
|
|
28
|
+
url: i
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
(r = t || (t = {}))[r.Text = 1] = "Text", r[r.Img = 2] = "Img", r[r.Audio = 3] = "Audio",
|
|
33
|
+
r[r.Video = 4] = "Video", r[r.Url = 5] = "Url", r[r.Attach = 6] = "Attach", r[r.Open = 7] = "Open",
|
|
34
|
+
r[r.Emoji = 8] = "Emoji", r[r.VoiceRemind = 9] = "VoiceRemind", r[r.ScanGood = 10] = "ScanGood",
|
|
35
|
+
r[r.Good = 13] = "Good", r[r.Emotion = 15] = "Emotion", r[r.CardTicket = 16] = "CardTicket",
|
|
36
|
+
r[r.RealtimeShareLocation = 17] = "RealtimeShareLocation", r[r.ChatHistory = 19] = "ChatHistory",
|
|
37
|
+
r[r.MiniProgram = 33] = "MiniProgram", r[r.MiniProgramApp = 36] = "MiniProgramApp",
|
|
38
|
+
r[r.GroupNote = 53] = "GroupNote", r[r.ReferMsg = 57] = "ReferMsg", r[r.Transfers = 2e3] = "Transfers",
|
|
39
|
+
r[r.RedEnvelopes = 2001] = "RedEnvelopes", r[r.ReaderType = 100001] = "ReaderType";
|
|
40
|
+
|
|
41
|
+
export { t as AppMessageType, a as parseAppmsgMessagePayload };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { xmlToJson as e } from "../utils/xml-to-json.js";
|
|
2
|
+
|
|
3
|
+
async function t(message) {
|
|
4
|
+
const t = await e(message.content), m = parseInt(t.msg.emoji.$.len, 10) || 0, n = parseInt(t.msg.emoji.$.width, 10) || 0, s = parseInt(t.msg.emoji.$.height, 10) || 0, g = t.msg.emoji.$.cdnurl, o = parseInt(t.msg.emoji.$.type, 10) || 0, i = t.msg.emoji.$.md5;
|
|
5
|
+
let r;
|
|
6
|
+
if (t.msg.gameext) {
|
|
7
|
+
r = `<gameext type="${parseInt(t.msg.gameext.$.type, 10) || 0}" content="${parseInt(t.msg.gameext.$.content, 10) || 0}" ></gameext>`;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
cdnurl: g,
|
|
11
|
+
gameext: r,
|
|
12
|
+
height: s,
|
|
13
|
+
len: m,
|
|
14
|
+
md5: i,
|
|
15
|
+
type: o,
|
|
16
|
+
width: n
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function m(e) {
|
|
21
|
+
return `<msg><emoji cdnurl="${e.cdnurl}" len="${e.len}" md5="${e.md5}" type="${e.type}"/>${e.gameext || ""}</msg>`;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { m as generateEmotionPayload, t as parseEmotionMessagePayload };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { xmlToJson as t } from "../utils/xml-to-json.js";
|
|
2
|
+
|
|
3
|
+
async function a(a) {
|
|
4
|
+
const e = (await t(a.content)).msg.appmsg, p = e.weappinfo, n = e.appattach;
|
|
5
|
+
return {
|
|
6
|
+
appid: p.appid,
|
|
7
|
+
description: e.sourcedisplayname,
|
|
8
|
+
iconUrl: p.weappiconurl,
|
|
9
|
+
pagePath: p.pagepath,
|
|
10
|
+
shareId: p.shareId,
|
|
11
|
+
thumbKey: n.cdnthumbaeskey,
|
|
12
|
+
thumbUrl: n.cdnthumburl,
|
|
13
|
+
title: e.title,
|
|
14
|
+
username: p.username
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { a as parseMiniProgramMessagePayload };
|