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.
Files changed (182) hide show
  1. package/README.md +50 -0
  2. package/dist/cjs/cleanup.cjs +1 -0
  3. package/dist/cjs/config.cjs +1 -0
  4. package/dist/cjs/mock/cache-manager.cjs +1 -0
  5. package/dist/cjs/mock/events/event-friendship.cjs +1 -0
  6. package/dist/cjs/mock/events/event-message.cjs +1 -0
  7. package/dist/cjs/mock/events/event-room-invite.cjs +1 -0
  8. package/dist/cjs/mock/events/event-room-join.cjs +1 -0
  9. package/dist/cjs/mock/events/event-room-leave.cjs +1 -0
  10. package/dist/cjs/mock/events/event-room-topic.cjs +1 -0
  11. package/dist/cjs/mock/events/event.cjs +1 -0
  12. package/dist/cjs/mock/events/mod.cjs +1 -0
  13. package/dist/cjs/mock/messages/message-appmsg.cjs +1 -0
  14. package/dist/cjs/mock/messages/message-emotion.cjs +1 -0
  15. package/dist/cjs/mock/messages/message-miniprogram.cjs +1 -0
  16. package/dist/cjs/mock/messages/message-sysmsg.cjs +1 -0
  17. package/dist/cjs/mock/messages/sysmsg/message-pat.cjs +1 -0
  18. package/dist/cjs/mock/messages/sysmsg/message-revokemsg.cjs +1 -0
  19. package/dist/cjs/mock/messages/sysmsg/message-sysmsgtemplate.cjs +1 -0
  20. package/dist/cjs/mock/messages/sysmsg/message-todo.cjs +1 -0
  21. package/dist/cjs/mock/schema-mapper/contact.cjs +1 -0
  22. package/dist/cjs/mock/schema-mapper/message/message-parser-appmsg.cjs +1 -0
  23. package/dist/cjs/mock/schema-mapper/message/message-parser-refermsg.cjs +1 -0
  24. package/dist/cjs/mock/schema-mapper/message/message-parser-room.cjs +1 -0
  25. package/dist/cjs/mock/schema-mapper/message/message-parser-single-chat.cjs +1 -0
  26. package/dist/cjs/mock/schema-mapper/message/message-parser-sysmsg.cjs +1 -0
  27. package/dist/cjs/mock/schema-mapper/message/message-parser-type.cjs +1 -0
  28. package/dist/cjs/mock/schema-mapper/message/message-parser.cjs +1 -0
  29. package/dist/cjs/mock/schema-mapper/message/mod.cjs +1 -0
  30. package/dist/cjs/mock/schema-mapper/message.cjs +1 -0
  31. package/dist/cjs/mock/schema-mapper/room.cjs +1 -0
  32. package/dist/cjs/mock/types.cjs +1 -0
  33. package/dist/cjs/mock/utils/cached-promise.cjs +1 -0
  34. package/dist/cjs/mock/utils/is-type.cjs +1 -0
  35. package/dist/cjs/mock/utils/regex.cjs +1 -0
  36. package/dist/cjs/mock/utils/runner.cjs +1 -0
  37. package/dist/cjs/mock/utils/xml-to-json.cjs +1 -0
  38. package/dist/cjs/mod.cjs +1 -0
  39. package/dist/cjs/package-json.cjs +1 -0
  40. package/dist/cjs/puppet-plus.cjs +1 -0
  41. package/dist/cjs/server/cache-manager.cjs +1 -0
  42. package/dist/cjs/server/index.cjs +1 -0
  43. package/dist/cjs/server/map/AppMessageLink.cjs +1 -0
  44. package/dist/cjs/server/map/Label.cjs +1 -0
  45. package/dist/cjs/server/map/RoomMemberList.cjs +1 -0
  46. package/dist/cjs/server/map/contact.cjs +1 -0
  47. package/dist/cjs/server/map/index.cjs +1 -0
  48. package/dist/cjs/server/map/message.cjs +1 -0
  49. package/dist/cjs/server/map/response.cjs +1 -0
  50. package/dist/cjs/server/service/api/index3.cjs +1 -0
  51. package/dist/cjs/server/service/config/index.cjs +1 -0
  52. package/dist/cjs/server/service/index.cjs +1 -0
  53. package/dist/cjs/server/service/request/index.cjs +1 -0
  54. package/dist/cjs/server/service/utils/polling.cjs +1 -0
  55. package/dist/cjs/server/utils/PromiseUtils.cjs +1 -0
  56. package/dist/cjs/server/utils/SerialExecutor.cjs +1 -0
  57. package/dist/cjs/server/utils/Utils.cjs +1 -0
  58. package/dist/cjs/server/utils/xml-to-json.cjs +1 -0
  59. package/dist/esm/cleanup.js +26 -0
  60. package/dist/esm/config.js +9 -0
  61. package/dist/esm/mock/cache-manager.js +182 -0
  62. package/dist/esm/mock/events/event-friendship.js +59 -0
  63. package/dist/esm/mock/events/event-message.js +3 -0
  64. package/dist/esm/mock/events/event-room-invite.js +33 -0
  65. package/dist/esm/mock/events/event-room-join.js +105 -0
  66. package/dist/esm/mock/events/event-room-leave.js +83 -0
  67. package/dist/esm/mock/events/event-room-topic.js +50 -0
  68. package/dist/esm/mock/events/event.js +38 -0
  69. package/dist/esm/mock/events/mod.js +20 -0
  70. package/dist/esm/mock/messages/message-appmsg.js +41 -0
  71. package/dist/esm/mock/messages/message-emotion.js +24 -0
  72. package/dist/esm/mock/messages/message-miniprogram.js +18 -0
  73. package/dist/esm/mock/messages/message-sysmsg.js +50 -0
  74. package/dist/esm/mock/messages/sysmsg/message-pat.js +10 -0
  75. package/dist/esm/mock/messages/sysmsg/message-revokemsg.js +20 -0
  76. package/dist/esm/mock/messages/sysmsg/message-sysmsgtemplate.js +45 -0
  77. package/dist/esm/mock/messages/sysmsg/message-todo.js +15 -0
  78. package/dist/esm/mock/schema-mapper/contact.js +22 -0
  79. package/dist/esm/mock/schema-mapper/message/message-parser-appmsg.js +64 -0
  80. package/dist/esm/mock/schema-mapper/message/message-parser-refermsg.js +46 -0
  81. package/dist/esm/mock/schema-mapper/message/message-parser-room.js +33 -0
  82. package/dist/esm/mock/schema-mapper/message/message-parser-single-chat.js +4 -0
  83. package/dist/esm/mock/schema-mapper/message/message-parser-sysmsg.js +33 -0
  84. package/dist/esm/mock/schema-mapper/message/message-parser-type.js +31 -0
  85. package/dist/esm/mock/schema-mapper/message/message-parser.js +20 -0
  86. package/dist/esm/mock/schema-mapper/message/mod.js +19 -0
  87. package/dist/esm/mock/schema-mapper/message.js +21 -0
  88. package/dist/esm/mock/schema-mapper/room.js +30 -0
  89. package/dist/esm/mock/types.js +13 -0
  90. package/dist/esm/mock/utils/cached-promise.js +12 -0
  91. package/dist/esm/mock/utils/is-type.js +21 -0
  92. package/dist/esm/mock/utils/regex.js +11 -0
  93. package/dist/esm/mock/utils/runner.js +11 -0
  94. package/dist/esm/mock/utils/xml-to-json.js +14 -0
  95. package/dist/esm/mod.js +5 -0
  96. package/dist/esm/package-json.js +5 -0
  97. package/dist/esm/puppet-plus.js +829 -0
  98. package/dist/esm/server/cache-manager.js +77 -0
  99. package/dist/esm/server/index.js +19 -0
  100. package/dist/esm/server/map/AppMessageLink.js +58 -0
  101. package/dist/esm/server/map/Label.js +30 -0
  102. package/dist/esm/server/map/RoomMemberList.js +48 -0
  103. package/dist/esm/server/map/contact.js +192 -0
  104. package/dist/esm/server/map/index.js +7 -0
  105. package/dist/esm/server/map/message.js +107 -0
  106. package/dist/esm/server/map/response.js +78 -0
  107. package/dist/esm/server/service/api/index3.js +960 -0
  108. package/dist/esm/server/service/config/index.js +7 -0
  109. package/dist/esm/server/service/index.js +30 -0
  110. package/dist/esm/server/service/request/index.js +47 -0
  111. package/dist/esm/server/service/utils/polling.js +24 -0
  112. package/dist/esm/server/utils/PromiseUtils.js +19 -0
  113. package/dist/esm/server/utils/SerialExecutor.js +41 -0
  114. package/dist/esm/server/utils/Utils.js +7 -0
  115. package/dist/esm/server/utils/xml-to-json.js +18 -0
  116. package/dist/types/cleanup.d.ts +4 -0
  117. package/dist/types/config.d.ts +9 -0
  118. package/dist/types/mock/cache-manager.d.ts +55 -0
  119. package/dist/types/mock/events/event-friendship.d.ts +5 -0
  120. package/dist/types/mock/events/event-message.d.ts +5 -0
  121. package/dist/types/mock/events/event-room-invite.d.ts +5 -0
  122. package/dist/types/mock/events/event-room-join.d.ts +5 -0
  123. package/dist/types/mock/events/event-room-leave.d.ts +7 -0
  124. package/dist/types/mock/events/event-room-topic.d.ts +5 -0
  125. package/dist/types/mock/events/event.d.ts +28 -0
  126. package/dist/types/mock/events/mod.d.ts +4 -0
  127. package/dist/types/mock/messages/message-appmsg.d.ts +57 -0
  128. package/dist/types/mock/messages/message-emotion.d.ts +12 -0
  129. package/dist/types/mock/messages/message-miniprogram.d.ts +3 -0
  130. package/dist/types/mock/messages/message-sysmsg.d.ts +18 -0
  131. package/dist/types/mock/messages/sysmsg/message-pat.d.ts +14 -0
  132. package/dist/types/mock/messages/sysmsg/message-revokemsg.d.ts +19 -0
  133. package/dist/types/mock/messages/sysmsg/message-sysmsgtemplate.d.ts +60 -0
  134. package/dist/types/mock/messages/sysmsg/message-todo.d.ts +31 -0
  135. package/dist/types/mock/schema-mapper/contact.d.ts +4 -0
  136. package/dist/types/mock/schema-mapper/message/message-parser-appmsg.d.ts +4 -0
  137. package/dist/types/mock/schema-mapper/message/message-parser-refermsg.d.ts +4 -0
  138. package/dist/types/mock/schema-mapper/message/message-parser-room.d.ts +4 -0
  139. package/dist/types/mock/schema-mapper/message/message-parser-single-chat.d.ts +4 -0
  140. package/dist/types/mock/schema-mapper/message/message-parser-sysmsg.d.ts +4 -0
  141. package/dist/types/mock/schema-mapper/message/message-parser-type.d.ts +4 -0
  142. package/dist/types/mock/schema-mapper/message/message-parser.d.ts +12 -0
  143. package/dist/types/mock/schema-mapper/message/mod.d.ts +4 -0
  144. package/dist/types/mock/schema-mapper/message.d.ts +3 -0
  145. package/dist/types/mock/schema-mapper/room.d.ts +5 -0
  146. package/dist/types/mock/types.d.ts +35 -0
  147. package/dist/types/mock/utils/cached-promise.d.ts +5 -0
  148. package/dist/types/mock/utils/is-type.d.ts +9 -0
  149. package/dist/types/mock/utils/regex.d.ts +3 -0
  150. package/dist/types/mock/utils/runner.d.ts +3 -0
  151. package/dist/types/mock/utils/xml-to-json.d.ts +2 -0
  152. package/dist/types/mod.d.ts +6 -0
  153. package/dist/types/package-json.d.ts +4 -0
  154. package/dist/types/puppet-plus.d.ts +102 -0
  155. package/dist/types/server/cache-manager.d.ts +22 -0
  156. package/dist/types/server/index.d.ts +15 -0
  157. package/dist/types/server/map/AppMessageLink.d.ts +31 -0
  158. package/dist/types/server/map/Label.d.ts +17 -0
  159. package/dist/types/server/map/RoomMemberList.d.ts +31 -0
  160. package/dist/types/server/map/contact.d.ts +113 -0
  161. package/dist/types/server/map/index.d.ts +13 -0
  162. package/dist/types/server/map/message.d.ts +68 -0
  163. package/dist/types/server/map/response.d.ts +45 -0
  164. package/dist/types/server/server.d.ts +6 -0
  165. package/dist/types/server/service/api/index.d.ts +78 -0
  166. package/dist/types/server/service/api/index2.d.ts +72 -0
  167. package/dist/types/server/service/api/index3.d.ts +78 -0
  168. package/dist/types/server/service/api/index_c.d.ts +71 -0
  169. package/dist/types/server/service/api/ws.d.ts +2 -0
  170. package/dist/types/server/service/config/index.d.ts +6 -0
  171. package/dist/types/server/service/index.d.ts +8 -0
  172. package/dist/types/server/service/request/index.d.ts +14 -0
  173. package/dist/types/server/service/request/type.d.ts +11 -0
  174. package/dist/types/server/service/utils/polling.d.ts +8 -0
  175. package/dist/types/server/utils/PromiseUtils.d.ts +13 -0
  176. package/dist/types/server/utils/SerialExecutor.d.ts +10 -0
  177. package/dist/types/server/utils/Utils.d.ts +3 -0
  178. package/dist/types/server/utils/diff.d.ts +35 -0
  179. package/dist/types/server/utils/polling.d.ts +7 -0
  180. package/dist/types/server/utils/token.d.ts +11 -0
  181. package/dist/types/server/utils/xml-to-json.d.ts +3 -0
  182. package/package.json +123 -0
@@ -0,0 +1,960 @@
1
+ import { SyyyRequest as e } from "../index.js";
2
+
3
+ import "url";
4
+
5
+ import t from "cuid";
6
+
7
+ import "path";
8
+
9
+ import "fs-extra";
10
+
11
+ import "os";
12
+
13
+ import "wechaty-puppet";
14
+
15
+ import "flash-store";
16
+
17
+ import { Polling as a } from "../utils/polling.js";
18
+
19
+ import "../../map/index.js";
20
+
21
+ import { CacheManager as s } from "../../cache-manager.js";
22
+
23
+ import { xmlToJson as i, jsonToXml as n } from "../../utils/xml-to-json.js";
24
+
25
+ import { DeviceName as o } from "../config/index.js";
26
+
27
+ import { Message as r } from "../../map/message.js";
28
+
29
+ import { Response as c, SendAppMessageResponse as d } from "../../map/response.js";
30
+
31
+ import { ChatRoomMember as m } from "../../map/RoomMemberList.js";
32
+
33
+ import { Contact as l } from "../../map/contact.js";
34
+
35
+ import { Label as g } from "../../map/Label.js";
36
+
37
+ var h, p;
38
+
39
+ (p = h || (h = {}))[p.THUMB = 0] = "THUMB", p[p.NORMAL = 1] = "NORMAL", p[p.HD = 2] = "HD";
40
+
41
+ class Api {
42
+ _cacheMgr;
43
+ _client;
44
+ token;
45
+ uuid;
46
+ wxid;
47
+ callback;
48
+ poll_message_timer;
49
+ constructor(e) {
50
+ this._client = e;
51
+ }
52
+ async init() {
53
+ this._cacheMgr = new s(this.token), await this._cacheMgr.init();
54
+ }
55
+ async login(e, t) {
56
+ this.callback = t;
57
+ let a = this._client.token.split("puppet_padplus_")[1];
58
+ this.token = a, await this.init();
59
+ const s = await this._cacheMgr.getUUID(a);
60
+ this.uuid = s?.uuid, this.wxid = s?.wxid, s?.wxid ? this.getSecondLogin() : await this.getLoginCodeByFirst();
61
+ }
62
+ async requestLoginQRCode() {
63
+ return await this.getLoginCodeByFirst(), this.uuid ? `http://weixin.qq.com/x/${this.uuid}` : void 0;
64
+ }
65
+ getLoginCodeByFirst=async () => {
66
+ try {
67
+ let e = this.callback, t = await this.getLoginCodeNew(this.token);
68
+ if (1 == t.Code) {
69
+ this.uuid = t.Data.Uuid, e.onOneClickEvent({
70
+ status: 1,
71
+ imageUrl: `http://weixin.qq.com/x/${t.Data.Uuid}`
72
+ });
73
+ const s = new a;
74
+ let i = null;
75
+ s.poll(2e3, (async () => {
76
+ let a = await this.checkLoginStatus();
77
+ if (i || (i = setTimeout((async () => {
78
+ s.stop(), e.onQrCodeEvent({
79
+ status: 5
80
+ });
81
+ }), 1e3 * a.Data.expiredTime)), 0 == a.Code) {
82
+ if (1 == a.Data.states && e.onQrCodeEvent({
83
+ status: 2
84
+ }), 4 == a.Data.states && e.onQrCodeEvent({
85
+ status: 4
86
+ }), "登录成功" == a.Message) {
87
+ s.stop(), i && (clearTimeout(i), i = null), e.onQrCodeEvent({
88
+ status: 3
89
+ }), this._cacheMgr.setUUID(this.token, {
90
+ uuid: t.Data.Uuid,
91
+ wxid: a.Data.acctSectResp.userName
92
+ }), this.wxid = a.Data.acctSectResp.userName;
93
+ try {
94
+ let {messageList: t, contactList: a} = await this.getInitMessage();
95
+ this._client.selfContact = await this.getMyContact(this.wxid), await e.onLoginSuccess(this._client.selfContact),
96
+ await e.onSync({
97
+ getContactList: () => a,
98
+ getMessageList: () => t
99
+ }), this.poll_change_contact(3e3), this.poll_message(), this.poll_heart();
100
+ } catch (e) {}
101
+ }
102
+ } else {
103
+ a.Code;
104
+ }
105
+ }));
106
+ }
107
+ } catch (e) {}
108
+ };
109
+ async getSecondLogin() {
110
+ try {
111
+ await this.heart();
112
+ let {messageList: e, contactList: t} = await this.getInitMessage();
113
+ this._client.selfContact = await this.getMyContact(this.wxid), await this.callback.onLoginSuccess(this._client.selfContact),
114
+ await this.callback.onSync({
115
+ getContactList: () => t,
116
+ getMessageList: () => e
117
+ }), this.poll_message(), this.poll_change_contact(3e3), this.poll_heart();
118
+ } catch (e) {
119
+ await this.getLoginCodeByFirst();
120
+ }
121
+ }
122
+ poll_message() {
123
+ const e = new a;
124
+ this.poll_message_timer = e, e.poll(1e3, (async () => {
125
+ const {messageList: e, contactList: t} = await this.getMessage();
126
+ e.length > 0 && this._client.emit("message", e), t.length > 0 && this._client.emit("contact", t);
127
+ }));
128
+ }
129
+ async getLoginCodeNew(t = "") {
130
+ return e.post({
131
+ url: "/Login/LoginGetQR",
132
+ data: {
133
+ DeviceID: t,
134
+ DeviceName: o,
135
+ Proxy: {
136
+ ProxyIp: "string",
137
+ ProxyPassword: "string",
138
+ ProxyUser: "string"
139
+ }
140
+ }
141
+ });
142
+ }
143
+ async checkLoginStatus() {
144
+ return e.post({
145
+ url: `/Login/LoginCheckQR?uuid=${this.uuid}`,
146
+ data: {}
147
+ });
148
+ }
149
+ poll_heart() {
150
+ (new a).poll(15e4, (async () => {
151
+ try {
152
+ await this.heart();
153
+ } catch (e) {
154
+ this.poll_message_timer.stop(), await (this._cacheMgr?.close()), this._cacheMgr = void 0,
155
+ this._client.emit("kickout", "");
156
+ }
157
+ }));
158
+ }
159
+ async heart(t = 20) {
160
+ let a = 0;
161
+ for (;a < t; ) {
162
+ try {
163
+ let t = await e.post({
164
+ url: `/Login/HeartBeat?wxid=${this.wxid}`
165
+ });
166
+ if ("成功" === t.Message || !t) {
167
+ return t;
168
+ }
169
+ } catch (e) {}
170
+ a++;
171
+ }
172
+ throw new Error("HeartBeat failed after multiple attempts");
173
+ }
174
+ poll_change_contact=async e => {
175
+ for (;;) {
176
+ try {
177
+ const e = await (this._cacheMgr?.getRoomIds());
178
+ if (!e) {
179
+ return;
180
+ }
181
+ for (const t of e) {
182
+ try {
183
+ const e = await this.getChatRoomContact(t), a = await (this._cacheMgr?.getRoomMember(t));
184
+ if (a && e.getChatroommemberList().length > 0) {
185
+ const s = a, i = e.toObject().chatroommemberList;
186
+ (s.length !== i.length && Math.abs(s.length - i.length) < 3 || JSON.stringify(s) != JSON.stringify(i)) && (this._cacheMgr?.setRoomMember(t, e.toObject().chatroommemberList),
187
+ console.log("contactcontact", e), this._client.emit("contact", [ e ]));
188
+ } else {
189
+ 0 !== e.getChatroommemberList().length && this._cacheMgr?.setRoomMember(t, e.toObject().chatroommemberList);
190
+ }
191
+ } catch (e) {}
192
+ }
193
+ } catch (e) {}
194
+ await new Promise((t => setTimeout(t, e)));
195
+ }
196
+ };
197
+ async getInitMessage() {
198
+ let e = this, t = [], a = [];
199
+ return await async function s() {
200
+ let {messageList: i, contactList: n} = await e.getMessage(!0);
201
+ t.push(...i), a.push(...n), i && 0 == i.length && 0 == n.length || await s();
202
+ }(), {
203
+ messageList: t,
204
+ contactList: a
205
+ };
206
+ }
207
+ async getMessage(t) {
208
+ let a = await e.post({
209
+ url: "/Msg/Sync",
210
+ data: {
211
+ Scene: 0,
212
+ Synckey: "string",
213
+ Wxid: this.wxid
214
+ }
215
+ }), s = [];
216
+ if (0 == a.Code && a.Data.AddMsgs && a.Data.AddMsgs.length > 0) {
217
+ let e = a.Data.AddMsgs;
218
+ for (const t of e) {
219
+ let message = (new r).setFromusername(t.FromUserName.string).setTousername(t.ToUserName.string).setId(t.MsgId).setType(t.MsgType).setCreatetime(t.CreateTime);
220
+ const e = /@chatroom$/.test(t.FromUserName.string), a = /@chatroom$/.test(t.ToUserName.string);
221
+ let n = [];
222
+ if (e || a) {
223
+ this._cacheMgr?.setRoom(t.FromUserName.string || t.ToUserName.string, !0), n = ((await i(t.MsgSource)).msgsource?.atuserlist ? (await i(t.MsgSource)).msgsource.atuserlist.split(",") : []).filter((e => "" !== e));
224
+ }
225
+ message.setContent(t.Content.string).setAtList(n), s.push(message);
226
+ }
227
+ }
228
+ return {
229
+ messageList: s,
230
+ contactList: []
231
+ };
232
+ }
233
+ async send_text(a, s, i = "") {
234
+ return await e.post({
235
+ url: "/Msg/SendTxt",
236
+ data: {
237
+ At: i?.join?.(","),
238
+ Content: s,
239
+ ToWxid: a,
240
+ Type: 0,
241
+ Wxid: this.wxid
242
+ }
243
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
244
+ clientmsgid: t(),
245
+ newclientmsgid: t(),
246
+ createtime: (new Date).getTime()
247
+ });
248
+ }
249
+ async sendImageMessage(a, s, i) {
250
+ return await e.post({
251
+ url: "/Msg/UploadImg",
252
+ data: {
253
+ Base64: s,
254
+ ToWxid: a,
255
+ Wxid: this.wxid
256
+ }
257
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
258
+ clientmsgid: t(),
259
+ newclientmsgid: t(),
260
+ createtime: (new Date).getTime()
261
+ });
262
+ }
263
+ async sendVideoMessage(a, s, i) {
264
+ return await e.post({
265
+ url: "/Msg/SendVideo",
266
+ data: {
267
+ Base64: s,
268
+ ImageBase64: `data:image/png;base64,${i}`,
269
+ PlayLength: 0,
270
+ ToWxid: a,
271
+ Wxid: this.wxid
272
+ }
273
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
274
+ clientmsgid: t(),
275
+ newclientmsgid: t(),
276
+ createtime: (new Date).getTime()
277
+ });
278
+ }
279
+ async sendFileMessage(a) {
280
+ return await e.post({
281
+ url: "/Tools/UploadFile",
282
+ data: {
283
+ Base64: a,
284
+ Wxid: this.wxid
285
+ }
286
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
287
+ clientmsgid: t(),
288
+ newclientmsgid: t(),
289
+ createtime: (new Date).getTime()
290
+ });
291
+ }
292
+ async sendMessageEmoji(a, s, i) {
293
+ return await e.post({
294
+ url: "/Msg/SendEmoji",
295
+ data: {
296
+ Md5: s,
297
+ ToWxid: a,
298
+ TotalLen: i,
299
+ Wxid: this.wxid
300
+ }
301
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
302
+ clientmsgid: t(),
303
+ newclientmsgid: t(),
304
+ createtime: (new Date).getTime()
305
+ });
306
+ }
307
+ async sendMessageLink(a, s, i) {
308
+ let o = {
309
+ appmsg: {
310
+ $: {
311
+ appid: "",
312
+ sdkver: "0"
313
+ },
314
+ title: i.title,
315
+ des: i.description,
316
+ action: "view",
317
+ type: "5",
318
+ showtype: "0",
319
+ content: "",
320
+ url: i.url,
321
+ dataurl: "",
322
+ lowurl: "",
323
+ lowdataurl: "",
324
+ recorditem: "",
325
+ thumburl: i.thumbURL,
326
+ messageaction: "",
327
+ laninfo: "",
328
+ extinfo: "",
329
+ sourceusername: "",
330
+ sourcedisplayname: "",
331
+ commenturl: "",
332
+ appattach: {
333
+ totallen: "0",
334
+ attachid: "",
335
+ emoticonmd5: "",
336
+ fileext: "",
337
+ aeskey: "",
338
+ cdnthumburl: "3057020100044b30490201000204cfb2499202032f58b702047366327002046690b731042437376632396432322d386664622d346332352d383735332d3066623162666164313539320204051808030201000405004c4d3700",
339
+ cdnthumbaeskey: "801f4f18eb05147db6b1a5c0085ef945",
340
+ cdnthumbmd5: "661e8de94322838210632126fde5094b",
341
+ cdnthumblength: "10300",
342
+ cdnthumbwidth: "100",
343
+ cdnthumbheight: "100"
344
+ },
345
+ webviewshared: {
346
+ publisherId: "msg_8252690270823229747",
347
+ publisherReqId: "106112608"
348
+ },
349
+ weappinfo: {
350
+ pagepath: "",
351
+ username: "",
352
+ appid: "",
353
+ appservicetype: "0"
354
+ },
355
+ websearch: ""
356
+ }
357
+ }, r = await n(o), c = await n({
358
+ msg: o
359
+ });
360
+ return await e.post({
361
+ url: "/Msg/SendApp",
362
+ data: {
363
+ ToWxid: s,
364
+ Type: 0,
365
+ Wxid: this.wxid,
366
+ Xml: r
367
+ }
368
+ }), (new d).setMsgid(t()).setMessagerevokeinfo({
369
+ clientmsgid: t(),
370
+ newclientmsgid: t(),
371
+ createtime: (new Date).getTime()
372
+ }).setMsgcontent(c);
373
+ }
374
+ async sendMessageMiniProgram(a, s) {
375
+ const {appid: i, description: o, iconUrl: r, shareId: c, thumbKey: m, thumbUrl: l, username: g, title: h, pagePath: p} = s;
376
+ let w = {
377
+ appmsg: {
378
+ appid: i,
379
+ title: h,
380
+ action: "view",
381
+ type: "33",
382
+ showtype: "0",
383
+ url: `https://mp.weixin.qq.com/mp/waerrpage?appid=${i}&amp;type=upgrade&amp;upgradetype=3#wechat_redirect`,
384
+ md5: "45aa6d4173817719325046cd881fa92d",
385
+ sourcedisplayname: o,
386
+ appattach: {
387
+ totallen: "0",
388
+ fileext: "jpg",
389
+ filekey: "dbb0e647bd45df3d1bd83d22d51b8073",
390
+ cdnthumburl: l,
391
+ aeskey: "5efa5257be70f5fd634676f997e79129",
392
+ cdnthumbaeskey: m,
393
+ cdnthumbmd5: "45aa6d4173817719325046cd881fa92d",
394
+ encryver: "1",
395
+ cdnthumblength: "65264",
396
+ cdnthumbheight: "100",
397
+ cdnthumbwidth: "100"
398
+ },
399
+ webviewshared: {
400
+ publisherReqId: "0"
401
+ },
402
+ weappinfo: {
403
+ pagepath: p,
404
+ username: g,
405
+ appid: i,
406
+ type: "2",
407
+ weappiconurl: r,
408
+ appservicetype: "0",
409
+ shareId: c
410
+ }
411
+ }
412
+ }, u = await n(w), y = await n({
413
+ msg: w
414
+ });
415
+ return await e.post({
416
+ url: "/Msg/SendApp",
417
+ data: {
418
+ ToWxid: a,
419
+ Type: 0,
420
+ Wxid: this.wxid,
421
+ Xml: u
422
+ }
423
+ }), (new d).setMsgid(t()).setMessagerevokeinfo({
424
+ clientmsgid: t(),
425
+ newclientmsgid: t(),
426
+ createtime: (new Date).getTime()
427
+ }).setMsgcontent(y);
428
+ }
429
+ async forwardMessage(a, s) {
430
+ let o = await i(s), r = await n({
431
+ appmsg: o.msg.appmsg
432
+ });
433
+ return await e.post({
434
+ url: "/Msg/SendApp",
435
+ data: {
436
+ ToWxid: a,
437
+ Type: 0,
438
+ Wxid: this.wxid,
439
+ Xml: r
440
+ }
441
+ }), (new d).setMsgid(t()).setMessagerevokeinfo({
442
+ clientmsgid: t(),
443
+ newclientmsgid: t(),
444
+ createtime: (new Date).getTime()
445
+ }).setMsgcontent(s);
446
+ }
447
+ async forwardMessagewenjian(a, s) {
448
+ let i = await n({
449
+ msg: {
450
+ appmsg: {
451
+ sdkver: "0",
452
+ title: "新建文本文档 (2).txt",
453
+ des: "184 B",
454
+ type: "6",
455
+ action: "view",
456
+ appattach: {
457
+ totallen: "184",
458
+ fileext: "txt",
459
+ attachid: "@cdn_3057020100044b30490201000204cfb2499202032f591b02041424e978020466a8b32c042437363061356463352d636435372d346339652d626332322d3430343032396633633637640204051400050201000405004c505700_4dfcfca645d1f21482a9c9eea8140f3e_1",
460
+ cdnattachurl: "3057020100044b30490201000204cfb2499202032f591b02041424e978020466a8b32c042437363061356463352d636435372d346339652d626332322d3430343032396633633637640204051400050201000405004c505700",
461
+ aeskey: "4dfcfca645d1f21482a9c9eea8140f3e",
462
+ encryver: "0",
463
+ filekey: "wxid_yqw0irrcmoyd12_2764_1722331948",
464
+ overwrite_newmsgid: "7009346818105138159",
465
+ fileuploadtoken: "v1_7wKTlnLUYDj/Zspdynmg7opHS3F+nLFWQcFHcnJvZNQCfoFxVMjJr8zu/79izHT2VeBP+4382v9Q7GPuzYCdPvwClLTDHZQ6RggFOpF8kP4x5b2kETRF9bURmKeTyO6vidAQMyHYijyPxmdi+GjkJzr34qhhdGbsFkl8KMIjVgk1sYTPsOjpV/n9TRfEIr056iMnfISvqpWoFoEo8SkgbwX5oZTgfkeB"
466
+ },
467
+ md5: "cc2100250f9da1c45beed68d867756bb",
468
+ webviewshared: {},
469
+ mpsharetrace: {
470
+ hasfinderelement: "0"
471
+ },
472
+ secretmsg: {
473
+ isscrectmsg: "0"
474
+ }
475
+ },
476
+ fromusername: "wxid_kxbss8yjkqx122",
477
+ scene: "1",
478
+ appinfo: {
479
+ version: "1"
480
+ }
481
+ }
482
+ });
483
+ return await e.post({
484
+ url: "/Msg/SendCDNFile",
485
+ data: {
486
+ Content: i,
487
+ ToWxid: a,
488
+ Wxid: this.wxid
489
+ }
490
+ }), (new d).setMsgid(t()).setMessagerevokeinfo({
491
+ clientmsgid: t(),
492
+ newclientmsgid: t(),
493
+ createtime: (new Date).getTime()
494
+ }).setMsgcontent(s);
495
+ }
496
+ async sendVoiceMessage(a, s, i) {
497
+ return await e.post({
498
+ url: "/Msg/SendVoice",
499
+ data: {
500
+ Base64: s,
501
+ ToWxid: a,
502
+ Type: 4,
503
+ VoiceTime: 1,
504
+ Wxid: this.wxid
505
+ }
506
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
507
+ clientmsgid: t(),
508
+ newclientmsgid: t(),
509
+ createtime: (new Date).getTime()
510
+ });
511
+ }
512
+ async getAllChatRoomMembers() {
513
+ let t = await e.post({
514
+ url: "/",
515
+ data: {
516
+ type: 10114
517
+ }
518
+ }), a = [];
519
+ for (const e of t.data.data.chatrooms) {
520
+ let t = [];
521
+ for (const a in e.chatroomMembers) {
522
+ t.push((new m).setUsername(e.chatroomMembers[a].userName).setAvatar(e.chatroomMembers[a].smallHeadImgUrl).setNickname(e.chatroomMembers[a].nickName).setInviterusername(e.chatroomMembers[a].inviterUserName).setDisplayname(e.chatroomMembers[a]?.chatroomNickName));
523
+ }
524
+ const s = (new l).setUsername(e.userName).setNickname(e.nickName).setAvatar(e.smallHeadImgUrl).setGender(0).setSignature("").setRemark(e.remark).setChatroommaxcount(e.chatroomMaxCount).setChatroommemberList(t).setChatroomownerusername(e.ownerUserName);
525
+ a.push(s);
526
+ }
527
+ return a;
528
+ }
529
+ async getChatRoomMembers(t) {
530
+ let a = await e.post({
531
+ url: "/Group/GetChatRoomMemberDetail",
532
+ data: {
533
+ QID: t,
534
+ Wxid: this.wxid
535
+ }
536
+ }), s = [];
537
+ if (a.Data?.NewChatroomData.ChatRoomMember) {
538
+ for (const e of a.Data.NewChatroomData.ChatRoomMember) {
539
+ s.push((new m).setUsername(e.UserName).setAvatar(e.SmallHeadImgUrl).setNickname(e.NickName).setDisplayname(e?.DisplayName || ""));
540
+ }
541
+ }
542
+ return s;
543
+ }
544
+ async getContact(e, t) {
545
+ let a;
546
+ return a = /@chatroom$/.test(e) ? await this.getChatRoomContact(e) : e == this._client.selfContact.getUsername() ? this._client.selfContact : await this.getChatContact(e),
547
+ a;
548
+ }
549
+ async updateSelfNickName(t) {
550
+ return new Promise((async (a, s) => {
551
+ try {
552
+ a(await e.post({
553
+ url: "/User/UpdateProfile",
554
+ data: {
555
+ NickName: t,
556
+ Wxid: this.wxid
557
+ }
558
+ }));
559
+ } catch (e) {
560
+ s(e);
561
+ }
562
+ }));
563
+ }
564
+ async updateSelfSignature(t) {
565
+ return new Promise((async (a, s) => {
566
+ try {
567
+ a(await e.post({
568
+ url: "/User/UpdateProfile",
569
+ data: {
570
+ Signature: t,
571
+ Wxid: this.wxid
572
+ }
573
+ }));
574
+ } catch (e) {
575
+ s(e);
576
+ }
577
+ }));
578
+ }
579
+ async getContactQRCode(t, a) {
580
+ return new Promise((async (t, s) => {
581
+ try {
582
+ t(await e.post({
583
+ url: "/User/GetQRCode",
584
+ data: {
585
+ Style: a,
586
+ Wxid: this.wxid
587
+ }
588
+ }));
589
+ } catch (e) {
590
+ s(e);
591
+ }
592
+ }));
593
+ }
594
+ async updateContactRemark(t, a) {
595
+ await e.post({
596
+ url: "/Friend/SetRemarks",
597
+ data: {
598
+ Remarks: a,
599
+ ToWxid: t,
600
+ Wxid: this.wxid
601
+ }
602
+ });
603
+ }
604
+ async GetFriendRelation(t) {
605
+ return await e.post({
606
+ url: "/Friend/GetFriendRelation",
607
+ data: {
608
+ UserName: t,
609
+ Wxid: this.wxid
610
+ }
611
+ });
612
+ }
613
+ async addContact(t, a, s) {
614
+ await e.post({
615
+ url: "/Friend/SendRequest",
616
+ data: {
617
+ Scene: 0,
618
+ V1: t,
619
+ V2: a,
620
+ VerifyContent: s,
621
+ Wxid: this.wxid
622
+ }
623
+ });
624
+ }
625
+ async deleteContact(t) {
626
+ await e.post({
627
+ url: "/Friend/Delete",
628
+ data: {
629
+ ToWxid: t,
630
+ Wxid: this.wxid
631
+ }
632
+ });
633
+ }
634
+ async getChatContact(t) {
635
+ let contact = (await e.post({
636
+ url: "/Friend/GetContractDetail",
637
+ data: {
638
+ ChatRoom: "string",
639
+ Towxids: t,
640
+ Wxid: this.wxid
641
+ }
642
+ })).Data.ContactList[0];
643
+ return (new l).setUsername(contact.UserName.string).setNickname(contact.NickName.string).setAvatar(contact.SmallHeadImgUrl).setGender(contact.Sex).setSignature(contact.Signature).setAntispamticket(contact.AntispamTicket).setAlias(contact.Alias);
644
+ }
645
+ async getMyContact(t) {
646
+ return new Promise((async (t, a) => {
647
+ try {
648
+ let contact = (await e.post({
649
+ url: `/User/GetContractProfile?wxid=${this.wxid}`,
650
+ data: {}
651
+ })).Data;
652
+ t((new l).setUsername(contact.userInfo.UserName.string).setNickname(contact.userInfo.NickName.string).setAvatar(contact.userInfoExt.SmallHeadImgUrl).setGender(contact.userInfo.Sex).setSignature(contact.userInfo.Signature).setAntispamticket(contact.AntispamTicket || ""));
653
+ } catch (e) {
654
+ a(e);
655
+ }
656
+ }));
657
+ }
658
+ async getChatRoomContact(t) {
659
+ return new Promise((async (a, s) => {
660
+ let i = await e.post({
661
+ url: "Group/GetChatRoomInfo",
662
+ data: {
663
+ QID: t,
664
+ Wxid: this.wxid
665
+ }
666
+ });
667
+ if (0 == i.Code && i.Data.ContactList) {
668
+ let contact = i.Data.ContactList[0], e = await this.getChatRoomMembers(t);
669
+ a((new l).setUsername(contact.UserName.string).setNickname(contact.NickName.string).setAvatar(contact.SmallHeadImgUrl).setGender(0).setSignature("").setRemark("").setChatroommaxcount(500).setChatroommemberList(e).setChatroomownerusername(contact.ChatRoomOwner).setEncryptusername(contact.EncryptUserName));
670
+ } else {
671
+ s("数据出错");
672
+ }
673
+ }));
674
+ }
675
+ async acceptChatRoomInvitation(t, a) {
676
+ return e.post({
677
+ url: "/Group/ScanIntoGroup",
678
+ data: {
679
+ Url: a,
680
+ Wxid: this.wxid
681
+ }
682
+ });
683
+ }
684
+ async quitChatRoom(t) {
685
+ return e.post({
686
+ url: "/Group/Quit",
687
+ data: {
688
+ QID: t,
689
+ Wxid: this.wxid
690
+ }
691
+ });
692
+ }
693
+ async getMessageImage(t, a, s) {
694
+ return new Promise((async (a, n) => {
695
+ try {
696
+ let n = (await i(t)).msg.img.$, o = await e.post({
697
+ url: "/Tools/CdnDownloadImage",
698
+ data: {
699
+ FileAesKey: n.aeskey,
700
+ FileNo: n.cdnmidimgurl,
701
+ Wxid: this.wxid
702
+ }
703
+ });
704
+ a({
705
+ imageType: s,
706
+ imageData: o.Data.Image
707
+ });
708
+ } catch (e) {
709
+ a(e);
710
+ }
711
+ }));
712
+ }
713
+ async getMessageVoice(t, a, s) {
714
+ let n = (await i(a)).msg.voicemsg.$;
715
+ return (await e.post({
716
+ url: "/Tools/DownloadVoice",
717
+ data: {
718
+ Bufid: n.clientmsgid,
719
+ FromUserName: s,
720
+ Length: Number(n.length),
721
+ MsgId: t,
722
+ Wxid: this.wxid
723
+ }
724
+ })).Data.data.buffer;
725
+ }
726
+ async getMessageVideo(t, a, s) {
727
+ let n = (await i(a)).msg.videomsg.$;
728
+ return (await e.post({
729
+ url: "/Tools/DownloadVideo",
730
+ data: {
731
+ CompressType: 0,
732
+ DataLen: Number(n.length),
733
+ MsgId: t,
734
+ Section: {
735
+ DataLen: Number(n.playlength),
736
+ StartPos: 0
737
+ },
738
+ ToWxid: s,
739
+ Wxid: this.wxid
740
+ }
741
+ })).Data.data.buffer;
742
+ }
743
+ async getMessageAttach(t, a) {
744
+ let s = await i(t), n = s.msg.appmsg.appattach;
745
+ return (await e.post({
746
+ url: "/Tools/DownloadFile",
747
+ data: {
748
+ AppID: s.msg.appmsg.$.appid,
749
+ AttachId: n.attachid,
750
+ DataLen: Number(n.totallen),
751
+ Section: {
752
+ DataLen: 0,
753
+ StartPos: 0
754
+ },
755
+ UserName: a,
756
+ Wxid: this.wxid
757
+ }
758
+ })).Data.data.buffer;
759
+ }
760
+ async getMessageMiniProgramThumb(t, a) {
761
+ let s = (await i(t)).msg.appmsg.appattach;
762
+ return (await e.post({
763
+ url: "/Tools/CdnDownloadImage",
764
+ data: {
765
+ FileAesKey: s.aeskey,
766
+ FileNo: s.cdnattachurl,
767
+ Wxid: this.wxid
768
+ }
769
+ })).Data.Image;
770
+ }
771
+ async getMessageAttachThumb(t, a) {
772
+ let s = (await i(t)).msg.appmsg.appattach;
773
+ return (await e.post({
774
+ url: "/Tools/CdnDownloadImage",
775
+ data: {
776
+ FileAesKey: s.aeskey,
777
+ FileNo: s.cdnthumburl,
778
+ Wxid: this.wxid
779
+ }
780
+ })).Data.Image;
781
+ }
782
+ async sendContactCardMessage(a, contact) {
783
+ return await e.post({
784
+ url: "/Msg/ShareCard",
785
+ data: {
786
+ ToWxid: a,
787
+ CardWxId: contact.getUsername(),
788
+ CardNickName: contact.getNickname(),
789
+ CardAlias: contact.getAlias(),
790
+ Wxid: this.wxid
791
+ }
792
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
793
+ clientmsgid: t(),
794
+ newclientmsgid: t(),
795
+ createtime: (new Date).getTime()
796
+ });
797
+ }
798
+ async logout() {
799
+ return await e.get({
800
+ url: `/Login/LogOut?wxid=${this.wxid}`,
801
+ data: {}
802
+ }), (new c).setMsgid(t()).setMessagerevokeinfo({
803
+ clientmsgid: t(),
804
+ newclientmsgid: t(),
805
+ createtime: (new Date).getTime()
806
+ });
807
+ }
808
+ async revokeMessage(t, a, s) {
809
+ return e.post({
810
+ url: "/Msg/Revoke",
811
+ data: {
812
+ ClientMsgId: a,
813
+ CreateTime: 0,
814
+ NewMsgId: s,
815
+ ToUserName: t,
816
+ Wxid: this.wxid
817
+ }
818
+ });
819
+ }
820
+ async createChatRoom(t, a) {
821
+ return (await e.post({
822
+ url: "/Group/CreateChatRoom",
823
+ data: {
824
+ UserList: t,
825
+ Wxid: this.wxid
826
+ }
827
+ })).Data.chatRoomName.string;
828
+ }
829
+ async inviteChatroomMembers(t, a) {
830
+ await e.post({
831
+ url: "/Group/AddChatRoomMember",
832
+ data: {
833
+ ChatRoomName: t,
834
+ ToWxids: a,
835
+ Wxid: this.wxid
836
+ }
837
+ });
838
+ }
839
+ async deleteChatRoomMember(t, a) {
840
+ await e.post({
841
+ url: "/Group/DelChatRoomMember",
842
+ data: {
843
+ ChatRoomName: t,
844
+ ToWxids: a,
845
+ Wxid: this.wxid
846
+ }
847
+ });
848
+ }
849
+ async getChatRoomQrCode(t) {
850
+ return new Promise((async (a, s) => {
851
+ try {
852
+ a(await e.post({
853
+ url: "/Group/GetQRCode",
854
+ data: {
855
+ QID: t,
856
+ Wxid: this.wxid
857
+ }
858
+ }));
859
+ } catch (e) {
860
+ s(e);
861
+ }
862
+ }));
863
+ }
864
+ async setChatRoomName(t, a) {
865
+ await e.post({
866
+ url: "/Group/SetChatRoomName",
867
+ data: {
868
+ Content: a,
869
+ QID: t,
870
+ Wxid: this.wxid
871
+ }
872
+ });
873
+ }
874
+ async getChatRoomAnnouncement(t) {
875
+ await e.post({
876
+ url: "/Group/GetChatRoomInfoDetail",
877
+ data: {
878
+ QID: t,
879
+ Wxid: this.wxid
880
+ }
881
+ });
882
+ }
883
+ async setChatRoomAnnouncement(t, a) {
884
+ await e.post({
885
+ url: "/Group/SetChatRoomAnnouncement",
886
+ data: {
887
+ Content: a,
888
+ QID: t,
889
+ Wxid: this.wxid
890
+ }
891
+ });
892
+ }
893
+ async acceptUser(t, a, s, i) {
894
+ await e.post({
895
+ url: "/Friend/PassVerify",
896
+ data: {
897
+ V1: s,
898
+ V2: a,
899
+ Wxid: this.wxid,
900
+ Scene: i
901
+ }
902
+ });
903
+ }
904
+ async getLabelList() {
905
+ return new Promise((async (t, a) => {
906
+ try {
907
+ let a = await e.post({
908
+ url: `/Label/GetList?wxid=${this.wxid}`,
909
+ data: {}
910
+ }), s = [];
911
+ if (a.Data.labelPairList) {
912
+ for (const e of a.Data.labelPairList) {
913
+ let message = (new g).setId(e.labelID).setName(e.labelName);
914
+ s.push(message);
915
+ }
916
+ }
917
+ t(s);
918
+ } catch (e) {}
919
+ }));
920
+ }
921
+ async addLabel(t) {
922
+ return await e.post({
923
+ url: "/Label/Add",
924
+ data: {
925
+ LabelName: t,
926
+ wxid: this.wxid
927
+ }
928
+ });
929
+ }
930
+ async removeLabel(t) {
931
+ return new Promise((async (a, s) => {
932
+ try {
933
+ a(await e.post({
934
+ url: "/Label/Delete",
935
+ data: {
936
+ LabelID: String(t),
937
+ Wxid: this.wxid
938
+ }
939
+ }));
940
+ } catch (e) {}
941
+ }));
942
+ }
943
+ async setContactLabel(t, a) {
944
+ return new Promise((async (s, i) => {
945
+ let n = a.filter((e => !isNaN(e)));
946
+ try {
947
+ s(await e.post({
948
+ url: "/Label/UpdateList",
949
+ data: {
950
+ LabelID: n.join(",") || "",
951
+ ToWxids: t,
952
+ wxid: this.wxid
953
+ }
954
+ }));
955
+ } catch (e) {}
956
+ }));
957
+ }
958
+ }
959
+
960
+ export { Api };