@metaload/baileys-mod 1.0.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 (197) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +1 -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 +147 -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 +970 -0
  49. package/lib/Socket/dugong.d.ts +254 -0
  50. package/lib/Socket/dugong.js +480 -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 +173 -0
  54. package/lib/Socket/index.js +11 -0
  55. package/lib/Socket/messages-recv.d.ts +161 -0
  56. package/lib/Socket/messages-recv.js +1110 -0
  57. package/lib/Socket/messages-send.d.ts +149 -0
  58. package/lib/Socket/messages-send.js +909 -0
  59. package/lib/Socket/newsletter.d.ts +134 -0
  60. package/lib/Socket/newsletter.js +369 -0
  61. package/lib/Socket/registration.d.ts +267 -0
  62. package/lib/Socket/registration.js +166 -0
  63. package/lib/Socket/socket.d.ts +43 -0
  64. package/lib/Socket/socket.js +680 -0
  65. package/lib/Socket/usync.d.ts +36 -0
  66. package/lib/Socket/usync.js +70 -0
  67. package/lib/Store/index.d.ts +3 -0
  68. package/lib/Store/index.js +10 -0
  69. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  70. package/lib/Store/make-cache-manager-store.js +83 -0
  71. package/lib/Store/make-in-memory-store.d.ts +118 -0
  72. package/lib/Store/make-in-memory-store.js +427 -0
  73. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  74. package/lib/Store/make-ordered-dictionary.js +81 -0
  75. package/lib/Store/object-repository.d.ts +10 -0
  76. package/lib/Store/object-repository.js +27 -0
  77. package/lib/Types/Auth.d.ts +110 -0
  78. package/lib/Types/Auth.js +2 -0
  79. package/lib/Types/Call.d.ts +13 -0
  80. package/lib/Types/Call.js +2 -0
  81. package/lib/Types/Chat.d.ts +102 -0
  82. package/lib/Types/Chat.js +4 -0
  83. package/lib/Types/Contact.d.ts +19 -0
  84. package/lib/Types/Contact.js +2 -0
  85. package/lib/Types/Events.d.ts +157 -0
  86. package/lib/Types/Events.js +2 -0
  87. package/lib/Types/GroupMetadata.d.ts +55 -0
  88. package/lib/Types/GroupMetadata.js +2 -0
  89. package/lib/Types/Label.d.ts +35 -0
  90. package/lib/Types/Label.js +27 -0
  91. package/lib/Types/LabelAssociation.d.ts +29 -0
  92. package/lib/Types/LabelAssociation.js +9 -0
  93. package/lib/Types/Message.d.ts +273 -0
  94. package/lib/Types/Message.js +9 -0
  95. package/lib/Types/Newsletter.d.ts +103 -0
  96. package/lib/Types/Newsletter.js +38 -0
  97. package/lib/Types/Product.d.ts +78 -0
  98. package/lib/Types/Product.js +2 -0
  99. package/lib/Types/Signal.d.ts +57 -0
  100. package/lib/Types/Signal.js +2 -0
  101. package/lib/Types/Socket.d.ts +111 -0
  102. package/lib/Types/Socket.js +2 -0
  103. package/lib/Types/State.d.ts +27 -0
  104. package/lib/Types/State.js +2 -0
  105. package/lib/Types/USync.d.ts +25 -0
  106. package/lib/Types/USync.js +2 -0
  107. package/lib/Types/index.d.ts +57 -0
  108. package/lib/Types/index.js +42 -0
  109. package/lib/Utils/auth-utils.d.ts +18 -0
  110. package/lib/Utils/auth-utils.js +206 -0
  111. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  112. package/lib/Utils/baileys-event-stream.js +63 -0
  113. package/lib/Utils/business.d.ts +22 -0
  114. package/lib/Utils/business.js +234 -0
  115. package/lib/Utils/chat-utils.d.ts +71 -0
  116. package/lib/Utils/chat-utils.js +729 -0
  117. package/lib/Utils/crypto.d.ts +41 -0
  118. package/lib/Utils/crypto.js +151 -0
  119. package/lib/Utils/decode-wa-message.d.ts +19 -0
  120. package/lib/Utils/decode-wa-message.js +198 -0
  121. package/lib/Utils/event-buffer.d.ts +35 -0
  122. package/lib/Utils/event-buffer.js +514 -0
  123. package/lib/Utils/generics.d.ts +92 -0
  124. package/lib/Utils/generics.js +428 -0
  125. package/lib/Utils/generics.js.bak +433 -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 +231 -0
  152. package/lib/Utils/validate-connection.js.bak +237 -0
  153. package/lib/WABinary/constants.d.ts +30 -0
  154. package/lib/WABinary/constants.js +40 -0
  155. package/lib/WABinary/decode.d.ts +7 -0
  156. package/lib/WABinary/decode.js +252 -0
  157. package/lib/WABinary/encode.d.ts +3 -0
  158. package/lib/WABinary/encode.js +265 -0
  159. package/lib/WABinary/generic-utils.d.ts +17 -0
  160. package/lib/WABinary/generic-utils.js +198 -0
  161. package/lib/WABinary/index.d.ts +5 -0
  162. package/lib/WABinary/index.js +21 -0
  163. package/lib/WABinary/jid-utils.d.ts +31 -0
  164. package/lib/WABinary/jid-utils.js +62 -0
  165. package/lib/WABinary/types.d.ts +18 -0
  166. package/lib/WABinary/types.js +2 -0
  167. package/lib/WAM/BinaryInfo.d.ts +17 -0
  168. package/lib/WAM/BinaryInfo.js +13 -0
  169. package/lib/WAM/constants.d.ts +38 -0
  170. package/lib/WAM/constants.js +15350 -0
  171. package/lib/WAM/encode.d.ts +3 -0
  172. package/lib/WAM/encode.js +155 -0
  173. package/lib/WAM/index.d.ts +3 -0
  174. package/lib/WAM/index.js +19 -0
  175. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  176. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  177. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  178. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  179. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  180. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  181. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  182. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  183. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  184. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  185. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  186. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  187. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  188. package/lib/WAUSync/Protocols/index.js +20 -0
  189. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  190. package/lib/WAUSync/USyncQuery.js +89 -0
  191. package/lib/WAUSync/USyncUser.d.ts +12 -0
  192. package/lib/WAUSync/USyncUser.js +26 -0
  193. package/lib/WAUSync/index.d.ts +3 -0
  194. package/lib/WAUSync/index.js +19 -0
  195. package/lib/index.d.ts +12 -0
  196. package/lib/index.js +34 -0
  197. package/package.json +113 -0
@@ -0,0 +1,480 @@
1
+ const WAProto = require('../../WAProto').proto;
2
+ const crypto = require('crypto');
3
+ const Utils_1 = require("../Utils");
4
+
5
+ class Metaai {
6
+ constructor(utils, waUploadToServer, relayMessageFn) {
7
+ this.utils = utils;
8
+ this.relayMessage = relayMessageFn
9
+ this.waUploadToServer = waUploadToServer;
10
+
11
+ this.bail = {
12
+ generateWAMessageContent: this.utils.generateWAMessageContent || Utils_1.generateWAMessageContent,
13
+ generateMessageID: Utils_1.generateMessageID,
14
+ getContentType: (msg) => Object.keys(msg.message || {})[0]
15
+ };
16
+ }
17
+
18
+ detectType(content) {
19
+ if (content.requestPaymentMessage) return 'PAYMENT';
20
+ if (content.productMessage) return 'PRODUCT';
21
+ if (content.interactiveMessage) return 'INTERACTIVE';
22
+ if (content.albumMessage) return 'ALBUM';
23
+ if (content.eventMessage) return 'EVENT';
24
+ if (content.pollResultMessage) return 'POLL_RESULT';
25
+ if (content.groupStatusMessage) return 'GROUP_STORY';
26
+ return null;
27
+ }
28
+
29
+ async handlePayment(content, quoted) {
30
+ const data = content.requestPaymentMessage;
31
+ let notes = {};
32
+
33
+ if (data.sticker?.stickerMessage) {
34
+ notes = {
35
+ stickerMessage: {
36
+ ...data.sticker.stickerMessage,
37
+ contextInfo: {
38
+ stanzaId: quoted?.key?.id,
39
+ participant: quoted?.key?.participant || content.sender,
40
+ quotedMessage: quoted?.message
41
+ }
42
+ }
43
+ };
44
+ } else if (data.note) {
45
+ notes = {
46
+ extendedTextMessage: {
47
+ text: data.note,
48
+ contextInfo: {
49
+ stanzaId: quoted?.key?.id,
50
+ participant: quoted?.key?.participant || content.sender,
51
+ quotedMessage: quoted?.message
52
+ }
53
+ }
54
+ };
55
+ }
56
+
57
+ return {
58
+ requestPaymentMessage: WAProto.Message.RequestPaymentMessage.fromObject({
59
+ expiryTimestamp: data.expiry || 0,
60
+ amount1000: data.amount || 0,
61
+ currencyCodeIso4217: data.currency || "IDR",
62
+ requestFrom: data.from || "0@s.whatsapp.net",
63
+ noteMessage: notes,
64
+ background: data.background ?? {
65
+ id: "DEFAULT",
66
+ placeholderArgb: 0xFFF0F0F0
67
+ }
68
+ })
69
+ };
70
+ }
71
+
72
+ async handleProduct(content, jid, quoted) {
73
+ const {
74
+ title,
75
+ description,
76
+ thumbnail,
77
+ productId,
78
+ retailerId,
79
+ url,
80
+ body = "",
81
+ footer = "",
82
+ buttons = [],
83
+ priceAmount1000 = null,
84
+ currencyCode = "IDR"
85
+ } = content.productMessage;
86
+
87
+ let productImage;
88
+
89
+ if (Buffer.isBuffer(thumbnail)) {
90
+ const { imageMessage } = await this.utils.generateWAMessageContent(
91
+ { image: thumbnail },
92
+ { upload: this.waUploadToServer }
93
+ );
94
+ productImage = imageMessage;
95
+ } else if (typeof thumbnail === 'object' && thumbnail.url) {
96
+ const { imageMessage } = await this.utils.generateWAMessageContent(
97
+ { image: { url: thumbnail.url }},
98
+ { upload: this.waUploadToServer }
99
+ );
100
+ productImage = imageMessage;
101
+ }
102
+
103
+ return {
104
+ viewOnceMessage: {
105
+ message: {
106
+ interactiveMessage: {
107
+ body: { text: body },
108
+ footer: { text: footer },
109
+ header: {
110
+ title,
111
+ hasMediaAttachment: true,
112
+ productMessage: {
113
+ product: {
114
+ productImage,
115
+ productId,
116
+ title,
117
+ description,
118
+ currencyCode,
119
+ priceAmount1000,
120
+ retailerId,
121
+ url,
122
+ productImageCount: 1
123
+ },
124
+ businessOwnerJid: "0@s.whatsapp.net"
125
+ }
126
+ },
127
+ nativeFlowMessage: { buttons }
128
+ }
129
+ }
130
+ }
131
+ };
132
+ }
133
+
134
+ async handleInteractive(content, jid, quoted) {
135
+ const {
136
+ title,
137
+ footer,
138
+ thumbnail,
139
+ image,
140
+ video,
141
+ document,
142
+ mimetype,
143
+ fileName,
144
+ jpegThumbnail,
145
+ contextInfo,
146
+ externalAdReply,
147
+ buttons = [],
148
+ nativeFlowMessage,
149
+ header
150
+ } = content.interactiveMessage;
151
+
152
+ let media = null;
153
+ let mediaType = null;
154
+
155
+ if (thumbnail) {
156
+ media = await this.utils.prepareWAMessageMedia(
157
+ { image: { url: thumbnail } },
158
+ { upload: this.waUploadToServer }
159
+ );
160
+ mediaType = 'image';
161
+ } else if (image) {
162
+ if (typeof image === 'object' && image.url) {
163
+ media = await this.utils.prepareWAMessageMedia(
164
+ { image: { url: image.url } },
165
+ { upload: this.waUploadToServer }
166
+ );
167
+ } else {
168
+ media = await this.utils.prepareWAMessageMedia(
169
+ { image: image },
170
+ { upload: this.waUploadToServer }
171
+ );
172
+ }
173
+ mediaType = 'image';
174
+ } else if (video) {
175
+ if (typeof video === 'object' && video.url) {
176
+ media = await this.utils.prepareWAMessageMedia(
177
+ { video: { url: video.url } },
178
+ { upload: this.waUploadToServer }
179
+ );
180
+ } else {
181
+ media = await this.utils.prepareWAMessageMedia(
182
+ { video: video },
183
+ { upload: this.waUploadToServer }
184
+ );
185
+ }
186
+ mediaType = 'video';
187
+ } else if (document) {
188
+ let documentPayload = {
189
+ document: document
190
+ };
191
+ if (jpegThumbnail) {
192
+ if (typeof jpegThumbnail === 'object' && jpegThumbnail.url) {
193
+ documentPayload.jpegThumbnail = { url: jpegThumbnail.url };
194
+ } else {
195
+ documentPayload.jpegThumbnail = jpegThumbnail;
196
+ }
197
+ }
198
+
199
+ media = await this.utils.prepareWAMessageMedia(
200
+ documentPayload,
201
+ { upload: this.waUploadToServer }
202
+ );
203
+ if (fileName) {
204
+ media.documentMessage.fileName = fileName;
205
+ }
206
+ if (mimetype) {
207
+ media.documentMessage.mimetype = mimetype;
208
+ }
209
+ mediaType = 'document';
210
+ }
211
+ let interactiveMessage = {
212
+ body: { text: title || "" },
213
+ footer: { text: footer || "" }
214
+ };
215
+ if (buttons && buttons.length > 0) {
216
+ interactiveMessage.nativeFlowMessage = {
217
+ buttons: buttons
218
+ };
219
+ if (nativeFlowMessage) {
220
+ interactiveMessage.nativeFlowMessage = {
221
+ ...interactiveMessage.nativeFlowMessage,
222
+ ...nativeFlowMessage
223
+ };
224
+ }
225
+ } else if (nativeFlowMessage) {
226
+ interactiveMessage.nativeFlowMessage = nativeFlowMessage;
227
+ }
228
+
229
+ if (media) {
230
+ interactiveMessage.header = {
231
+ title: header || "",
232
+ hasMediaAttachment: true,
233
+ ...media
234
+ };
235
+ } else {
236
+ interactiveMessage.header = {
237
+ title: header || "",
238
+ hasMediaAttachment: false
239
+ };
240
+ }
241
+
242
+ let finalContextInfo = {};
243
+ if (contextInfo) {
244
+ finalContextInfo = {
245
+ mentionedJid: contextInfo.mentionedJid || [],
246
+ forwardingScore: contextInfo.forwardingScore || 0,
247
+ isForwarded: contextInfo.isForwarded || false,
248
+ ...contextInfo
249
+ };
250
+ }
251
+
252
+ if (externalAdReply) {
253
+ finalContextInfo.externalAdReply = {
254
+ title: externalAdReply.title || "",
255
+ body: externalAdReply.body || "",
256
+ mediaType: externalAdReply.mediaType || 1,
257
+ thumbnailUrl: externalAdReply.thumbnailUrl || "",
258
+ mediaUrl: externalAdReply.mediaUrl || "",
259
+ sourceUrl: externalAdReply.sourceUrl || "",
260
+ showAdAttribution: externalAdReply.showAdAttribution || false,
261
+ renderLargerThumbnail: externalAdReply.renderLargerThumbnail || false,
262
+ ...externalAdReply
263
+ };
264
+ }
265
+
266
+ if (Object.keys(finalContextInfo).length > 0) {
267
+ interactiveMessage.contextInfo = finalContextInfo;
268
+ }
269
+ return {
270
+ interactiveMessage: interactiveMessage
271
+ };
272
+ }
273
+
274
+ async handleAlbum(content, jid, quoted) {
275
+ const array = content.albumMessage;
276
+ const album = await this.utils.generateWAMessageFromContent(jid, {
277
+ messageContextInfo: {
278
+ messageSecret: crypto.randomBytes(32),
279
+ },
280
+ albumMessage: {
281
+ expectedImageCount: array.filter((a) => a.hasOwnProperty("image")).length,
282
+ expectedVideoCount: array.filter((a) => a.hasOwnProperty("video")).length,
283
+ },
284
+ }, {
285
+ userJid: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
286
+ quoted,
287
+ upload: this.waUploadToServer
288
+ });
289
+
290
+ await this.relayMessage(jid, album.message, {
291
+ messageId: album.key.id,
292
+ });
293
+
294
+ for (let content of array) {
295
+ const img = await this.utils.generateWAMessage(jid, content, {
296
+ upload: this.waUploadToServer,
297
+ });
298
+
299
+ img.message.messageContextInfo = {
300
+ messageSecret: crypto.randomBytes(32),
301
+ messageAssociation: {
302
+ associationType: 1,
303
+ parentMessageKey: album.key,
304
+ },
305
+ participant: "0@s.whatsapp.net",
306
+ remoteJid: "status@broadcast",
307
+ forwardingScore: 99999,
308
+ isForwarded: true,
309
+ mentionedJid: [jid],
310
+ starred: true,
311
+ labels: ["Y", "Important"],
312
+ isHighlighted: true,
313
+ businessMessageForwardInfo: {
314
+ businessOwnerJid: jid,
315
+ },
316
+ dataSharingContext: {
317
+ showMmDisclosure: true,
318
+ },
319
+ };
320
+
321
+ img.message.forwardedNewsletterMessageInfo = {
322
+ newsletterJid: "0@newsletter",
323
+ serverMessageId: 1,
324
+ newsletterName: `WhatsApp`,
325
+ contentType: 1,
326
+ timestamp: new Date().toISOString(),
327
+ senderName: "Metaai dugonggg",
328
+ content: "Text Message",
329
+ priority: "high",
330
+ status: "sent",
331
+ };
332
+
333
+ img.message.disappearingMode = {
334
+ initiator: 3,
335
+ trigger: 4,
336
+ initiatorDeviceJid: jid,
337
+ initiatedByExternalService: true,
338
+ initiatedByUserDevice: true,
339
+ initiatedBySystem: true,
340
+ initiatedByServer: true,
341
+ initiatedByAdmin: true,
342
+ initiatedByUser: true,
343
+ initiatedByApp: true,
344
+ initiatedByBot: true,
345
+ initiatedByMe: true,
346
+ };
347
+
348
+ await this.relayMessage(jid, img.message, {
349
+ messageId: img.key.id,
350
+ quoted: {
351
+ key: {
352
+ remoteJid: album.key.remoteJid,
353
+ id: album.key.id,
354
+ fromMe: true,
355
+ participant: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
356
+ },
357
+ message: album.message,
358
+ },
359
+ });
360
+ }
361
+ return album;
362
+ }
363
+
364
+ async handleEvent(content, jid, quoted) {
365
+ const eventData = content.eventMessage;
366
+
367
+ const msg = await this.utils.generateWAMessageFromContent(jid, {
368
+ viewOnceMessage: {
369
+ message: {
370
+ messageContextInfo: {
371
+ deviceListMetadata: {},
372
+ deviceListMetadataVersion: 2,
373
+ messageSecret: crypto.randomBytes(32),
374
+ supportPayload: JSON.stringify({
375
+ version: 2,
376
+ is_ai_message: true,
377
+ should_show_system_message: true,
378
+ ticket_id: crypto.randomBytes(16).toString('hex')
379
+ })
380
+ },
381
+ eventMessage: {
382
+ contextInfo: {
383
+ mentionedJid: [jid],
384
+ participant: jid,
385
+ remoteJid: "status@broadcast",
386
+ forwardedNewsletterMessageInfo: {
387
+ newsletterName: "metaai.",
388
+ newsletterJid: "120363408728143648@newsletter",
389
+ serverMessageId: 1
390
+ }
391
+ },
392
+ isCanceled: eventData.isCanceled || false,
393
+ name: eventData.name,
394
+ description: eventData.description,
395
+ location: eventData.location || {
396
+ degreesLatitude: 0,
397
+ degreesLongitude: 0,
398
+ name: "Location"
399
+ },
400
+ joinLink: eventData.joinLink || '',
401
+ startTime: typeof eventData.startTime === 'string' ? parseInt(eventData.startTime) : eventData.startTime || Date.now(),
402
+ endTime: typeof eventData.endTime === 'string' ? parseInt(eventData.endTime) : eventData.endTime || Date.now() + 3600000,
403
+ extraGuestsAllowed: eventData.extraGuestsAllowed !== false
404
+ }
405
+ }
406
+ }
407
+ }, { quoted });
408
+
409
+ await this.relayMessage(jid, msg.message, {
410
+ messageId: msg.key.id
411
+ });
412
+ return msg;
413
+ }
414
+
415
+ async handlePollResult(content, jid, quoted) {
416
+ const pollData = content.pollResultMessage;
417
+
418
+ const msg = await this.utils.generateWAMessageFromContent(jid, {
419
+ pollResultSnapshotMessage: {
420
+ name: pollData.name,
421
+ pollVotes: pollData.pollVotes.map(vote => ({
422
+ optionName: vote.optionName,
423
+ optionVoteCount: typeof vote.optionVoteCount === 'number'
424
+ ? vote.optionVoteCount.toString()
425
+ : vote.optionVoteCount
426
+ }))
427
+ }
428
+ }, {
429
+ userJid: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
430
+ quoted
431
+ });
432
+
433
+ await this.relayMessage(jid, msg.message, {
434
+ messageId: msg.key.id
435
+ });
436
+
437
+ return msg;
438
+ }
439
+
440
+ async handleGroupStory(content, jid, quoted) {
441
+ const storyData = content.groupStatusMessage;
442
+ let waMsgContent;
443
+
444
+ if (storyData.message) {
445
+ waMsgContent = storyData;
446
+ } else {
447
+ if (typeof this.bail?.generateWAMessageContent === "function") {
448
+ waMsgContent = await this.bail.generateWAMessageContent(storyData, {
449
+ upload: this.waUploadToServer
450
+ });
451
+ } else if (typeof this.utils?.generateWAMessageContent === "function") {
452
+ waMsgContent = await this.utils.generateWAMessageContent(storyData, {
453
+ upload: this.waUploadToServer
454
+ });
455
+ } else if (typeof this.utils?.prepareMessageContent === "function") {
456
+ waMsgContent = await this.utils.prepareMessageContent(storyData, {
457
+ upload: this.waUploadToServer
458
+ });
459
+ } else {
460
+ waMsgContent = await Utils_1.generateWAMessageContent(storyData, {
461
+ upload: this.waUploadToServer
462
+ });
463
+ }
464
+ }
465
+
466
+ let msg = {
467
+ message: {
468
+ groupStatusMessageV2: {
469
+ message: waMsgContent.message || waMsgContent
470
+ }
471
+ }
472
+ };
473
+
474
+ return await this.relayMessage(jid, msg.message, {
475
+ messageId: this.bail.generateMessageID()
476
+ });
477
+ }
478
+ }
479
+
480
+ module.exports = Metaai;
@@ -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;