@zetagoaurum-socket/decagramton 3.2.5 → 3.2.7

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 (92) hide show
  1. package/README.md +91 -91
  2. package/WAProto/index.js +56886 -17506
  3. package/engine-requirements.js +91 -0
  4. package/lib/Defaults/index.js +47 -2
  5. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  6. package/lib/Signal/Group/ciphertext-message.js +15 -0
  7. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  8. package/lib/Signal/Group/group-session-builder.js +64 -0
  9. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  10. package/lib/Signal/Group/group_cipher.js +96 -0
  11. package/lib/Signal/Group/index.d.ts +11 -0
  12. package/lib/Signal/Group/index.js +57 -0
  13. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  14. package/lib/Signal/Group/keyhelper.js +55 -0
  15. package/lib/Signal/Group/queue-job.d.ts +1 -0
  16. package/lib/Signal/Group/queue-job.js +57 -0
  17. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  18. package/lib/Signal/Group/sender-chain-key.js +34 -0
  19. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  20. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  21. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  22. package/lib/Signal/Group/sender-key-message.js +69 -0
  23. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  24. package/lib/Signal/Group/sender-key-name.js +51 -0
  25. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  26. package/lib/Signal/Group/sender-key-record.js +53 -0
  27. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  28. package/lib/Signal/Group/sender-key-state.js +99 -0
  29. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  30. package/{WASignalGroup/sender_message_key.js → lib/Signal/Group/sender-message-key.js} +6 -16
  31. package/lib/Signal/libsignal.js +51 -29
  32. package/lib/Socket/business.d.ts +3 -2
  33. package/lib/Socket/chats.d.ts +215 -28
  34. package/lib/Socket/chats.js +166 -70
  35. package/lib/Socket/dugong.d.ts +254 -0
  36. package/lib/Socket/dugong.js +432 -141
  37. package/lib/Socket/groups.js +20 -23
  38. package/lib/Socket/index.js +2 -15
  39. package/lib/Socket/messages-recv.d.ts +56 -55
  40. package/lib/Socket/messages-recv.js +367 -131
  41. package/lib/Socket/messages-send.d.ts +3 -2
  42. package/lib/Socket/messages-send.js +423 -380
  43. package/lib/Socket/newsletter.js +147 -21
  44. package/lib/Socket/socket.js +156 -148
  45. package/lib/Socket/usync.d.ts +3 -3
  46. package/lib/Types/GroupMetadata.d.ts +1 -0
  47. package/lib/Types/Newsletter.d.ts +97 -86
  48. package/lib/Types/Newsletter.js +38 -32
  49. package/lib/Types/USync.d.ts +25 -0
  50. package/lib/Types/USync.js +2 -0
  51. package/lib/Utils/anti-crash.js +31 -0
  52. package/lib/Utils/chat-utils.js +6 -1
  53. package/lib/Utils/generics.js +66 -34
  54. package/lib/Utils/history.js +6 -1
  55. package/lib/Utils/index.js +0 -1
  56. package/lib/Utils/link-preview.js +1 -1
  57. package/lib/Utils/messages-media.js +145 -57
  58. package/lib/Utils/messages.js +92 -306
  59. package/lib/Utils/signal.js +48 -46
  60. package/lib/Utils/use-multi-file-auth-state.js +45 -6
  61. package/lib/Utils/validate-connection.js +89 -65
  62. package/lib/WABinary/constants.d.ts +27 -24
  63. package/lib/WABinary/encode.js +160 -123
  64. package/lib/WABinary/generic-utils.d.ts +2 -0
  65. package/lib/WABinary/generic-utils.js +124 -36
  66. package/lib/WABinary/jid-utils.js +5 -26
  67. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +1 -1
  68. package/lib/index.d.ts +1 -0
  69. package/lib/index.js +56 -0
  70. package/package.json +107 -101
  71. package/LICENSE +0 -21
  72. package/WAProto/GenerateStatics.sh +0 -4
  73. package/WAProto/WAProto.proto +0 -3344
  74. package/WAProto/index.d.ts +0 -37016
  75. package/WASignalGroup/GroupProtocol.js +0 -1697
  76. package/WASignalGroup/ciphertext_message.js +0 -16
  77. package/WASignalGroup/group_cipher.js +0 -120
  78. package/WASignalGroup/group_session_builder.js +0 -46
  79. package/WASignalGroup/index.js +0 -5
  80. package/WASignalGroup/keyhelper.js +0 -21
  81. package/WASignalGroup/protobufs.js +0 -3
  82. package/WASignalGroup/queue_job.js +0 -69
  83. package/WASignalGroup/sender_chain_key.js +0 -50
  84. package/WASignalGroup/sender_key_distribution_message.js +0 -78
  85. package/WASignalGroup/sender_key_message.js +0 -92
  86. package/WASignalGroup/sender_key_name.js +0 -70
  87. package/WASignalGroup/sender_key_record.js +0 -56
  88. package/WASignalGroup/sender_key_state.js +0 -129
  89. package/decagramton.jpg +0 -0
  90. package/lib/Utils/rate-limiter.js +0 -55
  91. package/lib/WAUSync/Fall +0 -1
  92. package/lib/WAUSync/Protocols/Fal +0 -1
@@ -1,133 +1,373 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.kikyy = void 0;
27
- const Utils = __importStar(require("../Utils"));
28
- const crypto = __importStar(require("crypto"));
29
- const WABinary_1 = require("../WABinary");
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");
30
8
 
31
9
  class kikyy {
32
- constructor(sock) {
33
- this.sock = sock;
34
- this.utils = Utils;
35
- this.relayMessage = sock.relayMessage;
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;
36
31
  }
37
32
 
38
33
  async handlePayment(content, quoted) {
39
- const msgId = this.utils.generateMessageID();
40
- const msg = await this.utils.generateWAMessageFromContent(
41
- content.jid || content.from,
42
- {
43
- requestPaymentMessage: {
44
- currencyCodeIso4217: content.currency || 'USD',
45
- amount1000: (content.amount || 1000) * 1000,
46
- requestFrom: content.from,
47
- noteMessage: {
48
- extendedTextMessage: {
49
- text: content.text || ''
50
- }
51
- },
52
- expiryTimestamp: content.expiry || 0,
53
- amount: {
54
- value: content.amount || 1000,
55
- offset: 1000,
56
- currencyCode: content.currency || 'USD'
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
57
45
  }
58
46
  }
59
- },
60
- { quoted }
61
- );
62
- return msg.message;
63
- }
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
+ }
64
60
 
65
- async handleProduct(content, jid, quoted) {
66
- const productData = content.product;
67
- const msg = await this.utils.generateWAMessageFromContent(jid, {
68
- productMessage: {
69
- product: {
70
- productImage: await this.utils.prepareWAMessageMedia(
71
- { image: { url: productData.image } },
72
- { upload: this.sock.waUploadToServer }
73
- ),
74
- productId: productData.productId || "1",
75
- title: productData.title,
76
- description: productData.description,
77
- currencyCode: productData.currency || "IDR",
78
- priceAmount1000: (productData.price || 1000) * 1000,
79
- retailerId: "ZetaGo-Aurum",
80
- url: productData.url,
81
- productImageCount: 1
82
- },
83
- businessOwnerJid: productData.businessOwnerJid || jid
84
- }
85
- }, { quoted });
86
- return msg;
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
+ };
87
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;
88
90
 
89
- async handleInteractive(content, jid, quoted) {
90
- const msg = await this.utils.generateWAMessageFromContent(jid, {
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 {
91
108
  viewOnceMessage: {
92
109
  message: {
93
- interactiveMessage: content.interactiveMessage
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
+ }
94
133
  }
95
134
  }
96
- }, { quoted });
97
- return msg;
135
+ };
98
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;
99
155
 
100
- async handleAlbum(content, jid, quoted) {
101
- // ... (Implementation for Album)
102
- // Ensure to include supportPayload logic here if needed for group safety
103
- const msg = await this.utils.generateWAMessageFromContent(jid, {
104
- viewOnceMessage: {
105
- message: {
106
- messageContextInfo: {
107
- deviceListMetadata: {},
108
- deviceListMetadataVersion: 2,
109
- messageSecret: crypto.randomBytes(32),
110
- supportPayload: JSON.stringify({
111
- version: 1,
112
- is_ai_message: true,
113
- should_show_system_message: true,
114
- ticket_id: crypto.randomBytes(16).toString('hex')
115
- })
116
- },
117
- albumMessage: {
118
- expectedImageCount: content.images ? content.images.length : 0,
119
- expectedVideoCount: content.videos ? content.videos.length : 0,
120
- ...content.album
121
- }
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;
122
200
  }
123
201
  }
124
- }, { quoted });
125
- await this.relayMessage(jid, msg.message, { messageId: msg.key.id });
126
- return msg;
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
+ };
127
276
  }
128
277
 
129
- async handleEvent(content, jid, quoted) {
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) {
130
369
  const eventData = content.eventMessage;
370
+
131
371
  const msg = await this.utils.generateWAMessageFromContent(jid, {
132
372
  viewOnceMessage: {
133
373
  message: {
@@ -143,51 +383,102 @@ class kikyy {
143
383
  })
144
384
  },
145
385
  eventMessage: {
146
- isCanceled: false,
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,
147
397
  name: eventData.name,
148
398
  description: eventData.description,
149
- location: eventData.location,
150
- joinLink: eventData.joinLink,
151
- startTime: eventData.startTime,
152
- endTime: eventData.endTime,
153
- extraGuestsAllowed: true
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
154
408
  }
155
409
  }
156
410
  }
157
411
  }, { quoted });
158
412
 
159
- await this.relayMessage(jid, msg.message, { messageId: msg.key.id });
413
+ await this.relayMessage(jid, msg.message, {
414
+ messageId: msg.key.id
415
+ });
160
416
  return msg;
161
417
  }
162
-
418
+
163
419
  async handlePollResult(content, jid, quoted) {
164
- const pollData = content.pollResult;
165
- // Implementation for poll result
166
- const msg = await this.utils.generateWAMessageFromContent(jid, {
167
- pollUpdateMessage: {
168
- pollCreationMessageKey: pollData.pollKey,
169
- vote: {
170
- selectedOptions: pollData.votes, // Array of SHA256 hashes
171
- encIv: crypto.randomBytes(12),
172
- }
173
- }
174
- }, { quoted });
175
- return msg;
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;
176
442
  }
177
443
 
178
444
  async handleGroupStory(content, jid, quoted) {
179
- // Implementation for group story
180
- // This is complex and might depend on specific protobuf structures
181
- const msg = await this.utils.generateWAMessageFromContent(jid, {
182
- extendedTextMessage: {
183
- text: content.text,
184
- backgroundArgb: 0xFFFFFFFF,
185
- textArgb: 0xFF000000,
186
- ...content.storyOptions
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
+ });
187
467
  }
188
- }, { quoted, broadcast: true }); // Special handling for broadcast might be needed
189
- await this.relayMessage(jid, msg.message, { messageId: msg.key.id, additionalAttributes: { 'status_distribution_mode': '1' } }); // Example
190
- return msg;
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
+ });
191
481
  }
192
482
  }
193
- exports.kikyy = kikyy;
483
+
484
+ module.exports = kikyy;