@modzneverdie/baileys 17.1.12 → 17.1.17

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