dread-fork 2.0.0-dread.0

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 (200) hide show
  1. package/DREAD_PATCHES.md +34 -0
  2. package/README.md +34 -0
  3. package/WAProto/index.js +169661 -0
  4. package/engine-requirements.js +10 -0
  5. package/lib/Defaults/baileys-version.json +3 -0
  6. package/lib/Defaults/index.d.ts +53 -0
  7. package/lib/Defaults/index.js +158 -0
  8. package/lib/Defaults/phonenumber-mcc.json +223 -0
  9. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  10. package/lib/Signal/Group/ciphertext-message.js +15 -0
  11. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  12. package/lib/Signal/Group/group-session-builder.js +64 -0
  13. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  14. package/lib/Signal/Group/group_cipher.js +96 -0
  15. package/lib/Signal/Group/index.d.ts +11 -0
  16. package/lib/Signal/Group/index.js +57 -0
  17. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  18. package/lib/Signal/Group/keyhelper.js +55 -0
  19. package/lib/Signal/Group/queue-job.d.ts +1 -0
  20. package/lib/Signal/Group/queue-job.js +57 -0
  21. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  22. package/lib/Signal/Group/sender-chain-key.js +34 -0
  23. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  24. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  25. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  26. package/lib/Signal/Group/sender-key-message.js +69 -0
  27. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  28. package/lib/Signal/Group/sender-key-name.js +51 -0
  29. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  30. package/lib/Signal/Group/sender-key-record.js +53 -0
  31. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  32. package/lib/Signal/Group/sender-key-state.js +99 -0
  33. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  34. package/lib/Signal/Group/sender-message-key.js +29 -0
  35. package/lib/Signal/libsignal.d.ts +3 -0
  36. package/lib/Signal/libsignal.js +174 -0
  37. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
  38. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  39. package/lib/Socket/Client/index.d.ts +3 -0
  40. package/lib/Socket/Client/index.js +19 -0
  41. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  42. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  43. package/lib/Socket/Client/web-socket-client.d.ts +12 -0
  44. package/lib/Socket/Client/web-socket-client.js +62 -0
  45. package/lib/Socket/business.d.ts +171 -0
  46. package/lib/Socket/business.js +260 -0
  47. package/lib/Socket/chats.d.ts +267 -0
  48. package/lib/Socket/chats.js +1019 -0
  49. package/lib/Socket/dugong.d.ts +254 -0
  50. package/lib/Socket/dugong.js +509 -0
  51. package/lib/Socket/groups.d.ts +115 -0
  52. package/lib/Socket/groups.js +317 -0
  53. package/lib/Socket/index.d.ts +174 -0
  54. package/lib/Socket/index.js +12 -0
  55. package/lib/Socket/index.js.bak +26 -0
  56. package/lib/Socket/messages-recv.d.ts +161 -0
  57. package/lib/Socket/messages-recv.js +1113 -0
  58. package/lib/Socket/messages-send.d.ts +149 -0
  59. package/lib/Socket/messages-send.js +762 -0
  60. package/lib/Socket/newsletter.d.ts +134 -0
  61. package/lib/Socket/newsletter.js +347 -0
  62. package/lib/Socket/registration.d.ts +267 -0
  63. package/lib/Socket/registration.js +166 -0
  64. package/lib/Socket/socket.d.ts +43 -0
  65. package/lib/Socket/socket.js +694 -0
  66. package/lib/Socket/usync.d.ts +36 -0
  67. package/lib/Socket/usync.js +70 -0
  68. package/lib/Store/index.d.ts +3 -0
  69. package/lib/Store/index.js +10 -0
  70. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  71. package/lib/Store/make-cache-manager-store.js +83 -0
  72. package/lib/Store/make-in-memory-store.d.ts +118 -0
  73. package/lib/Store/make-in-memory-store.js +427 -0
  74. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  75. package/lib/Store/make-ordered-dictionary.js +81 -0
  76. package/lib/Store/object-repository.d.ts +10 -0
  77. package/lib/Store/object-repository.js +27 -0
  78. package/lib/Types/Auth.d.ts +110 -0
  79. package/lib/Types/Auth.js +2 -0
  80. package/lib/Types/Call.d.ts +13 -0
  81. package/lib/Types/Call.js +2 -0
  82. package/lib/Types/Chat.d.ts +102 -0
  83. package/lib/Types/Chat.js +4 -0
  84. package/lib/Types/Contact.d.ts +19 -0
  85. package/lib/Types/Contact.js +2 -0
  86. package/lib/Types/Events.d.ts +157 -0
  87. package/lib/Types/Events.js +2 -0
  88. package/lib/Types/GroupMetadata.d.ts +55 -0
  89. package/lib/Types/GroupMetadata.js +2 -0
  90. package/lib/Types/Label.d.ts +35 -0
  91. package/lib/Types/Label.js +27 -0
  92. package/lib/Types/LabelAssociation.d.ts +29 -0
  93. package/lib/Types/LabelAssociation.js +9 -0
  94. package/lib/Types/Message.d.ts +273 -0
  95. package/lib/Types/Message.js +9 -0
  96. package/lib/Types/Newsletter.d.ts +103 -0
  97. package/lib/Types/Newsletter.js +38 -0
  98. package/lib/Types/Product.d.ts +78 -0
  99. package/lib/Types/Product.js +2 -0
  100. package/lib/Types/Signal.d.ts +57 -0
  101. package/lib/Types/Signal.js +2 -0
  102. package/lib/Types/Socket.d.ts +111 -0
  103. package/lib/Types/Socket.js +2 -0
  104. package/lib/Types/State.d.ts +27 -0
  105. package/lib/Types/State.js +2 -0
  106. package/lib/Types/USync.d.ts +25 -0
  107. package/lib/Types/USync.js +2 -0
  108. package/lib/Types/index.d.ts +57 -0
  109. package/lib/Types/index.js +42 -0
  110. package/lib/Utils/auth-utils.d.ts +18 -0
  111. package/lib/Utils/auth-utils.js +206 -0
  112. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  113. package/lib/Utils/baileys-event-stream.js +63 -0
  114. package/lib/Utils/business.d.ts +22 -0
  115. package/lib/Utils/business.js +234 -0
  116. package/lib/Utils/chat-utils.d.ts +71 -0
  117. package/lib/Utils/chat-utils.js +729 -0
  118. package/lib/Utils/crypto.d.ts +41 -0
  119. package/lib/Utils/crypto.js +151 -0
  120. package/lib/Utils/decode-wa-message.d.ts +19 -0
  121. package/lib/Utils/decode-wa-message.js +198 -0
  122. package/lib/Utils/event-buffer.d.ts +35 -0
  123. package/lib/Utils/event-buffer.js +514 -0
  124. package/lib/Utils/generics.d.ts +92 -0
  125. package/lib/Utils/generics.js +423 -0
  126. package/lib/Utils/history.d.ts +15 -0
  127. package/lib/Utils/history.js +96 -0
  128. package/lib/Utils/index.d.ts +17 -0
  129. package/lib/Utils/index.js +33 -0
  130. package/lib/Utils/link-preview.d.ts +21 -0
  131. package/lib/Utils/link-preview.js +93 -0
  132. package/lib/Utils/logger.d.ts +4 -0
  133. package/lib/Utils/logger.js +7 -0
  134. package/lib/Utils/lt-hash.d.ts +12 -0
  135. package/lib/Utils/lt-hash.js +51 -0
  136. package/lib/Utils/make-mutex.d.ts +7 -0
  137. package/lib/Utils/make-mutex.js +43 -0
  138. package/lib/Utils/messages-media.d.ts +116 -0
  139. package/lib/Utils/messages-media.js +819 -0
  140. package/lib/Utils/messages.d.ts +77 -0
  141. package/lib/Utils/messages.js +816 -0
  142. package/lib/Utils/noise-handler.d.ts +21 -0
  143. package/lib/Utils/noise-handler.js +155 -0
  144. package/lib/Utils/process-message.d.ts +41 -0
  145. package/lib/Utils/process-message.js +321 -0
  146. package/lib/Utils/signal.d.ts +32 -0
  147. package/lib/Utils/signal.js +153 -0
  148. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  149. package/lib/Utils/use-multi-file-auth-state.js +119 -0
  150. package/lib/Utils/validate-connection.d.ts +11 -0
  151. package/lib/Utils/validate-connection.js +229 -0
  152. package/lib/WABinary/constants.d.ts +30 -0
  153. package/lib/WABinary/constants.js +40 -0
  154. package/lib/WABinary/decode.d.ts +7 -0
  155. package/lib/WABinary/decode.js +252 -0
  156. package/lib/WABinary/encode.d.ts +3 -0
  157. package/lib/WABinary/encode.js +260 -0
  158. package/lib/WABinary/generic-utils.d.ts +17 -0
  159. package/lib/WABinary/generic-utils.js +198 -0
  160. package/lib/WABinary/index.d.ts +5 -0
  161. package/lib/WABinary/index.js +21 -0
  162. package/lib/WABinary/jid-utils.d.ts +31 -0
  163. package/lib/WABinary/jid-utils.js +62 -0
  164. package/lib/WABinary/types.d.ts +18 -0
  165. package/lib/WABinary/types.js +2 -0
  166. package/lib/WAM/BinaryInfo.d.ts +17 -0
  167. package/lib/WAM/BinaryInfo.js +13 -0
  168. package/lib/WAM/constants.d.ts +38 -0
  169. package/lib/WAM/constants.js +15350 -0
  170. package/lib/WAM/encode.d.ts +3 -0
  171. package/lib/WAM/encode.js +155 -0
  172. package/lib/WAM/index.d.ts +3 -0
  173. package/lib/WAM/index.js +19 -0
  174. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  175. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  176. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  177. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  178. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  179. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  180. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  181. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  182. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  183. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  184. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  185. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  186. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  187. package/lib/WAUSync/Protocols/index.js +20 -0
  188. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  189. package/lib/WAUSync/USyncQuery.js +89 -0
  190. package/lib/WAUSync/USyncUser.d.ts +12 -0
  191. package/lib/WAUSync/USyncUser.js +26 -0
  192. package/lib/WAUSync/index.d.ts +3 -0
  193. package/lib/WAUSync/index.js +19 -0
  194. package/lib/dread-features.d.ts +76 -0
  195. package/lib/dread-features.js +543 -0
  196. package/lib/dread-index.d.ts +6 -0
  197. package/lib/dread-index.js +19 -0
  198. package/lib/index.d.ts +12 -0
  199. package/lib/index.js +38 -0
  200. package/package.json +111 -0
@@ -0,0 +1,509 @@
1
+ const WAProto = require("../../WAProto").proto,
2
+ crypto = require("crypto"),
3
+ Utils_1 = require("../Utils");
4
+ class xeonDugong {
5
+ constructor(utils, waUploadToServer, relayMessageFn) {
6
+ this.utils = utils;
7
+ this.relayMessage = relayMessageFn;
8
+ this.waUploadToServer = waUploadToServer;
9
+ this.bail = {
10
+ generateWAMessageContent: this.utils.generateWAMessageContent || Utils_1.generateWAMessageContent,
11
+ generateMessageID: Utils_1.generateMessageID,
12
+ getContentType: msg => {
13
+ return Object.keys(msg.message || {})[0];
14
+ }
15
+ };
16
+ }
17
+ detectType(content) {
18
+ if (content.requestPaymentMessage) {
19
+ return "PAYMENT";
20
+ }
21
+ if (content.productMessage) {
22
+ return "PRODUCT";
23
+ }
24
+ if (content.interactiveMessage) {
25
+ return "INTERACTIVE";
26
+ }
27
+ if (content.albumMessage) {
28
+ return "ALBUM";
29
+ }
30
+ if (content.eventMessage) {
31
+ return "EVENT";
32
+ }
33
+ if (content.pollResultMessage) {
34
+ return "POLL_RESULT";
35
+ }
36
+ if (content.groupStatusMessage) {
37
+ return "GROUP_STORY";
38
+ }
39
+ return null;
40
+ }
41
+ async handlePayment(content, quoted) {
42
+ const data = content.requestPaymentMessage;
43
+ let notes = {};
44
+ if (data.sticker?.stickerMessage) {
45
+ notes = {
46
+ stickerMessage: {
47
+ ...data.sticker.stickerMessage,
48
+ contextInfo: {
49
+ stanzaId: quoted?.key?.id,
50
+ participant: quoted?.key?.participant || content.sender,
51
+ quotedMessage: quoted?.message
52
+ }
53
+ }
54
+ };
55
+ } else {
56
+ if (data.note) {
57
+ notes = {
58
+ extendedTextMessage: {
59
+ text: data.note,
60
+ contextInfo: {
61
+ stanzaId: quoted?.key?.id,
62
+ participant: quoted?.key?.participant || content.sender,
63
+ quotedMessage: quoted?.message
64
+ }
65
+ }
66
+ };
67
+ }
68
+ }
69
+ return {
70
+ requestPaymentMessage: WAProto.Message.RequestPaymentMessage.fromObject({
71
+ expiryTimestamp: data.expiry || 0,
72
+ amount1000: data.amount || 0,
73
+ currencyCodeIso4217: data.currency || "IDR",
74
+ requestFrom: data.from || "0@s.whatsapp.net",
75
+ noteMessage: notes,
76
+ background: data.background ?? {
77
+ id: "DEFAULT",
78
+ placeholderArgb: 0xfff0f0f0
79
+ }
80
+ })
81
+ };
82
+ }
83
+ async handleProduct(content, jid, quoted) {
84
+ const {
85
+ title: title,
86
+ description: description,
87
+ thumbnail: thumbnail,
88
+ productId: productId,
89
+ retailerId: retailerId,
90
+ url: url,
91
+ body = "",
92
+ footer = "",
93
+ buttons = [],
94
+ priceAmount1000 = null,
95
+ currencyCode = "IDR"
96
+ } = content.productMessage;
97
+ let productImage;
98
+ if (Buffer.isBuffer(thumbnail)) {
99
+ const {
100
+ imageMessage: imageMessage
101
+ } = await this.utils.generateWAMessageContent({
102
+ image: thumbnail
103
+ }, {
104
+ upload: this.waUploadToServer
105
+ });
106
+ productImage = imageMessage;
107
+ } else {
108
+ if (typeof thumbnail === "object" && thumbnail.url) {
109
+ const {
110
+ imageMessage: imageMessage
111
+ } = await this.utils.generateWAMessageContent({
112
+ image: {
113
+ url: thumbnail.url
114
+ }
115
+ }, {
116
+ upload: this.waUploadToServer
117
+ });
118
+ productImage = imageMessage;
119
+ }
120
+ }
121
+ return {
122
+ viewOnceMessage: {
123
+ message: {
124
+ interactiveMessage: {
125
+ body: {
126
+ text: body
127
+ },
128
+ footer: {
129
+ text: footer
130
+ },
131
+ header: {
132
+ title: title,
133
+ hasMediaAttachment: true,
134
+ productMessage: {
135
+ product: {
136
+ productImage: productImage,
137
+ productId: productId,
138
+ title: title,
139
+ description: description,
140
+ currencyCode: currencyCode,
141
+ priceAmount1000: priceAmount1000,
142
+ retailerId: retailerId,
143
+ url: url,
144
+ productImageCount: 1
145
+ },
146
+ businessOwnerJid: "0@s.whatsapp.net"
147
+ }
148
+ },
149
+ nativeFlowMessage: {
150
+ buttons: buttons
151
+ }
152
+ }
153
+ }
154
+ }
155
+ };
156
+ }
157
+ async handleInteractive(content, jid, quoted) {
158
+ const {
159
+ title: title,
160
+ footer: footer,
161
+ thumbnail: thumbnail,
162
+ image: image,
163
+ video: video,
164
+ document: document,
165
+ mimetype: mimetype,
166
+ fileName: fileName,
167
+ jpegThumbnail: jpegThumbnail,
168
+ contextInfo: contextInfo,
169
+ externalAdReply: externalAdReply,
170
+ buttons = [],
171
+ nativeFlowMessage: nativeFlowMessage,
172
+ header: header
173
+ } = content.interactiveMessage;
174
+ let media = null,
175
+ mediaType = null;
176
+ if (thumbnail) {
177
+ media = await this.utils.prepareWAMessageMedia({
178
+ image: {
179
+ url: thumbnail
180
+ }
181
+ }, {
182
+ upload: this.waUploadToServer
183
+ });
184
+ mediaType = "image";
185
+ } else {
186
+ if (image) {
187
+ if (typeof image === "object" && image.url) {
188
+ media = await this.utils.prepareWAMessageMedia({
189
+ image: {
190
+ url: image.url
191
+ }
192
+ }, {
193
+ upload: this.waUploadToServer
194
+ });
195
+ } else {
196
+ media = await this.utils.prepareWAMessageMedia({
197
+ image: image
198
+ }, {
199
+ upload: this.waUploadToServer
200
+ });
201
+ }
202
+ mediaType = "image";
203
+ } else {
204
+ if (video) {
205
+ if (typeof video === "object" && video.url) {
206
+ media = await this.utils.prepareWAMessageMedia({
207
+ video: {
208
+ url: video.url
209
+ }
210
+ }, {
211
+ upload: this.waUploadToServer
212
+ });
213
+ } else {
214
+ media = await this.utils.prepareWAMessageMedia({
215
+ video: video
216
+ }, {
217
+ upload: this.waUploadToServer
218
+ });
219
+ }
220
+ mediaType = "video";
221
+ } else {
222
+ if (document) {
223
+ let documentPayload = {
224
+ document: document
225
+ };
226
+ if (jpegThumbnail) {
227
+ if (typeof jpegThumbnail === "object" && jpegThumbnail.url) {
228
+ documentPayload.jpegThumbnail = {
229
+ url: jpegThumbnail.url
230
+ };
231
+ } else {
232
+ documentPayload.jpegThumbnail = jpegThumbnail;
233
+ }
234
+ }
235
+ media = await this.utils.prepareWAMessageMedia(documentPayload, {
236
+ upload: this.waUploadToServer
237
+ });
238
+ if (fileName) {
239
+ media.documentMessage.fileName = fileName;
240
+ }
241
+ if (mimetype) {
242
+ media.documentMessage.mimetype = mimetype;
243
+ }
244
+ mediaType = "document";
245
+ }
246
+ }
247
+ }
248
+ }
249
+ let interactiveMessage = {
250
+ body: {
251
+ text: title || ""
252
+ },
253
+ footer: {
254
+ text: footer || ""
255
+ }
256
+ };
257
+ if (buttons && buttons.length > 0) {
258
+ interactiveMessage.nativeFlowMessage = {
259
+ buttons: buttons
260
+ };
261
+ if (nativeFlowMessage) {
262
+ interactiveMessage.nativeFlowMessage = {
263
+ ...interactiveMessage.nativeFlowMessage,
264
+ ...nativeFlowMessage
265
+ };
266
+ }
267
+ } else {
268
+ if (nativeFlowMessage) {
269
+ interactiveMessage.nativeFlowMessage = nativeFlowMessage;
270
+ }
271
+ }
272
+ if (media) {
273
+ interactiveMessage.header = {
274
+ title: header || "",
275
+ hasMediaAttachment: true,
276
+ ...media
277
+ };
278
+ } else {
279
+ interactiveMessage.header = {
280
+ title: header || "",
281
+ hasMediaAttachment: false
282
+ };
283
+ }
284
+ let finalContextInfo = {};
285
+ if (contextInfo) {
286
+ finalContextInfo = {
287
+ mentionedJid: contextInfo.mentionedJid || [],
288
+ forwardingScore: contextInfo.forwardingScore || 0,
289
+ isForwarded: contextInfo.isForwarded || false,
290
+ ...contextInfo
291
+ };
292
+ }
293
+ if (externalAdReply) {
294
+ finalContextInfo.externalAdReply = {
295
+ title: externalAdReply.title || "",
296
+ body: externalAdReply.body || "",
297
+ mediaType: externalAdReply.mediaType || 1,
298
+ thumbnailUrl: externalAdReply.thumbnailUrl || "",
299
+ mediaUrl: externalAdReply.mediaUrl || "",
300
+ sourceUrl: externalAdReply.sourceUrl || "",
301
+ showAdAttribution: externalAdReply.showAdAttribution || false,
302
+ renderLargerThumbnail: externalAdReply.renderLargerThumbnail || false,
303
+ ...externalAdReply
304
+ };
305
+ }
306
+ if (Object.keys(finalContextInfo).length > 0) {
307
+ interactiveMessage.contextInfo = finalContextInfo;
308
+ }
309
+ return {
310
+ interactiveMessage: interactiveMessage
311
+ };
312
+ }
313
+ async handleAlbum(content, jid, quoted) {
314
+ const array = content.albumMessage,
315
+ album = await this.utils.generateWAMessageFromContent(jid, {
316
+ messageContextInfo: {
317
+ messageSecret: crypto.randomBytes(32)
318
+ },
319
+ albumMessage: {
320
+ expectedImageCount: array.filter(a => {
321
+ return a.hasOwnProperty("image");
322
+ }).length,
323
+ expectedVideoCount: array.filter(a => {
324
+ return a.hasOwnProperty("video");
325
+ }).length
326
+ }
327
+ }, {
328
+ userJid: this.utils.generateMessageID().split("@")[0] + "@s.whatsapp.net",
329
+ quoted: quoted,
330
+ upload: this.waUploadToServer
331
+ });
332
+ await this.relayMessage(jid, album.message, {
333
+ messageId: album.key.id
334
+ });
335
+ for (let content of array) {
336
+ const img = await this.utils.generateWAMessage(jid, content, {
337
+ upload: this.waUploadToServer
338
+ });
339
+ img.message.messageContextInfo = {
340
+ messageSecret: crypto.randomBytes(32),
341
+ messageAssociation: {
342
+ associationType: 1,
343
+ parentMessageKey: album.key
344
+ },
345
+ participant: "0@s.whatsapp.net",
346
+ remoteJid: "status@broadcast",
347
+ forwardingScore: 0x1869f,
348
+ isForwarded: true,
349
+ mentionedJid: [jid],
350
+ starred: true,
351
+ labels: ["Y", "Important"],
352
+ isHighlighted: true,
353
+ businessMessageForwardInfo: {
354
+ businessOwnerJid: jid
355
+ },
356
+ dataSharingContext: {
357
+ showMmDisclosure: true
358
+ }
359
+ };
360
+ img.message.forwardedNewsletterMessageInfo = {
361
+ newsletterJid: "0@newsletter",
362
+ serverMessageId: 1,
363
+ newsletterName: "WhatsApp",
364
+ contentType: 1,
365
+ timestamp: new Date().toISOString(),
366
+ senderName: "Telegram: @dgxeon13",
367
+ content: "Text Message",
368
+ priority: "high",
369
+ status: "sent"
370
+ };
371
+ img.message.disappearingMode = {
372
+ initiator: 3,
373
+ trigger: 4,
374
+ initiatorDeviceJid: jid,
375
+ initiatedByExternalService: true,
376
+ initiatedByUserDevice: true,
377
+ initiatedBySystem: true,
378
+ initiatedByServer: true,
379
+ initiatedByAdmin: true,
380
+ initiatedByUser: true,
381
+ initiatedByApp: true,
382
+ initiatedByBot: true,
383
+ initiatedByMe: true
384
+ };
385
+ await this.relayMessage(jid, img.message, {
386
+ messageId: img.key.id,
387
+ quoted: {
388
+ key: {
389
+ remoteJid: album.key.remoteJid,
390
+ id: album.key.id,
391
+ fromMe: true,
392
+ participant: this.utils.generateMessageID().split("@")[0] + "@s.whatsapp.net"
393
+ },
394
+ message: album.message
395
+ }
396
+ });
397
+ }
398
+ return album;
399
+ }
400
+ async handleEvent(content, jid, quoted) {
401
+ const eventData = content.eventMessage,
402
+ msg = await this.utils.generateWAMessageFromContent(jid, {
403
+ viewOnceMessage: {
404
+ message: {
405
+ messageContextInfo: {
406
+ deviceListMetadata: {},
407
+ deviceListMetadataVersion: 2,
408
+ messageSecret: crypto.randomBytes(32),
409
+ supportPayload: JSON.stringify({
410
+ version: 2,
411
+ is_ai_message: true,
412
+ should_show_system_message: true,
413
+ ticket_id: crypto.randomBytes(16).toString("hex")
414
+ })
415
+ },
416
+ eventMessage: {
417
+ contextInfo: {
418
+ mentionedJid: [jid],
419
+ participant: jid,
420
+ remoteJid: "status@broadcast",
421
+ forwardedNewsletterMessageInfo: {
422
+ newsletterName: "shenvn.",
423
+ newsletterJid: "120363297591152843@newsletter",
424
+ serverMessageId: 1
425
+ }
426
+ },
427
+ isCanceled: eventData.isCanceled || false,
428
+ name: eventData.name,
429
+ description: eventData.description,
430
+ location: eventData.location || {
431
+ degreesLatitude: 0,
432
+ degreesLongitude: 0,
433
+ name: "Location"
434
+ },
435
+ joinLink: eventData.joinLink || "",
436
+ startTime: typeof eventData.startTime === "string" ? parseInt(eventData.startTime) : eventData.startTime || Date.now(),
437
+ endTime: typeof eventData.endTime === "string" ? parseInt(eventData.endTime) : eventData.endTime || Date.now() + 0x36ee80,
438
+ extraGuestsAllowed: eventData.extraGuestsAllowed !== false
439
+ }
440
+ }
441
+ }
442
+ }, {
443
+ quoted: quoted
444
+ });
445
+ await this.relayMessage(jid, msg.message, {
446
+ messageId: msg.key.id
447
+ });
448
+ return msg;
449
+ }
450
+ async handlePollResult(content, jid, quoted) {
451
+ const pollData = content.pollResultMessage,
452
+ msg = await this.utils.generateWAMessageFromContent(jid, {
453
+ pollResultSnapshotMessage: {
454
+ name: pollData.name,
455
+ pollVotes: pollData.pollVotes.map(vote => {
456
+ return {
457
+ optionName: vote.optionName,
458
+ optionVoteCount: typeof vote.optionVoteCount === "number" ? vote.optionVoteCount.toString() : vote.optionVoteCount
459
+ };
460
+ })
461
+ }
462
+ }, {
463
+ userJid: this.utils.generateMessageID().split("@")[0] + "@s.whatsapp.net",
464
+ quoted: quoted
465
+ });
466
+ await this.relayMessage(jid, msg.message, {
467
+ messageId: msg.key.id
468
+ });
469
+ return msg;
470
+ }
471
+ async handleGroupStory(content, jid, quoted) {
472
+ const storyData = content.groupStatusMessage;
473
+ let waMsgContent;
474
+ if (storyData.message) {
475
+ waMsgContent = storyData;
476
+ } else {
477
+ if (typeof this.bail?.generateWAMessageContent === "function") {
478
+ waMsgContent = await this.bail.generateWAMessageContent(storyData, {
479
+ upload: this.waUploadToServer
480
+ });
481
+ } else {
482
+ if (typeof this.utils?.generateWAMessageContent === "function") {
483
+ waMsgContent = await this.utils.generateWAMessageContent(storyData, {
484
+ upload: this.waUploadToServer
485
+ });
486
+ } else {
487
+ if (typeof this.utils?.prepareMessageContent === "function") {
488
+ waMsgContent = await this.utils.prepareMessageContent(storyData, {
489
+ upload: this.waUploadToServer
490
+ });
491
+ } else {
492
+ waMsgContent = await Utils_1.generateWAMessageContent(storyData, {
493
+ upload: this.waUploadToServer
494
+ });
495
+ }
496
+ }
497
+ }
498
+ }
499
+ let __p_DyNt_msg_message = {
500
+ groupStatusMessageV2: {
501
+ message: waMsgContent.message || waMsgContent
502
+ }
503
+ };
504
+ return await this.relayMessage(jid, __p_DyNt_msg_message, {
505
+ messageId: this.bail.generateMessageID()
506
+ });
507
+ }
508
+ }
509
+ module.exports = xeonDugong;
@@ -0,0 +1,115 @@
1
+ /// <reference types="node" />
2
+ import { proto } from '../../WAProto';
3
+ import { GroupMetadata, ParticipantAction, SocketConfig } from '../Types';
4
+ import { BinaryNode } from '../WABinary';
5
+ export declare const makeGroupsSocket: (config: SocketConfig) => {
6
+ groupMetadata: (jid: string) => Promise<GroupMetadata>;
7
+ groupCreate: (subject: string, participants: string[]) => Promise<GroupMetadata>;
8
+ groupLeave: (id: string) => Promise<void>;
9
+ groupUpdateSubject: (jid: string, subject: string) => Promise<void>;
10
+ groupRequestParticipantsList: (jid: string) => Promise<{
11
+ [key: string]: string;
12
+ }[]>;
13
+ groupRequestParticipantsUpdate: (jid: string, participants: string[], action: 'approve' | 'reject') => Promise<{
14
+ status: string;
15
+ jid: string;
16
+ }[]>;
17
+ groupParticipantsUpdate: (jid: string, participants: string[], action: ParticipantAction) => Promise<{
18
+ status: string;
19
+ jid: string;
20
+ content: BinaryNode;
21
+ }[]>;
22
+ groupUpdateDescription: (jid: string, description?: string) => Promise<void>;
23
+ groupInviteCode: (jid: string) => Promise<string | undefined>;
24
+ groupRevokeInvite: (jid: string) => Promise<string | undefined>;
25
+ groupAcceptInvite: (code: string) => Promise<string | undefined>;
26
+ /**
27
+ * accept a GroupInviteMessage
28
+ * @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
29
+ * @param inviteMessage the message to accept
30
+ */
31
+ groupAcceptInviteV4: (key: string | proto.IMessageKey, inviteMessage: proto.Message.IGroupInviteMessage) => Promise<string>;
32
+ groupGetInviteInfo: (code: string) => Promise<GroupMetadata>;
33
+ groupToggleEphemeral: (jid: string, ephemeralExpiration: number) => Promise<void>;
34
+ groupSettingUpdate: (jid: string, setting: 'announcement' | 'not_announcement' | 'locked' | 'unlocked') => Promise<void>;
35
+ groupMemberAddMode: (jid: string, mode: 'admin_add' | 'all_member_add') => Promise<void>;
36
+ groupJoinApprovalMode: (jid: string, mode: 'on' | 'off') => Promise<void>;
37
+ groupFetchAllParticipating: () => Promise<{
38
+ [_: string]: GroupMetadata;
39
+ }>;
40
+ processingMutex: {
41
+ mutex<T>(code: () => T | Promise<T>): Promise<T>;
42
+ };
43
+ fetchPrivacySettings: (force?: boolean) => Promise<{
44
+ [_: string]: string;
45
+ }>;
46
+ upsertMessage: (msg: proto.IWebMessageInfo, type: import("../Types").MessageUpsertType) => Promise<void>;
47
+ appPatch: (patchCreate: import("../Types").WAPatchCreate) => Promise<void>;
48
+ sendPresenceUpdate: (type: import("../Types").WAPresence, toJid?: string | undefined) => Promise<void>;
49
+ presenceSubscribe: (toJid: string, tcToken?: Buffer | undefined) => Promise<void>;
50
+ profilePictureUrl: (jid: string, type?: "image" | "preview", timeoutMs?: number | undefined) => Promise<string | undefined>;
51
+ onWhatsApp: (...jids: string[]) => Promise<{
52
+ jid: string;
53
+ exists: unknown;
54
+ lid: unknown;
55
+ }[] | undefined>;
56
+ fetchBlocklist: () => Promise<string[]>;
57
+ fetchStatus: (jid: string) => Promise<{
58
+ status: string | undefined;
59
+ setAt: Date;
60
+ } | undefined>;
61
+ updateProfilePicture: (jid: string, content: import("../Types").WAMediaUpload) => Promise<void>;
62
+ removeProfilePicture: (jid: string) => Promise<void>;
63
+ updateProfileStatus: (status: string) => Promise<void>;
64
+ updateProfileName: (name: string) => Promise<void>;
65
+ updateBlockStatus: (jid: string, action: "block" | "unblock") => Promise<void>;
66
+ updateLastSeenPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
67
+ updateOnlinePrivacy: (value: import("../Types").WAPrivacyOnlineValue) => Promise<void>;
68
+ updateProfilePicturePrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
69
+ updateStatusPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
70
+ updateReadReceiptsPrivacy: (value: import("../Types").WAReadReceiptsValue) => Promise<void>;
71
+ updateGroupsAddPrivacy: (value: import("../Types").WAPrivacyValue) => Promise<void>;
72
+ updateDefaultDisappearingMode: (duration: number) => Promise<void>;
73
+ getBusinessProfile: (jid: string) => Promise<void | import("../Types").WABusinessProfile>;
74
+ resyncAppState: (collections: readonly ("critical_block" | "critical_unblock_low" | "regular_high" | "regular_low" | "regular")[], isInitialSync: boolean) => Promise<void>;
75
+ chatModify: (mod: import("../Types").ChatModification, jid: string) => Promise<void>;
76
+ cleanDirtyBits: (type: "account_sync" | "groups", fromTimestamp?: string | number | undefined) => Promise<void>;
77
+ addChatLabel: (jid: string, labelId: string) => Promise<void>;
78
+ removeChatLabel: (jid: string, labelId: string) => Promise<void>;
79
+ addMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
80
+ removeMessageLabel: (jid: string, messageId: string, labelId: string) => Promise<void>;
81
+ star: (jid: string, messages: {
82
+ id: string;
83
+ fromMe?: boolean | undefined;
84
+ }[], star: boolean) => Promise<void>;
85
+ type: "md";
86
+ ws: any;
87
+ ev: import("../Types").BaileysEventEmitter & {
88
+ process(handler: (events: Partial<import("../Types").BaileysEventMap>) => void | Promise<void>): () => void;
89
+ buffer(): void;
90
+ createBufferedFunction<A extends any[], T_1>(work: (...args: A) => Promise<T_1>): (...args: A) => Promise<T_1>;
91
+ flush(force?: boolean | undefined): boolean;
92
+ isBuffering(): boolean;
93
+ };
94
+ authState: {
95
+ creds: import("../Types").AuthenticationCreds;
96
+ keys: import("../Types").SignalKeyStoreWithTransaction;
97
+ };
98
+ signalRepository: import("../Types").SignalRepository;
99
+ user: import("../Types").Contact | undefined;
100
+ generateMessageTag: () => string;
101
+ query: (node: BinaryNode, timeoutMs?: number | undefined) => Promise<BinaryNode>;
102
+ waitForMessage: <T_2>(msgId: string, timeoutMs?: number | undefined) => Promise<T_2>;
103
+ waitForSocketOpen: () => Promise<void>;
104
+ sendRawMessage: (data: Uint8Array | Buffer) => Promise<void>;
105
+ sendNode: (frame: BinaryNode) => Promise<void>;
106
+ logout: (msg?: string | undefined) => Promise<void>;
107
+ end: (error: Error | undefined) => void;
108
+ onUnexpectedError: (err: Error | import("@hapi/boom").Boom<any>, msg: string) => void;
109
+ uploadPreKeys: (count?: number) => Promise<void>;
110
+ uploadPreKeysToServerIfRequired: () => Promise<void>;
111
+ requestPairingCode: (phoneNumber: string) => Promise<string>;
112
+ waitForConnectionUpdate: (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number | undefined) => Promise<void>;
113
+ sendWAMBuffer: (wamBuffer: Buffer) => Promise<BinaryNode>;
114
+ };
115
+ export declare const extractGroupMetadata: (result: BinaryNode) => GroupMetadata;