@alannxd/baileys 6.0.6 → 6.0.9

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 (220) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +341 -286
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +6902 -0
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +79257 -0
  7. package/WAProto/index.js +205861 -60565
  8. package/engine-requirements.js +1 -1
  9. package/lib/Defaults/index.js +119 -136
  10. package/lib/Signal/Group/ciphertext-message.js +2 -5
  11. package/lib/Signal/Group/group-session-builder.js +7 -41
  12. package/lib/Signal/Group/group_cipher.js +37 -51
  13. package/lib/Signal/Group/index.js +12 -57
  14. package/lib/Signal/Group/keyhelper.js +7 -44
  15. package/lib/Signal/Group/sender-chain-key.js +7 -15
  16. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  17. package/lib/Signal/Group/sender-key-message.js +9 -12
  18. package/lib/Signal/Group/sender-key-name.js +2 -5
  19. package/lib/Signal/Group/sender-key-record.js +9 -21
  20. package/lib/Signal/Group/sender-key-state.js +27 -42
  21. package/lib/Signal/Group/sender-message-key.js +4 -7
  22. package/lib/Signal/libsignal.js +347 -90
  23. package/lib/Signal/lid-mapping.js +277 -0
  24. package/lib/Socket/Client/index.js +3 -19
  25. package/lib/Socket/Client/types.js +11 -0
  26. package/lib/Socket/Client/websocket.js +54 -0
  27. package/lib/Socket/business.js +162 -43
  28. package/lib/Socket/chats.js +627 -427
  29. package/lib/Socket/communities.js +90 -80
  30. package/lib/Socket/groups.js +154 -161
  31. package/lib/Socket/index.js +11 -10
  32. package/lib/Socket/luxu.js +315 -469
  33. package/lib/Socket/messages-recv.js +1421 -615
  34. package/lib/Socket/messages-send.js +1150 -799
  35. package/lib/Socket/mex.js +42 -0
  36. package/lib/Socket/newsletter.js +152 -204
  37. package/lib/Socket/socket.js +544 -313
  38. package/lib/Store/index.js +10 -10
  39. package/lib/Store/keyed-db.js +108 -0
  40. package/lib/Store/make-cache-manager-store.js +43 -41
  41. package/lib/Store/make-in-memory-store.js +112 -341
  42. package/lib/Store/make-ordered-dictionary.js +14 -20
  43. package/lib/Store/object-repository.js +11 -6
  44. package/lib/Types/Auth.js +2 -2
  45. package/lib/Types/Bussines.js +2 -0
  46. package/lib/Types/Call.js +2 -2
  47. package/lib/Types/Chat.js +8 -4
  48. package/lib/Types/Contact.js +2 -2
  49. package/lib/Types/Events.js +2 -2
  50. package/lib/Types/GroupMetadata.js +2 -2
  51. package/lib/Types/Label.js +3 -5
  52. package/lib/Types/LabelAssociation.js +3 -5
  53. package/lib/Types/Message.js +11 -9
  54. package/lib/Types/Mex.js +37 -0
  55. package/lib/Types/Product.js +2 -2
  56. package/lib/Types/Signal.js +2 -2
  57. package/lib/Types/Socket.js +3 -2
  58. package/lib/Types/State.js +56 -2
  59. package/lib/Types/USync.js +2 -2
  60. package/lib/Types/index.js +15 -31
  61. package/lib/Utils/auth-utils.js +239 -143
  62. package/lib/Utils/browser-utils.js +48 -0
  63. package/lib/Utils/business.js +66 -69
  64. package/lib/Utils/chat-utils.js +396 -253
  65. package/lib/Utils/companion-reg-client-utils.js +35 -0
  66. package/lib/Utils/crypto.js +57 -90
  67. package/lib/Utils/decode-wa-message.js +236 -84
  68. package/lib/Utils/event-buffer.js +185 -77
  69. package/lib/Utils/generics.js +189 -209
  70. package/lib/Utils/history.js +93 -55
  71. package/lib/Utils/identity-change-handler.js +50 -0
  72. package/lib/Utils/index.js +23 -33
  73. package/lib/Utils/link-preview.js +16 -24
  74. package/lib/Utils/logger.js +3 -7
  75. package/lib/Utils/lt-hash.js +3 -46
  76. package/lib/Utils/make-mutex.js +24 -34
  77. package/lib/Utils/message-composer.js +273 -0
  78. package/lib/Utils/message-retry-manager.js +265 -0
  79. package/lib/Utils/messages-media.js +451 -482
  80. package/lib/Utils/messages.js +795 -369
  81. package/lib/Utils/noise-handler.js +145 -99
  82. package/lib/Utils/offline-node-processor.js +40 -0
  83. package/lib/Utils/pre-key-manager.js +106 -0
  84. package/lib/Utils/process-message.js +459 -150
  85. package/lib/Utils/reporting-utils.js +258 -0
  86. package/lib/Utils/signal.js +120 -72
  87. package/lib/Utils/stanza-ack.js +38 -0
  88. package/lib/Utils/sync-action-utils.js +49 -0
  89. package/lib/Utils/tc-token-utils.js +163 -0
  90. package/lib/Utils/use-multi-file-auth-state.js +29 -27
  91. package/lib/Utils/validate-connection.js +73 -99
  92. package/lib/WABinary/constants.js +1281 -20
  93. package/lib/WABinary/decode.js +52 -42
  94. package/lib/WABinary/encode.js +110 -155
  95. package/lib/WABinary/generic-utils.js +55 -49
  96. package/lib/WABinary/index.js +6 -21
  97. package/lib/WABinary/jid-utils.js +76 -40
  98. package/lib/WABinary/types.js +2 -2
  99. package/lib/WAM/BinaryInfo.js +2 -5
  100. package/lib/WAM/constants.js +19071 -11568
  101. package/lib/WAM/encode.js +17 -22
  102. package/lib/WAM/index.js +4 -19
  103. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  104. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  105. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  106. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  107. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  108. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  109. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  110. package/lib/WAUSync/Protocols/index.js +6 -20
  111. package/lib/WAUSync/USyncQuery.js +44 -35
  112. package/lib/WAUSync/USyncUser.js +10 -5
  113. package/lib/WAUSync/index.js +4 -19
  114. package/lib/index.js +13 -36
  115. package/package.json +85 -51
  116. package/WAProto/fix-import.js +0 -29
  117. package/lib/Defaults/baileys-version.json +0 -3
  118. package/lib/Defaults/index.d.ts +0 -53
  119. package/lib/Defaults/phonenumber-mcc.json +0 -223
  120. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  121. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  122. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  123. package/lib/Signal/Group/index.d.ts +0 -11
  124. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  125. package/lib/Signal/Group/queue-job.d.ts +0 -1
  126. package/lib/Signal/Group/queue-job.js +0 -57
  127. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  128. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  129. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  130. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  131. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  132. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  133. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  134. package/lib/Signal/libsignal.d.ts +0 -3
  135. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  136. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  137. package/lib/Socket/Client/index.d.ts +0 -3
  138. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  139. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  140. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  141. package/lib/Socket/Client/web-socket-client.js +0 -62
  142. package/lib/Socket/business.d.ts +0 -171
  143. package/lib/Socket/chats.d.ts +0 -267
  144. package/lib/Socket/communities.d.ts +0 -180
  145. package/lib/Socket/groups.d.ts +0 -115
  146. package/lib/Socket/index.d.ts +0 -173
  147. package/lib/Socket/luxu.d.ts +0 -266
  148. package/lib/Socket/messages-recv.d.ts +0 -161
  149. package/lib/Socket/messages-send.d.ts +0 -183
  150. package/lib/Socket/newsletter.d.ts +0 -134
  151. package/lib/Socket/registration.d.ts +0 -267
  152. package/lib/Socket/registration.js +0 -166
  153. package/lib/Socket/socket.d.ts +0 -44
  154. package/lib/Socket/usync.d.ts +0 -36
  155. package/lib/Socket/usync.js +0 -70
  156. package/lib/Store/index.d.ts +0 -3
  157. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  158. package/lib/Store/make-in-memory-store.d.ts +0 -118
  159. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  160. package/lib/Store/object-repository.d.ts +0 -10
  161. package/lib/Types/Auth.d.ts +0 -110
  162. package/lib/Types/Call.d.ts +0 -13
  163. package/lib/Types/Chat.d.ts +0 -102
  164. package/lib/Types/Contact.d.ts +0 -19
  165. package/lib/Types/Events.d.ts +0 -157
  166. package/lib/Types/GroupMetadata.d.ts +0 -55
  167. package/lib/Types/Label.d.ts +0 -35
  168. package/lib/Types/LabelAssociation.d.ts +0 -29
  169. package/lib/Types/Message.d.ts +0 -273
  170. package/lib/Types/Newsletter.d.ts +0 -103
  171. package/lib/Types/Newsletter.js +0 -38
  172. package/lib/Types/Product.d.ts +0 -78
  173. package/lib/Types/Signal.d.ts +0 -57
  174. package/lib/Types/Socket.d.ts +0 -111
  175. package/lib/Types/State.d.ts +0 -27
  176. package/lib/Types/USync.d.ts +0 -25
  177. package/lib/Types/index.d.ts +0 -57
  178. package/lib/Utils/auth-utils.d.ts +0 -18
  179. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  180. package/lib/Utils/baileys-event-stream.js +0 -63
  181. package/lib/Utils/business.d.ts +0 -22
  182. package/lib/Utils/chat-utils.d.ts +0 -71
  183. package/lib/Utils/crypto.d.ts +0 -41
  184. package/lib/Utils/decode-wa-message.d.ts +0 -19
  185. package/lib/Utils/event-buffer.d.ts +0 -35
  186. package/lib/Utils/generics.d.ts +0 -92
  187. package/lib/Utils/history.d.ts +0 -15
  188. package/lib/Utils/index.d.ts +0 -17
  189. package/lib/Utils/link-preview.d.ts +0 -21
  190. package/lib/Utils/logger.d.ts +0 -4
  191. package/lib/Utils/lt-hash.d.ts +0 -12
  192. package/lib/Utils/make-mutex.d.ts +0 -7
  193. package/lib/Utils/messages-media.d.ts +0 -116
  194. package/lib/Utils/messages.d.ts +0 -77
  195. package/lib/Utils/noise-handler.d.ts +0 -21
  196. package/lib/Utils/process-message.d.ts +0 -41
  197. package/lib/Utils/signal.d.ts +0 -32
  198. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  199. package/lib/Utils/validate-connection.d.ts +0 -11
  200. package/lib/WABinary/constants.d.ts +0 -30
  201. package/lib/WABinary/decode.d.ts +0 -7
  202. package/lib/WABinary/encode.d.ts +0 -3
  203. package/lib/WABinary/generic-utils.d.ts +0 -17
  204. package/lib/WABinary/index.d.ts +0 -5
  205. package/lib/WABinary/jid-utils.d.ts +0 -31
  206. package/lib/WABinary/types.d.ts +0 -18
  207. package/lib/WAM/BinaryInfo.d.ts +0 -17
  208. package/lib/WAM/constants.d.ts +0 -38
  209. package/lib/WAM/encode.d.ts +0 -3
  210. package/lib/WAM/index.d.ts +0 -3
  211. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  212. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  213. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  214. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  215. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  216. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  217. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  218. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  219. package/lib/WAUSync/USyncUser.d.ts +0 -12
  220. package/lib/index.d.ts +0 -12
@@ -1,43 +1,41 @@
1
- const WAProto = require('../../WAProto').proto;
2
- const Utils_1 = require('../Utils');
3
- const crypto = require('crypto');
1
+ import { proto } from '../../WAProto/index.js'
2
+ import * as Utils from '../Utils/index.js'
3
+ import crypto from 'crypto'
4
4
 
5
- class imup {
6
- constructor(utils, waUploadToServer, relayMessageFn, authState) {
7
- this.utils = utils;
5
+ export default class imup {
6
+ constructor(utils, waUploadToServer, relayMessageFn) {
7
+ this.utils = utils
8
8
  this.relayMessage = relayMessageFn
9
- this.waUploadToServer = waUploadToServer;
10
- this.authState = authState;
9
+ this.waUploadToServer = waUploadToServer
11
10
  }
12
11
 
13
12
  detectType(content) {
14
- if (content.requestPaymentMessage) return 'PAYMENT';
15
- if (content.productMessage) return 'PRODUCT';
16
- if (content.interactiveMessage) return 'INTERACTIVE';
17
- if (content.albumMessage) return 'ALBUM';
18
- if (content.eventMessage) return 'EVENT';
19
- if (content.pollResultMessage) return 'POLL_RESULT';
20
- if (content.orderMessage) return 'ORDER';
21
- if (content.groupStatus) return 'GROUP_STATUS';
22
- if (content.groupLabel) return 'GROUP_LABEL';
23
- return null;
13
+ if (content.requestPaymentMessage) return 'PAYMENT'
14
+ if (content.productMessage) return 'PRODUCT'
15
+ if (content.albumMessage) return 'ALBUM'
16
+ if (content.eventMessage) return 'EVENT'
17
+ if (content.pollResultMessage) return 'POLL_RESULT'
18
+ if (content.orderMessage) return 'ORDER'
19
+ if (content.groupStatus) return 'GROUP_STATUS'
20
+ if (content.groupLabel) return 'GROUP_LABEL'
21
+ return null
24
22
  }
25
23
 
26
24
  async handlePayment(content, quoted) {
27
- const data = content.requestPaymentMessage;
28
- let notes = {};
25
+ const data = content.requestPaymentMessage
26
+ let notes = {}
29
27
 
30
28
  if (data.sticker?.stickerMessage) {
31
29
  notes = {
32
30
  stickerMessage: {
33
- ...data.sticker.stickerMessage,
31
+ ...data.sticker.stickerMessage,
34
32
  contextInfo: {
35
33
  stanzaId: quoted?.key?.id,
36
34
  participant: quoted?.key?.participant || content.sender,
37
35
  quotedMessage: quoted?.message
38
36
  }
39
37
  }
40
- };
38
+ }
41
39
  } else if (data.note) {
42
40
  notes = {
43
41
  extendedTextMessage: {
@@ -48,494 +46,342 @@ class imup {
48
46
  quotedMessage: quoted?.message
49
47
  }
50
48
  }
51
- };
49
+ }
52
50
  }
53
51
 
54
52
  return {
55
- requestPaymentMessage: WAProto.Message.RequestPaymentMessage.fromObject({
53
+ requestPaymentMessage: proto.Message.RequestPaymentMessage.fromObject({
56
54
  expiryTimestamp: data.expiry || 0,
57
55
  amount1000: data.amount || 0,
58
56
  currencyCodeIso4217: data.currency || "IDR",
59
57
  requestFrom: data.from || "0@s.whatsapp.net",
60
58
  noteMessage: notes,
61
- background: data.background ?? {
59
+ background: data.background?? {
62
60
  id: "DEFAULT",
63
61
  placeholderArgb: 0xFFF0F0F0
64
62
  }
65
63
  })
66
- };
64
+ }
67
65
  }
68
-
69
- async handleProduct(content, jid, quoted) {
70
- const {
71
- title,
72
- description,
73
- thumbnail,
74
- productId,
75
- retailerId,
76
- url,
77
- body = "",
78
- footer = "",
79
- buttons = [],
80
- priceAmount1000 = null,
81
- currencyCode = "IDR"
82
- } = content.productMessage;
83
-
84
- let productImage;
85
-
86
- if (Buffer.isBuffer(thumbnail)) {
87
- const { imageMessage } = await this.utils.generateWAMessageContent(
88
- { image: thumbnail },
89
- { upload: this.waUploadToServer }
90
- );
91
- productImage = imageMessage;
92
- } else if (typeof thumbnail === 'object' && thumbnail.url) {
93
- const { imageMessage } = await this.utils.generateWAMessageContent(
94
- { image: { url: thumbnail.url }},
95
- { upload: this.waUploadToServer }
96
- );
97
- productImage = imageMessage;
98
- }
99
-
100
- return {
101
- viewOnceMessage: {
102
- message: {
103
- interactiveMessage: {
104
- body: { text: body },
105
- footer: { text: footer },
106
- header: {
107
- title,
108
- hasMediaAttachment: true,
109
- productMessage: {
110
- product: {
111
- productImage,
112
- productId,
113
- title,
114
- description,
115
- currencyCode,
116
- priceAmount1000,
117
- retailerId,
118
- url,
119
- productImageCount: 1
120
- },
121
- businessOwnerJid: "0@s.whatsapp.net"
122
- }
123
- },
124
- nativeFlowMessage: { buttons }
125
- }
126
- }
127
- }
128
- };
66
+
67
+ async handleProduct(content, jid, quoted) {
68
+ const {
69
+ title,
70
+ description,
71
+ thumbnail,
72
+ productId,
73
+ retailerId,
74
+ url,
75
+ body = "",
76
+ footer = "",
77
+ buttons = [],
78
+ priceAmount1000 = null,
79
+ currencyCode = "IDR"
80
+ } = content.productMessage
81
+
82
+ let productImage
83
+
84
+ if (Buffer.isBuffer(thumbnail)) {
85
+ const { imageMessage } = await this.utils.generateWAMessageContent(
86
+ { image: thumbnail },
87
+ { upload: this.waUploadToServer }
88
+ )
89
+ productImage = imageMessage
90
+ } else if (typeof thumbnail === 'object' && thumbnail.url) {
91
+ const { imageMessage } = await this.utils.generateWAMessageContent(
92
+ { image: { url: thumbnail.url } },
93
+ { upload: this.waUploadToServer }
94
+ )
95
+ productImage = imageMessage
129
96
  }
130
-
131
- async handleInteractive(content, jid, quoted) {
132
- const {
133
- title,
134
- footer,
135
- thumbnail,
136
- image,
137
- video,
138
- document,
139
- mimetype,
140
- fileName,
141
- jpegThumbnail,
142
- contextInfo,
143
- externalAdReply,
144
- buttons = [],
145
- nativeFlowMessage
146
- } = content.interactiveMessage;
147
-
148
- let media = null;
149
- let mediaType = null;
150
-
151
- if (thumbnail) {
152
- media = await this.utils.prepareWAMessageMedia(
153
- { image: { url: thumbnail } },
154
- { upload: this.waUploadToServer }
155
- );
156
- mediaType = 'image';
157
- } else if (image) {
158
- if (typeof image === 'object' && image.url) {
159
- media = await this.utils.prepareWAMessageMedia(
160
- { image: { url: image.url } },
161
- { upload: this.waUploadToServer }
162
- );
163
- } else {
164
- media = await this.utils.prepareWAMessageMedia(
165
- { image: image },
166
- { upload: this.waUploadToServer }
167
- );
168
- }
169
- mediaType = 'image';
170
- } else if (video) {
171
- if (typeof video === 'object' && video.url) {
172
- media = await this.utils.prepareWAMessageMedia(
173
- { video: { url: video.url } },
174
- { upload: this.waUploadToServer }
175
- );
176
- } else {
177
- media = await this.utils.prepareWAMessageMedia(
178
- { video: video },
179
- { upload: this.waUploadToServer }
180
- );
181
- }
182
- mediaType = 'video';
183
- } else if (document) {
184
- let documentPayload = { document: document };
185
-
186
- if (jpegThumbnail) {
187
- if (typeof jpegThumbnail === 'object' && jpegThumbnail.url) {
188
- documentPayload.jpegThumbnail = { url: jpegThumbnail.url };
189
- } else {
190
- documentPayload.jpegThumbnail = jpegThumbnail;
97
+
98
+ return {
99
+ viewOnceMessage: {
100
+ message: {
101
+ interactiveMessage: {
102
+ body: { text: body },
103
+ footer: { text: footer },
104
+ header: {
105
+ title,
106
+ hasMediaAttachment: true,
107
+ productMessage: {
108
+ product: {
109
+ productImage,
110
+ productId,
111
+ title,
112
+ description,
113
+ currencyCode,
114
+ priceAmount1000,
115
+ retailerId,
116
+ url,
117
+ productImageCount: 1
118
+ },
119
+ businessOwnerJid: "0@s.whatsapp.net"
120
+ }
121
+ },
122
+ nativeFlowMessage: { buttons }
191
123
  }
192
124
  }
193
-
194
- media = await this.utils.prepareWAMessageMedia(
195
- documentPayload,
196
- { upload: this.waUploadToServer }
197
- );
198
-
199
- if (fileName) {
200
- media.documentMessage.fileName = fileName;
201
- }
202
- if (mimetype) {
203
- media.documentMessage.mimetype = mimetype;
204
- }
205
- mediaType = 'document';
206
- }
207
-
208
- let interactiveMessage = {
209
- body: { text: title || "" },
210
- footer: { text: footer || "" }
211
- };
212
-
213
- if (buttons && buttons.length > 0) {
214
- interactiveMessage.nativeFlowMessage = {
215
- buttons: buttons
216
- };
217
-
218
- if (nativeFlowMessage) {
219
- interactiveMessage.nativeFlowMessage = {
220
- ...interactiveMessage.nativeFlowMessage,
221
- ...nativeFlowMessage
222
- };
223
- }
224
- } else if (nativeFlowMessage) {
225
- interactiveMessage.nativeFlowMessage = nativeFlowMessage;
226
- }
227
-
228
- if (media) {
229
- interactiveMessage.header = {
230
- title: "",
231
- hasMediaAttachment: true,
232
- ...media
233
- };
234
- } else {
235
- interactiveMessage.header = {
236
- title: "",
237
- hasMediaAttachment: false
238
- };
239
125
  }
126
+ }
127
+ }
128
+
129
+ async handleAlbum(content, jid, quoted) {
130
+ const array = content.albumMessage
131
+ const album = await this.utils.generateWAMessageFromContent(jid, {
132
+ messageContextInfo: {
133
+ messageSecret: crypto.randomBytes(32),
134
+ },
135
+ albumMessage: {
136
+ expectedImageCount: array.filter((a) => a.hasOwnProperty("image")).length,
137
+ expectedVideoCount: array.filter((a) => a.hasOwnProperty("video")).length,
138
+ },
139
+ }, {
140
+ userJid: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
141
+ quoted,
142
+ upload: this.waUploadToServer
143
+ })
144
+
145
+ await this.relayMessage(jid, album.message, {
146
+ messageId: album.key.id,
147
+ })
148
+
149
+ for (let content of array) {
150
+ const img = await this.utils.generateWAMessage(jid, content, {
151
+ upload: this.waUploadToServer,
152
+ })
240
153
 
241
- let finalContextInfo = {};
242
-
243
- if (contextInfo) {
244
- finalContextInfo = {
245
- mentionedJid: contextInfo.mentionedJid || [],
246
- forwardingScore: contextInfo.forwardingScore || 0,
247
- isForwarded: contextInfo.isForwarded || false,
248
- ...contextInfo
249
- };
154
+ img.message.messageContextInfo = {
155
+ messageSecret: crypto.randomBytes(32),
156
+ messageAssociation: {
157
+ associationType: 1,
158
+ parentMessageKey: album.key,
159
+ },
160
+ participant: "0@s.whatsapp.net",
161
+ remoteJid: "status@broadcast",
162
+ forwardingScore: 99999,
163
+ isForwarded: true,
164
+ mentionedJid: [jid],
165
+ starred: true,
166
+ labels: ["Y", "Important"],
167
+ isHighlighted: true,
168
+ businessMessageForwardInfo: {
169
+ businessOwnerJid: jid,
170
+ },
171
+ dataSharingContext: {
172
+ showMmDisclosure: true,
173
+ },
250
174
  }
251
175
 
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
- };
176
+ img.message.forwardedNewsletterMessageInfo = {
177
+ newsletterJid: "0@newsletter",
178
+ serverMessageId: 1,
179
+ newsletterName: `WhatsApp`,
180
+ contentType: 1,
181
+ timestamp: new Date().toISOString(),
182
+ senderName: "7-Yuukey",
183
+ contentType: "UPDATE_CARD",
184
+ priority: "high",
185
+ status: "sent",
264
186
  }
265
-
266
- if (Object.keys(finalContextInfo).length > 0) {
267
- interactiveMessage.contextInfo = finalContextInfo;
187
+
188
+ img.message.disappearingMode = {
189
+ initiator: 3,
190
+ trigger: 4,
191
+ initiatorDeviceJid: jid,
192
+ initiatedByExternalService: true,
193
+ initiatedByUserDevice: true,
194
+ initiatedBySystem: true,
195
+ initiatedByServer: true,
196
+ initiatedByAdmin: true,
197
+ initiatedByUser: true,
198
+ initiatedByApp: true,
199
+ initiatedByBot: true,
200
+ initiatedByMe: true,
268
201
  }
269
202
 
270
- return {
271
- interactiveMessage: interactiveMessage
272
- };
273
- }
274
-
275
- async handleAlbum(content, jid, quoted) {
276
- const array = content.albumMessage;
277
- const album = await this.utils.generateWAMessageFromContent(jid, {
278
- messageContextInfo: {
279
- messageSecret: crypto.randomBytes(32),
280
- },
281
- albumMessage: {
282
- expectedImageCount: array.filter((a) => a.hasOwnProperty("image")).length,
283
- expectedVideoCount: array.filter((a) => a.hasOwnProperty("video")).length,
284
- },
285
- }, {
286
- userJid: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
287
- quoted,
288
- upload: this.waUploadToServer
289
- });
290
-
291
- await this.relayMessage(jid, album.message, {
292
- messageId: album.key.id,
293
- });
294
-
295
- for (let content of array) {
296
- const img = await this.utils.generateWAMessage(jid, content, {
297
- upload: this.waUploadToServer,
298
- });
299
-
300
- img.message.messageContextInfo = {
301
- messageSecret: crypto.randomBytes(32),
302
- messageAssociation: {
303
- associationType: 1,
304
- parentMessageKey: album.key,
305
- },
306
- participant: "0@s.whatsapp.net",
307
- remoteJid: "status@broadcast",
308
- forwardingScore: 99999,
309
- isForwarded: true,
310
- mentionedJid: [jid],
311
- starred: true,
312
- labels: ["Y", "Important"],
313
- isHighlighted: true,
314
- businessMessageForwardInfo: {
315
- businessOwnerJid: jid,
203
+ await this.relayMessage(jid, img.message, {
204
+ messageId: img.key.id,
205
+ quoted: {
206
+ key: {
207
+ remoteJid: album.key.remoteJid,
208
+ id: album.key.id,
209
+ fromMe: true,
210
+ participant: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
316
211
  },
317
- dataSharingContext: {
318
- showMmDisclosure: true,
212
+ message: album.message,
213
+ },
214
+ })
215
+ }
216
+ return album
217
+ }
218
+
219
+ async handleEvent(content, jid, quoted) {
220
+ const eventData = content.eventMessage
221
+
222
+ const msg = await this.utils.generateWAMessageFromContent(jid, {
223
+ viewOnceMessage: {
224
+ message: {
225
+ messageContextInfo: {
226
+ deviceListMetadata: {},
227
+ deviceListMetadataVersion: 2,
228
+ messageSecret: crypto.randomBytes(32),
229
+ supportPayload: JSON.stringify({
230
+ version: 2,
231
+ is_ai_message: true,
232
+ should_show_system_message: true,
233
+ ticket_id: crypto.randomBytes(16).toString('hex')
234
+ })
319
235
  },
320
- };
321
-
322
- img.message.forwardedNewsletterMessageInfo = {
323
- newsletterJid: "0@newsletter",
324
- serverMessageId: 1,
325
- newsletterName: `WhatsApp`,
326
- contentType: 1,
327
- timestamp: new Date().toISOString(),
328
- senderName: "AlannXD",
329
- contentType: "UPDATE_CARD",
330
- priority: "high",
331
- status: "sent",
332
- };
333
-
334
- img.message.disappearingMode = {
335
- initiator: 3,
336
- trigger: 4,
337
- initiatorDeviceJid: jid,
338
- initiatedByExternalService: true,
339
- initiatedByUserDevice: true,
340
- initiatedBySystem: true,
341
- initiatedByServer: true,
342
- initiatedByAdmin: true,
343
- initiatedByUser: true,
344
- initiatedByApp: true,
345
- initiatedByBot: true,
346
- initiatedByMe: true,
347
- };
348
-
349
- await this.relayMessage(jid, img.message, {
350
- messageId: img.key.id,
351
- quoted: {
352
- key: {
353
- remoteJid: album.key.remoteJid,
354
- id: album.key.id,
355
- fromMe: true,
356
- participant: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
236
+ eventMessage: {
237
+ contextInfo: {
238
+ mentionedJid: [jid],
239
+ participant: jid,
240
+ remoteJid: "status@broadcast",
241
+ forwardedNewsletterMessageInfo: {
242
+ newsletterName: "D | 7eppeli-Exloration",
243
+ newsletterJid: "120363421563597486@newsletter",
244
+ serverMessageId: 1
245
+ }
357
246
  },
358
- message: album.message,
359
- },
360
- });
361
- }
362
- return album;
363
- }
364
-
365
- async handleEvent(content, jid, quoted) {
366
- const eventData = content.eventMessage;
367
-
368
- const msg = await this.utils.generateWAMessageFromContent(jid, {
369
- viewOnceMessage: {
370
- message: {
371
- messageContextInfo: {
372
- deviceListMetadata: {},
373
- deviceListMetadataVersion: 2,
374
- messageSecret: crypto.randomBytes(32),
375
- supportPayload: JSON.stringify({
376
- version: 2,
377
- is_ai_message: true,
378
- should_show_system_message: true,
379
- ticket_id: crypto.randomBytes(16).toString('hex')
380
- })
247
+ isCanceled: eventData.isCanceled || false,
248
+ name: eventData.name,
249
+ description: eventData.description,
250
+ location: eventData.location || {
251
+ degreesLatitude: 0,
252
+ degreesLongitude: 0,
253
+ name: "Location"
381
254
  },
382
- eventMessage: {
383
- contextInfo: {
384
- mentionedJid: [jid],
385
- participant: jid,
386
- remoteJid: "status@broadcast",
387
- forwardedNewsletterMessageInfo: {
388
- newsletterName: "↯ ᴀʟᴀɴɴxᴅ | ʜᴏʟᴏᴡ 徴",
389
- newsletterJid: "120363387182851100@newsletter",
390
- serverMessageId: 1
391
- }
392
- },
393
- isCanceled: eventData.isCanceled || false,
394
- name: eventData.name,
395
- description: eventData.description,
396
- location: eventData.location || {
397
- degreesLatitude: 0,
398
- degreesLongitude: 0,
399
- name: "Location"
400
- },
401
- joinLink: eventData.joinLink || '',
402
- startTime: typeof eventData.startTime === 'string' ? parseInt(eventData.startTime) : eventData.startTime || Date.now(),
403
- endTime: typeof eventData.endTime === 'string' ? parseInt(eventData.endTime) : eventData.endTime || Date.now() + 3600000,
404
- extraGuestsAllowed: eventData.extraGuestsAllowed !== false
405
- }
255
+ joinLink: eventData.joinLink || '',
256
+ startTime: typeof eventData.startTime === 'string'? parseInt(eventData.startTime) : eventData.startTime || Date.now(),
257
+ endTime: typeof eventData.endTime === 'string'? parseInt(eventData.endTime) : eventData.endTime || Date.now() + 3600000,
258
+ extraGuestsAllowed: eventData.extraGuestsAllowed!== false
406
259
  }
407
260
  }
408
- }, { quoted });
409
-
410
- await this.relayMessage(jid, msg.message, {
411
- messageId: msg.key.id
412
- });
413
- return msg;
414
- }
415
-
416
- async handlePollResult(content, jid, quoted) {
417
- const pollData = content.pollResultMessage;
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()
261
+ }
262
+ }, { quoted })
263
+
264
+ await this.relayMessage(jid, msg.message, {
265
+ messageId: msg.key.id
266
+ })
267
+ return msg
268
+ }
269
+
270
+ async handlePollResult(content, jid, quoted) {
271
+ const pollData = content.pollResultMessage
272
+ const msg = await this.utils.generateWAMessageFromContent(jid, {
273
+ pollResultSnapshotMessage: {
274
+ name: pollData.name,
275
+ pollVotes: pollData.pollVotes.map(vote => ({
276
+ optionName: vote.optionName,
277
+ optionVoteCount: typeof vote.optionVoteCount === 'number'
278
+ ? vote.optionVoteCount.toString()
425
279
  : vote.optionVoteCount
426
- })),
427
- contextInfo: {
428
- isForwarded: true,
429
- forwardingScore: 1,
430
- forwardedNewsletterMessageInfo: {
431
- newsletterName: pollData.newsletter.newsletterName || "120363421367985094@newsletter",
432
- newsletterJid: pollData.newsletter.newsletterJid || "Newsletter",
433
- serverMessageId: 1000,
434
- contentType: "UPDATE"
435
- }
280
+ })),
281
+ contextInfo: {
282
+ isForwarded: true,
283
+ forwardingScore: 1,
284
+ forwardedNewsletterMessageInfo: {
285
+ newsletterName: pollData.newsletter.newsletterName || "120363399602691477@newsletter",
286
+ newsletterJid: pollData.newsletter.newsletterJid || "Newsletter",
287
+ serverMessageId: 1000,
288
+ contentType: "UPDATE"
436
289
  }
437
290
  }
438
- }, {
439
- userJid: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
440
- quoted
441
- });
442
-
443
- await this.relayMessage(jid, msg.message, {
444
- messageId: msg.key.id
445
- });
446
-
447
- return msg;
448
- }
449
-
450
- async handleOrderMessage(content, jid, quoted) {
451
- const orderData = content.orderMessage;
452
-
453
- const Haha = await this.utils.generateWAMessageFromContent(jid, {
454
- orderMessage: {
455
- orderId: "ALANNXD25022008",
456
- thumbnail: orderData.thumbnail || null,
457
- itemCount: orderData.itemCount || 0,
458
- status: "ACCEPTED",
459
- surface: "CATALOG",
460
- message: orderData.message,
461
- orderTitle: orderData.orderTitle,
462
- sellerJid: "0@whatsapp.net",
463
- token: "ALANNXD_EXAMPLE_TOKEN",
464
- totalAmount1000: orderData.totalAmount1000 || 0,
465
- totalCurrencyCode: orderData.totalCurrencyCode || "IDR",
466
- messageVersion: 2
467
- }
468
- }, { quoted:quoted });
291
+ }
292
+ }, {
293
+ userJid: this.utils.generateMessageID().split('@')[0] + '@s.whatsapp.net',
294
+ quoted
295
+ })
469
296
 
470
- await this.relayMessage(jid, Haha.message, {});
471
- return Haha;
472
- }
473
-
474
- async handleGroupStory(content, jid, quoted) {
475
- const storyData = content.groupStatus;
476
- let messageContent;
477
-
478
- if (storyData.message) {
479
- messageContent = storyData;
480
- } else {
481
- if (typeof this.utils?.generateWAMessageContent === "function") {
482
- messageContent = await this.utils.generateWAMessageContent(storyData, {
483
- upload: this.waUploadToServer
484
- });
485
- } else if (typeof this.utils?.generateWAMessageContent === "function") {
297
+ await this.relayMessage(jid, msg.message, {
298
+ messageId: msg.key.id
299
+ })
300
+
301
+ return msg
302
+ }
303
+
304
+ async handleOrderMessage(content, jid, quoted) {
305
+ const orderData = content.orderMessage
306
+
307
+ const Haha = await this.utils.generateWAMessageFromContent(jid, {
308
+ orderMessage: {
309
+ orderId: "7EPPELI25022008",
310
+ thumbnail: orderData.thumbnail || null,
311
+ itemCount: orderData.itemCount || 0,
312
+ status: "ACCEPTED",
313
+ surface: "CATALOG",
314
+ message: orderData.message,
315
+ orderTitle: orderData.orderTitle,
316
+ sellerJid: "0@whatsapp.net",
317
+ token: "7EPPELI_EXAMPLE_TOKEN",
318
+ totalAmount1000: orderData.totalAmount1000 || 0,
319
+ totalCurrencyCode: orderData.totalCurrencyCode || "IDR",
320
+ messageVersion: 2
321
+ }
322
+ }, { quoted: quoted })
323
+
324
+ await this.relayMessage(jid, Haha.message, {})
325
+ return Haha
326
+ }
327
+
328
+ async handleGroupStory(content, jid, quoted) {
329
+ const storyData = content.groupStatus
330
+ let messageContent
331
+
332
+ if (storyData.message) {
333
+ messageContent = storyData
334
+ } else {
335
+ if (typeof this.utils?.generateWAMessageContent === "function") {
486
336
  messageContent = await this.utils.generateWAMessageContent(storyData, {
487
- upload: this.waUploadToServer
488
- });
489
- } else if (typeof this.utils?.prepareMessageContent === "function") {
490
- messageContent = await this.utils.prepareMessageContent(storyData, {
491
337
  upload: this.waUploadToServer
492
- });
493
- } else {
494
- messageContent = await Utils_1.generateWAMessageContent(storyData, {
495
- upload: this.waUploadToServer
496
- });
497
- }
338
+ })
339
+ } else {
340
+ messageContent = await Utils.generateWAMessageContent(storyData, {
341
+ upload: this.waUploadToServer
342
+ })
498
343
  }
344
+ }
499
345
 
500
- let msg = {
501
- message: {
346
+ let msg = {
347
+ message: {
502
348
  groupStatusMessageV2: {
503
- message: messageContent.message || messageContent
349
+ message: messageContent.message || messageContent
504
350
  }
505
- }
506
- };
351
+ }
352
+ }
507
353
 
508
- return await this.relayMessage(jid, msg.message, {
509
- messageId: this.utils.generateMessageID()
510
- });
354
+ return await this.relayMessage(jid, msg.message, {
355
+ messageId: this.utils.generateMessageID()
356
+ })
357
+ }
358
+
359
+ async handleGbLabel(content, jid) {
360
+ const x = content.groupLabel
361
+ if (!jid.endsWith('@g.us')) {
362
+ throw new Error('group required!')
511
363
  }
512
- async handleGbLabel(content, jid) {
513
- const x = content.groupLabel;
514
- if (!jid.endsWith('@g.us')) {
515
- throw new Error('group required!')
364
+
365
+ const msg = this.utils.generateWAMessageFromContent(jid, {
366
+ protocolMessage: {
367
+ type: "GROUP_MEMBER_LABEL_CHANGE",
368
+ memberLabel: {
369
+ label: x.labelText.slice(0, 30)
370
+ }
516
371
  }
517
-
518
- const msg = this.utils.generateWAMessageFromContent(jid, {
519
- protocolMessage: {
520
- type: "GROUP_MEMBER_LABEL_CHANGE",
521
- memberLabel: {
522
- label: x.labelText.slice(0, 30)
523
- }
372
+ }, {})
373
+
374
+ await this.relayMessage(jid, msg.message, {
375
+ additionalNodes: [
376
+ {
377
+ tag: 'meta',
378
+ attrs: {
379
+ tag_reason: 'user_update',
380
+ appdata: 'member_tag'
381
+ },
382
+ content: undefined
524
383
  }
525
- }, {});
526
- await this.relayMessage(jid, msg.message, {
527
- additionalNodes: [
528
- {
529
- tag: 'meta',
530
- attrs: {
531
- tag_reason: 'user_update',
532
- appdata: 'member_tag'
533
- },
534
- content: undefined
535
- }
536
- ]
537
- })
538
- }
384
+ ]
385
+ })
539
386
  }
540
-
541
- module.exports = imup;
387
+ }