zaileys 2.0.10 → 2.0.12

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.
package/README.MD CHANGED
@@ -118,7 +118,7 @@ const wa = new Client({
118
118
 
119
119
  // pairing code
120
120
  authType: 'pairing',
121
- phoneNumber: 628xxxxx
121
+ phoneNumber: 6280000000,
122
122
  });
123
123
 
124
124
  wa.on('messages', async (ctx) => {
@@ -273,7 +273,7 @@ If any of these match a number in your returned array, the citation check return
273
273
 
274
274
  ## 📫 Sending Messages
275
275
 
276
- > **Quick Jump:** [Text](#send-text) · [Reply](#reply-to-message) · [Forward](#forward-message) · [Media](#send-media) · [Banner](#send-with-banner) · [Location](#send-location) · [Contact](#send-contact) · [Poll](#send-poll) · [Reaction](#send-reaction) · [Presence](#update-presence) · [Mentions](#mentions) · [Edit & Delete](#edit--delete-messages) · [Buttons](#interactive-buttons)
276
+ > **Quick Jump:** [Text](#send-text) · [Reply](#reply-to-message) · [Forward](#forward-message) · [Media](#send-media) · [Banner](#send-with-banner) · [Location](#send-location) · [Contact](#send-contact) · [Poll](#send-poll) · [Reaction](#send-reaction) · [Presence](#update-presence) · [Mentions](#mentions) · [Edit & Delete](#edit--delete-messages) · [Buttons](#interactive-buttons) · [Member Label](#member-label)
277
277
 
278
278
  ### Send Text
279
279
 
package/dist/index.d.mts CHANGED
@@ -199,6 +199,62 @@ declare const ListenerConnectionType: z.ZodObject<{
199
199
  code: z.ZodOptional<z.ZodString>;
200
200
  }, z.core.$strip>;
201
201
 
202
+ declare const DEVICE_ENUM_TYPES: z.ZodEnum<{
203
+ unknown: "unknown";
204
+ android: "android";
205
+ ios: "ios";
206
+ desktop: "desktop";
207
+ web: "web";
208
+ }>;
209
+ declare const MESSAGE_ENUM_TYPES: z.ZodEnum<{
210
+ text: "text";
211
+ image: "image";
212
+ contact: "contact";
213
+ location: "location";
214
+ document: "document";
215
+ audio: "audio";
216
+ video: "video";
217
+ protocol: "protocol";
218
+ contacts: "contacts";
219
+ highlyStructured: "highlyStructured";
220
+ sendPayment: "sendPayment";
221
+ requestPayment: "requestPayment";
222
+ declinePaymentRequest: "declinePaymentRequest";
223
+ cancelPaymentRequest: "cancelPaymentRequest";
224
+ template: "template";
225
+ sticker: "sticker";
226
+ groupInvite: "groupInvite";
227
+ product: "product";
228
+ deviceSent: "deviceSent";
229
+ lists: "lists";
230
+ viewOnce: "viewOnce";
231
+ order: "order";
232
+ ephemeral: "ephemeral";
233
+ invoice: "invoice";
234
+ buttons: "buttons";
235
+ paymentInvite: "paymentInvite";
236
+ interactive: "interactive";
237
+ reaction: "reaction";
238
+ interactiveResponse: "interactiveResponse";
239
+ pollCreation: "pollCreation";
240
+ pollUpdate: "pollUpdate";
241
+ keepInChat: "keepInChat";
242
+ requestPhoneNumber: "requestPhoneNumber";
243
+ scheduledCallCreation: "scheduledCallCreation";
244
+ groupMentioned: "groupMentioned";
245
+ pinInChat: "pinInChat";
246
+ scheduledCallEdit: "scheduledCallEdit";
247
+ ptv: "ptv";
248
+ botInvoke: "botInvoke";
249
+ callLog: "callLog";
250
+ encComment: "encComment";
251
+ bcall: "bcall";
252
+ lottieSticker: "lottieSticker";
253
+ event: "event";
254
+ comment: "comment";
255
+ placeholder: "placeholder";
256
+ encEventUpdate: "encEventUpdate";
257
+ }>;
202
258
  declare const ListenerMessagesType: z.ZodObject<{
203
259
  channelId: z.ZodString;
204
260
  uniqueId: z.ZodString;
@@ -296,11 +352,66 @@ declare const ListenerMessagesType: z.ZodObject<{
296
352
  replied: z.ZodNullable<z.ZodObject</*elided*/ any, z.core.$strip>>;
297
353
  }, z.core.$strip>;
298
354
 
355
+ declare const LimiterType: z$1.ZodOptional<z$1.ZodObject<{
356
+ maxMessages: z$1.ZodDefault<z$1.ZodNumber>;
357
+ durationMs: z$1.ZodDefault<z$1.ZodNumber>;
358
+ }, z$1.core.$strip>>;
359
+ declare const CitationType: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodFunction<z$1.core.$ZodFunctionArgs, z$1.ZodPromise<z$1.ZodArray<z$1.ZodNumber>>>>>;
360
+ declare const FakeReplyType: z$1.ZodOptional<z$1.ZodObject<{
361
+ provider: z$1.ZodUnion<[z$1.ZodEnum<{
362
+ whatsapp: "whatsapp";
363
+ meta: "meta";
364
+ chatgpt: "chatgpt";
365
+ copilot: "copilot";
366
+ instagram: "instagram";
367
+ tiktok: "tiktok";
368
+ }>, z$1.ZodNumber]>;
369
+ }, z$1.core.$strip>>;
299
370
  declare const StickerMetadataType: z$1.ZodOptional<z$1.ZodObject<{
300
371
  packageName: z$1.ZodString;
301
372
  authorName: z$1.ZodString;
302
373
  quality: z$1.ZodNumber;
303
374
  }, z$1.core.$strip>>;
375
+ declare const ClientBaseType: z$1.ZodObject<{
376
+ session: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodString>>;
377
+ prefix: z$1.ZodOptional<z$1.ZodString>;
378
+ ignoreMe: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
379
+ showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
380
+ syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
381
+ autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
382
+ autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
383
+ autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
384
+ autoRead: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
385
+ autoPresence: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
386
+ autoRejectCall: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
387
+ limiter: z$1.ZodOptional<z$1.ZodObject<{
388
+ maxMessages: z$1.ZodDefault<z$1.ZodNumber>;
389
+ durationMs: z$1.ZodDefault<z$1.ZodNumber>;
390
+ }, z$1.core.$strip>>;
391
+ citation: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodFunction<z$1.core.$ZodFunctionArgs, z$1.ZodPromise<z$1.ZodArray<z$1.ZodNumber>>>>>;
392
+ fakeReply: z$1.ZodOptional<z$1.ZodObject<{
393
+ provider: z$1.ZodUnion<[z$1.ZodEnum<{
394
+ whatsapp: "whatsapp";
395
+ meta: "meta";
396
+ chatgpt: "chatgpt";
397
+ copilot: "copilot";
398
+ instagram: "instagram";
399
+ tiktok: "tiktok";
400
+ }>, z$1.ZodNumber]>;
401
+ }, z$1.core.$strip>>;
402
+ sticker: z$1.ZodOptional<z$1.ZodObject<{
403
+ packageName: z$1.ZodString;
404
+ authorName: z$1.ZodString;
405
+ quality: z$1.ZodNumber;
406
+ }, z$1.core.$strip>>;
407
+ }, z$1.core.$strip>;
408
+ declare const ClientAuthPairingType: z$1.ZodObject<{
409
+ authType: z$1.ZodLiteral<"pairing">;
410
+ phoneNumber: z$1.ZodNumber;
411
+ }, z$1.core.$strip>;
412
+ declare const ClientAuthQRType: z$1.ZodObject<{
413
+ authType: z$1.ZodLiteral<"qr">;
414
+ }, z$1.core.$strip>;
304
415
  declare const ClientOptionsType: z$1.ZodUnion<readonly [z$1.ZodObject<{
305
416
  authType: z$1.ZodLiteral<"pairing">;
306
417
  phoneNumber: z$1.ZodNumber;
@@ -380,6 +491,121 @@ type EventCallbackType = {
380
491
  calls: (ctx: z$1.infer<typeof ListenerCallsType>) => void;
381
492
  };
382
493
 
494
+ declare const ButtonInteractiveReplyType: z.ZodObject<{
495
+ type: z.ZodLiteral<"quick_reply">;
496
+ text: z.ZodString;
497
+ }, z.core.$strip>;
498
+ declare const ButtonInteractiveUrlType: z.ZodObject<{
499
+ type: z.ZodLiteral<"cta_url">;
500
+ url: z.ZodURL;
501
+ text: z.ZodString;
502
+ }, z.core.$strip>;
503
+ declare const ButtonInteractiveCopyType: z.ZodObject<{
504
+ type: z.ZodLiteral<"cta_copy">;
505
+ copy: z.ZodString;
506
+ text: z.ZodString;
507
+ }, z.core.$strip>;
508
+ declare const ButtonInteractiveCallType: z.ZodObject<{
509
+ type: z.ZodLiteral<"cta_call">;
510
+ text: z.ZodString;
511
+ phoneNumber: z.ZodString;
512
+ }, z.core.$strip>;
513
+ declare const ButtonInteractiveSingleSelectType: z.ZodObject<{
514
+ type: z.ZodLiteral<"single_select">;
515
+ text: z.ZodString;
516
+ section: z.ZodArray<z.ZodObject<{
517
+ title: z.ZodString;
518
+ highlight_label: z.ZodOptional<z.ZodString>;
519
+ rows: z.ZodArray<z.ZodObject<{
520
+ id: z.ZodString;
521
+ title: z.ZodString;
522
+ header: z.ZodOptional<z.ZodString>;
523
+ description: z.ZodOptional<z.ZodString>;
524
+ }, z.core.$strip>>;
525
+ }, z.core.$strip>>;
526
+ }, z.core.$strip>;
527
+ declare const ButtonInteractiveType: z.ZodObject<{
528
+ type: z.ZodLiteral<"interactive">;
529
+ footer: z.ZodOptional<z.ZodString>;
530
+ data: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
531
+ type: z.ZodLiteral<"quick_reply">;
532
+ text: z.ZodString;
533
+ }, z.core.$strip>, z.ZodObject<{
534
+ type: z.ZodLiteral<"cta_url">;
535
+ url: z.ZodURL;
536
+ text: z.ZodString;
537
+ }, z.core.$strip>, z.ZodObject<{
538
+ type: z.ZodLiteral<"cta_copy">;
539
+ copy: z.ZodString;
540
+ text: z.ZodString;
541
+ }, z.core.$strip>, z.ZodObject<{
542
+ type: z.ZodLiteral<"cta_call">;
543
+ text: z.ZodString;
544
+ phoneNumber: z.ZodString;
545
+ }, z.core.$strip>, z.ZodObject<{
546
+ type: z.ZodLiteral<"single_select">;
547
+ text: z.ZodString;
548
+ section: z.ZodArray<z.ZodObject<{
549
+ title: z.ZodString;
550
+ highlight_label: z.ZodOptional<z.ZodString>;
551
+ rows: z.ZodArray<z.ZodObject<{
552
+ id: z.ZodString;
553
+ title: z.ZodString;
554
+ header: z.ZodOptional<z.ZodString>;
555
+ description: z.ZodOptional<z.ZodString>;
556
+ }, z.core.$strip>>;
557
+ }, z.core.$strip>>;
558
+ }, z.core.$strip>]>>;
559
+ }, z.core.$strip>;
560
+ declare const ButtonSimpleType: z.ZodObject<{
561
+ type: z.ZodLiteral<"simple">;
562
+ footer: z.ZodOptional<z.ZodString>;
563
+ data: z.ZodArray<z.ZodObject<{
564
+ id: z.ZodString;
565
+ text: z.ZodString;
566
+ }, z.core.$strip>>;
567
+ }, z.core.$strip>;
568
+ declare const ButtonType: z.ZodUnion<readonly [z.ZodObject<{
569
+ type: z.ZodLiteral<"simple">;
570
+ footer: z.ZodOptional<z.ZodString>;
571
+ data: z.ZodArray<z.ZodObject<{
572
+ id: z.ZodString;
573
+ text: z.ZodString;
574
+ }, z.core.$strip>>;
575
+ }, z.core.$strip>, z.ZodObject<{
576
+ type: z.ZodLiteral<"interactive">;
577
+ footer: z.ZodOptional<z.ZodString>;
578
+ data: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
579
+ type: z.ZodLiteral<"quick_reply">;
580
+ text: z.ZodString;
581
+ }, z.core.$strip>, z.ZodObject<{
582
+ type: z.ZodLiteral<"cta_url">;
583
+ url: z.ZodURL;
584
+ text: z.ZodString;
585
+ }, z.core.$strip>, z.ZodObject<{
586
+ type: z.ZodLiteral<"cta_copy">;
587
+ copy: z.ZodString;
588
+ text: z.ZodString;
589
+ }, z.core.$strip>, z.ZodObject<{
590
+ type: z.ZodLiteral<"cta_call">;
591
+ text: z.ZodString;
592
+ phoneNumber: z.ZodString;
593
+ }, z.core.$strip>, z.ZodObject<{
594
+ type: z.ZodLiteral<"single_select">;
595
+ text: z.ZodString;
596
+ section: z.ZodArray<z.ZodObject<{
597
+ title: z.ZodString;
598
+ highlight_label: z.ZodOptional<z.ZodString>;
599
+ rows: z.ZodArray<z.ZodObject<{
600
+ id: z.ZodString;
601
+ title: z.ZodString;
602
+ header: z.ZodOptional<z.ZodString>;
603
+ description: z.ZodOptional<z.ZodString>;
604
+ }, z.core.$strip>>;
605
+ }, z.core.$strip>>;
606
+ }, z.core.$strip>]>>;
607
+ }, z.core.$strip>]>;
608
+
383
609
  type ParsedMessage = Partial<z.infer<typeof ListenerMessagesType>>;
384
610
  type CollectorFilter = (msg: ParsedMessage) => boolean;
385
611
  type CollectorCallback = (messages: ParsedMessage[]) => void;
@@ -786,4 +1012,4 @@ declare class SessionWatchdog {
786
1012
  declare const createWatchdog: (options: WatchdogOptions) => SessionWatchdog;
787
1013
  declare const getWatchdog: () => SessionWatchdog | null;
788
1014
 
789
- export { AudioProcessor, type AudioType, Client, DocumentProcessor, ImageProcessor, Lowdb, MediaProcessor, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, SessionWatchdog, StickerProcessor, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, createLowdb, createWatchdog, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaSticker, getWatchdog, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
1015
+ export { AudioProcessor, type AudioType, ButtonInteractiveCallType, ButtonInteractiveCopyType, ButtonInteractiveReplyType, ButtonInteractiveSingleSelectType, ButtonInteractiveType, ButtonInteractiveUrlType, ButtonSimpleType, ButtonType, CitationType, Client, ClientAuthPairingType, ClientAuthQRType, ClientBaseType, ClientOptionsType, DEVICE_ENUM_TYPES, DocumentProcessor, type EventCallbackType, EventEnumType, FakeReplyType, ImageProcessor, LimiterType, ListenerCallsType, ListenerConnectionType, ListenerMessagesType, Lowdb, MESSAGE_ENUM_TYPES, MediaProcessor, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, SessionWatchdog, StickerMetadataType, StickerProcessor, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, createLowdb, createWatchdog, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaSticker, getWatchdog, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
package/dist/index.d.ts CHANGED
@@ -199,6 +199,62 @@ declare const ListenerConnectionType: z.ZodObject<{
199
199
  code: z.ZodOptional<z.ZodString>;
200
200
  }, z.core.$strip>;
201
201
 
202
+ declare const DEVICE_ENUM_TYPES: z.ZodEnum<{
203
+ unknown: "unknown";
204
+ android: "android";
205
+ ios: "ios";
206
+ desktop: "desktop";
207
+ web: "web";
208
+ }>;
209
+ declare const MESSAGE_ENUM_TYPES: z.ZodEnum<{
210
+ text: "text";
211
+ image: "image";
212
+ contact: "contact";
213
+ location: "location";
214
+ document: "document";
215
+ audio: "audio";
216
+ video: "video";
217
+ protocol: "protocol";
218
+ contacts: "contacts";
219
+ highlyStructured: "highlyStructured";
220
+ sendPayment: "sendPayment";
221
+ requestPayment: "requestPayment";
222
+ declinePaymentRequest: "declinePaymentRequest";
223
+ cancelPaymentRequest: "cancelPaymentRequest";
224
+ template: "template";
225
+ sticker: "sticker";
226
+ groupInvite: "groupInvite";
227
+ product: "product";
228
+ deviceSent: "deviceSent";
229
+ lists: "lists";
230
+ viewOnce: "viewOnce";
231
+ order: "order";
232
+ ephemeral: "ephemeral";
233
+ invoice: "invoice";
234
+ buttons: "buttons";
235
+ paymentInvite: "paymentInvite";
236
+ interactive: "interactive";
237
+ reaction: "reaction";
238
+ interactiveResponse: "interactiveResponse";
239
+ pollCreation: "pollCreation";
240
+ pollUpdate: "pollUpdate";
241
+ keepInChat: "keepInChat";
242
+ requestPhoneNumber: "requestPhoneNumber";
243
+ scheduledCallCreation: "scheduledCallCreation";
244
+ groupMentioned: "groupMentioned";
245
+ pinInChat: "pinInChat";
246
+ scheduledCallEdit: "scheduledCallEdit";
247
+ ptv: "ptv";
248
+ botInvoke: "botInvoke";
249
+ callLog: "callLog";
250
+ encComment: "encComment";
251
+ bcall: "bcall";
252
+ lottieSticker: "lottieSticker";
253
+ event: "event";
254
+ comment: "comment";
255
+ placeholder: "placeholder";
256
+ encEventUpdate: "encEventUpdate";
257
+ }>;
202
258
  declare const ListenerMessagesType: z.ZodObject<{
203
259
  channelId: z.ZodString;
204
260
  uniqueId: z.ZodString;
@@ -296,11 +352,66 @@ declare const ListenerMessagesType: z.ZodObject<{
296
352
  replied: z.ZodNullable<z.ZodObject</*elided*/ any, z.core.$strip>>;
297
353
  }, z.core.$strip>;
298
354
 
355
+ declare const LimiterType: z$1.ZodOptional<z$1.ZodObject<{
356
+ maxMessages: z$1.ZodDefault<z$1.ZodNumber>;
357
+ durationMs: z$1.ZodDefault<z$1.ZodNumber>;
358
+ }, z$1.core.$strip>>;
359
+ declare const CitationType: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodFunction<z$1.core.$ZodFunctionArgs, z$1.ZodPromise<z$1.ZodArray<z$1.ZodNumber>>>>>;
360
+ declare const FakeReplyType: z$1.ZodOptional<z$1.ZodObject<{
361
+ provider: z$1.ZodUnion<[z$1.ZodEnum<{
362
+ whatsapp: "whatsapp";
363
+ meta: "meta";
364
+ chatgpt: "chatgpt";
365
+ copilot: "copilot";
366
+ instagram: "instagram";
367
+ tiktok: "tiktok";
368
+ }>, z$1.ZodNumber]>;
369
+ }, z$1.core.$strip>>;
299
370
  declare const StickerMetadataType: z$1.ZodOptional<z$1.ZodObject<{
300
371
  packageName: z$1.ZodString;
301
372
  authorName: z$1.ZodString;
302
373
  quality: z$1.ZodNumber;
303
374
  }, z$1.core.$strip>>;
375
+ declare const ClientBaseType: z$1.ZodObject<{
376
+ session: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodString>>;
377
+ prefix: z$1.ZodOptional<z$1.ZodString>;
378
+ ignoreMe: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
379
+ showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
380
+ syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
381
+ autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
382
+ autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
383
+ autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
384
+ autoRead: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
385
+ autoPresence: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
386
+ autoRejectCall: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
387
+ limiter: z$1.ZodOptional<z$1.ZodObject<{
388
+ maxMessages: z$1.ZodDefault<z$1.ZodNumber>;
389
+ durationMs: z$1.ZodDefault<z$1.ZodNumber>;
390
+ }, z$1.core.$strip>>;
391
+ citation: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodFunction<z$1.core.$ZodFunctionArgs, z$1.ZodPromise<z$1.ZodArray<z$1.ZodNumber>>>>>;
392
+ fakeReply: z$1.ZodOptional<z$1.ZodObject<{
393
+ provider: z$1.ZodUnion<[z$1.ZodEnum<{
394
+ whatsapp: "whatsapp";
395
+ meta: "meta";
396
+ chatgpt: "chatgpt";
397
+ copilot: "copilot";
398
+ instagram: "instagram";
399
+ tiktok: "tiktok";
400
+ }>, z$1.ZodNumber]>;
401
+ }, z$1.core.$strip>>;
402
+ sticker: z$1.ZodOptional<z$1.ZodObject<{
403
+ packageName: z$1.ZodString;
404
+ authorName: z$1.ZodString;
405
+ quality: z$1.ZodNumber;
406
+ }, z$1.core.$strip>>;
407
+ }, z$1.core.$strip>;
408
+ declare const ClientAuthPairingType: z$1.ZodObject<{
409
+ authType: z$1.ZodLiteral<"pairing">;
410
+ phoneNumber: z$1.ZodNumber;
411
+ }, z$1.core.$strip>;
412
+ declare const ClientAuthQRType: z$1.ZodObject<{
413
+ authType: z$1.ZodLiteral<"qr">;
414
+ }, z$1.core.$strip>;
304
415
  declare const ClientOptionsType: z$1.ZodUnion<readonly [z$1.ZodObject<{
305
416
  authType: z$1.ZodLiteral<"pairing">;
306
417
  phoneNumber: z$1.ZodNumber;
@@ -380,6 +491,121 @@ type EventCallbackType = {
380
491
  calls: (ctx: z$1.infer<typeof ListenerCallsType>) => void;
381
492
  };
382
493
 
494
+ declare const ButtonInteractiveReplyType: z.ZodObject<{
495
+ type: z.ZodLiteral<"quick_reply">;
496
+ text: z.ZodString;
497
+ }, z.core.$strip>;
498
+ declare const ButtonInteractiveUrlType: z.ZodObject<{
499
+ type: z.ZodLiteral<"cta_url">;
500
+ url: z.ZodURL;
501
+ text: z.ZodString;
502
+ }, z.core.$strip>;
503
+ declare const ButtonInteractiveCopyType: z.ZodObject<{
504
+ type: z.ZodLiteral<"cta_copy">;
505
+ copy: z.ZodString;
506
+ text: z.ZodString;
507
+ }, z.core.$strip>;
508
+ declare const ButtonInteractiveCallType: z.ZodObject<{
509
+ type: z.ZodLiteral<"cta_call">;
510
+ text: z.ZodString;
511
+ phoneNumber: z.ZodString;
512
+ }, z.core.$strip>;
513
+ declare const ButtonInteractiveSingleSelectType: z.ZodObject<{
514
+ type: z.ZodLiteral<"single_select">;
515
+ text: z.ZodString;
516
+ section: z.ZodArray<z.ZodObject<{
517
+ title: z.ZodString;
518
+ highlight_label: z.ZodOptional<z.ZodString>;
519
+ rows: z.ZodArray<z.ZodObject<{
520
+ id: z.ZodString;
521
+ title: z.ZodString;
522
+ header: z.ZodOptional<z.ZodString>;
523
+ description: z.ZodOptional<z.ZodString>;
524
+ }, z.core.$strip>>;
525
+ }, z.core.$strip>>;
526
+ }, z.core.$strip>;
527
+ declare const ButtonInteractiveType: z.ZodObject<{
528
+ type: z.ZodLiteral<"interactive">;
529
+ footer: z.ZodOptional<z.ZodString>;
530
+ data: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
531
+ type: z.ZodLiteral<"quick_reply">;
532
+ text: z.ZodString;
533
+ }, z.core.$strip>, z.ZodObject<{
534
+ type: z.ZodLiteral<"cta_url">;
535
+ url: z.ZodURL;
536
+ text: z.ZodString;
537
+ }, z.core.$strip>, z.ZodObject<{
538
+ type: z.ZodLiteral<"cta_copy">;
539
+ copy: z.ZodString;
540
+ text: z.ZodString;
541
+ }, z.core.$strip>, z.ZodObject<{
542
+ type: z.ZodLiteral<"cta_call">;
543
+ text: z.ZodString;
544
+ phoneNumber: z.ZodString;
545
+ }, z.core.$strip>, z.ZodObject<{
546
+ type: z.ZodLiteral<"single_select">;
547
+ text: z.ZodString;
548
+ section: z.ZodArray<z.ZodObject<{
549
+ title: z.ZodString;
550
+ highlight_label: z.ZodOptional<z.ZodString>;
551
+ rows: z.ZodArray<z.ZodObject<{
552
+ id: z.ZodString;
553
+ title: z.ZodString;
554
+ header: z.ZodOptional<z.ZodString>;
555
+ description: z.ZodOptional<z.ZodString>;
556
+ }, z.core.$strip>>;
557
+ }, z.core.$strip>>;
558
+ }, z.core.$strip>]>>;
559
+ }, z.core.$strip>;
560
+ declare const ButtonSimpleType: z.ZodObject<{
561
+ type: z.ZodLiteral<"simple">;
562
+ footer: z.ZodOptional<z.ZodString>;
563
+ data: z.ZodArray<z.ZodObject<{
564
+ id: z.ZodString;
565
+ text: z.ZodString;
566
+ }, z.core.$strip>>;
567
+ }, z.core.$strip>;
568
+ declare const ButtonType: z.ZodUnion<readonly [z.ZodObject<{
569
+ type: z.ZodLiteral<"simple">;
570
+ footer: z.ZodOptional<z.ZodString>;
571
+ data: z.ZodArray<z.ZodObject<{
572
+ id: z.ZodString;
573
+ text: z.ZodString;
574
+ }, z.core.$strip>>;
575
+ }, z.core.$strip>, z.ZodObject<{
576
+ type: z.ZodLiteral<"interactive">;
577
+ footer: z.ZodOptional<z.ZodString>;
578
+ data: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
579
+ type: z.ZodLiteral<"quick_reply">;
580
+ text: z.ZodString;
581
+ }, z.core.$strip>, z.ZodObject<{
582
+ type: z.ZodLiteral<"cta_url">;
583
+ url: z.ZodURL;
584
+ text: z.ZodString;
585
+ }, z.core.$strip>, z.ZodObject<{
586
+ type: z.ZodLiteral<"cta_copy">;
587
+ copy: z.ZodString;
588
+ text: z.ZodString;
589
+ }, z.core.$strip>, z.ZodObject<{
590
+ type: z.ZodLiteral<"cta_call">;
591
+ text: z.ZodString;
592
+ phoneNumber: z.ZodString;
593
+ }, z.core.$strip>, z.ZodObject<{
594
+ type: z.ZodLiteral<"single_select">;
595
+ text: z.ZodString;
596
+ section: z.ZodArray<z.ZodObject<{
597
+ title: z.ZodString;
598
+ highlight_label: z.ZodOptional<z.ZodString>;
599
+ rows: z.ZodArray<z.ZodObject<{
600
+ id: z.ZodString;
601
+ title: z.ZodString;
602
+ header: z.ZodOptional<z.ZodString>;
603
+ description: z.ZodOptional<z.ZodString>;
604
+ }, z.core.$strip>>;
605
+ }, z.core.$strip>>;
606
+ }, z.core.$strip>]>>;
607
+ }, z.core.$strip>]>;
608
+
383
609
  type ParsedMessage = Partial<z.infer<typeof ListenerMessagesType>>;
384
610
  type CollectorFilter = (msg: ParsedMessage) => boolean;
385
611
  type CollectorCallback = (messages: ParsedMessage[]) => void;
@@ -786,4 +1012,4 @@ declare class SessionWatchdog {
786
1012
  declare const createWatchdog: (options: WatchdogOptions) => SessionWatchdog;
787
1013
  declare const getWatchdog: () => SessionWatchdog | null;
788
1014
 
789
- export { AudioProcessor, type AudioType, Client, DocumentProcessor, ImageProcessor, Lowdb, MediaProcessor, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, SessionWatchdog, StickerProcessor, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, createLowdb, createWatchdog, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaSticker, getWatchdog, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
1015
+ export { AudioProcessor, type AudioType, ButtonInteractiveCallType, ButtonInteractiveCopyType, ButtonInteractiveReplyType, ButtonInteractiveSingleSelectType, ButtonInteractiveType, ButtonInteractiveUrlType, ButtonSimpleType, ButtonType, CitationType, Client, ClientAuthPairingType, ClientAuthQRType, ClientBaseType, ClientOptionsType, DEVICE_ENUM_TYPES, DocumentProcessor, type EventCallbackType, EventEnumType, FakeReplyType, ImageProcessor, LimiterType, ListenerCallsType, ListenerConnectionType, ListenerMessagesType, Lowdb, MESSAGE_ENUM_TYPES, MediaProcessor, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, SessionWatchdog, StickerMetadataType, StickerProcessor, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, createLowdb, createWatchdog, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaSticker, getWatchdog, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
- 'use strict';var as=require('baileys'),Oe=require('fs/promises'),asyncMutex=require('async-mutex'),Be=require('path'),nanospinner=require('nanospinner'),qe=require('node-cache'),events=require('events'),Bt=require('pino'),st=require('gradient-string'),M=require('lodash'),fileType=require('file-type'),H=require('fluent-ffmpeg'),Ut=require('node-webpmux'),os$1=require('os'),Ne=require('sharp'),qt=require('@ffmpeg-installer/ffmpeg'),Jt=require('@ffprobe-installer/ffprobe'),L=require('fs'),ps=require('figlet'),us=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var as__default=/*#__PURE__*/_interopDefault(as);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var Be__namespace=/*#__PURE__*/_interopNamespace(Be);var qe__default=/*#__PURE__*/_interopDefault(qe);var Bt__default=/*#__PURE__*/_interopDefault(Bt);var st__default=/*#__PURE__*/_interopDefault(st);var M__default=/*#__PURE__*/_interopDefault(M);var H__default=/*#__PURE__*/_interopDefault(H);var Ut__default=/*#__PURE__*/_interopDefault(Ut);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var qt__default=/*#__PURE__*/_interopDefault(qt);var Jt__default=/*#__PURE__*/_interopDefault(Jt);var L__namespace=/*#__PURE__*/_interopNamespace(L);var ps__default=/*#__PURE__*/_interopDefault(ps);var us__default=/*#__PURE__*/_interopDefault(us);var u__default=/*#__PURE__*/_interopDefault(u);var We=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=J(s);return this.cache.set(s,r),r}spinner=nanospinner.createSpinner("",{color:"green"});logger=Bt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new qe__default.default({stdTTL:300,useClones:false});collectors=new Map},o=new We;var y=a=>a,et=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},tt=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Oe__default.default.unlink(e);}catch(e){throw o.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},P=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var v=(a,e="lime")=>Array.isArray(e)?st__default.default(e)(a):st__default.default([e,e])(a),De=a=>{try{return JSON.parse(a)}catch{return M__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},te=a=>{try{return JSON.stringify(a)}catch{let e=M__default.default.attempt(()=>JSON.stringify(De(a)||"{}"));return M__default.default.isError(e)?"{}":e}},ri=(a="")=>M__default.default.shuffle(a).join(""),se=(a="",e="")=>a?M__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,it=(a="")=>a?M__default.default.castArray(a.match(as.URL_REGEX)||[]):[],ni=a=>a[Math.floor(Math.random()*a.length)],A=(a,e)=>{for(let t of a||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},rt=(a,e)=>{let t=M__default.default.castArray(e),s=(n,c)=>M__default.default.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>M__default.default.some(c,(p,l)=>n?.[l]===p),i=n=>M__default.default.isArray(n)?M__default.default.find(n,i)??n:M__default.default.isObject(n)?M__default.default.find(t,l=>s(n,l))||M__default.default.find(t,l=>r(n,l))?n:M__default.default.find(M__default.default.values(n),i)??n:null;return i(a)},oi=(a,e,t)=>new Proxy(a,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var F=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},nt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return M__default.default.toArray(e)},Le=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return M__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},mi=a=>M__default.default.isEmpty(a)?[]:M__default.default.map([...a],e=>`${e}@s.whatsapp.net`),ot=a=>M__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),K=a=>{if(!a)return {leaf:void 0,chain:[]};let e=as.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=as.getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},E=a=>Number(a?.split("@")[0]);H__default.default.setFfmpegPath(qt__default.default.path);H__default.default.setFfprobePath(Jt__default.default.path);var h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},w=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Be__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Oe__default.default.unlink(t)));}static async safeReadFile(e){try{return await Oe__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Oe__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},C=class{static async toBuffer(e){if(M__default.default.isBuffer(e))return e;if(M__default.default.isArrayBuffer(e))return Buffer.from(e);if(M__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},N=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},Z=class{static async process(e){return new Promise((t,s)=>{let r=H__default.default(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{H__default.default.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},ie=class{static async getWaAudio(e,t="opus"){let s=await C.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);N.validate(r,h.MIME.AUDIO);let i=w.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=w.createTempPath("audio_out",n);await w.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Z.process({input:i,output:c,options:l,onEnd:async()=>{p=await w.safeReadFile(c);},onError:async()=>{await w.cleanup([i,c]);}}),await w.cleanup([i,c]),p}catch(l){throw await w.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},W=class{static async getThumbnail(e){let t=await C.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);N.validate(s,h.MIME.VIDEO);let r=w.createTempPath("video","mp4"),i=w.createTempPath("thumb","jpg");await w.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{H__default.default(r).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:Be__namespace.default.basename(i),folder:Be__namespace.default.dirname(i),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await w.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await w.cleanup([r,i]),n}catch(c){throw await w.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Z.getDuration(e)}},re=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===h.MIME.GIF?Ne__default.default(e,{animated:false}):Ne__default.default(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Ne__default.default(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},Q=class{static async getThumbnail(e){let t=await C.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s||!N.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(h.MIME.VIDEO)?W.getThumbnail(e):re.getThumbnail(t)}},ne=class{static createExifMetadata(e){let t={"sticker-pack-id":F(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=w.createTempPath("sticker_in",r),n=w.createTempPath("sticker_out","webp");await w.safeWriteFile(i,e);let c=h.STICKER.MAX_DURATION;try{let b=await W.getDuration(i);c=y(Math.min(b,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let p=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),g;try{return await Z.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{g=await w.safeReadFile(n);},onError:async()=>{await w.cleanup([i,n]);}}),await w.cleanup([i,n]),g}catch(b){throw await w.cleanup([i,n]),new Error(`Animated sticker processing failed: ${b.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await C.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||h.STICKER.DEFAULT_QUALITY,c=N.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await re.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Ut__default.default.Image;await l.load(c),l.exif=p;let g=await l.save(null);return Buffer.isBuffer(g)?g:Buffer.from(g)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},oe=class{static async create(e){try{let t=await C.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:F(Date.now().toString()),jpegThumbnail:await Q.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ae=C.toBuffer.bind(C),at=ie.getWaAudio.bind(ie),Ci=W.getThumbnail.bind(W),Ii=W.getDuration.bind(W),_e=Q.getThumbnail.bind(Q),ct=ne.create.bind(ne),pt=oe.create.bind(oe);var ut=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ce=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await L.promises.readFile(e,"utf-8"),s=JSON.parse(t),r=["sender-key:","session:"],i={},n=!1;for(let[c,p]of Object.entries(s))r.some(g=>c.startsWith(g))?n=!0:i[c]=p;n&&(await L.promises.writeFile(e,JSON.stringify(i,null,2)),o.spinner.success(" Session keys repaired successfully"));}catch{o.spinner.warn(" Could not repair session keys, will re-negotiate");}},mt=()=>{let a=o.get("socket");return a?.end?a:null};var Gt=6e4,Kt=12e4,Ht=6e4,Zt=3,$e=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Gt,staleThresholdMs:Kt,cooldownMs:Ht,maxRetries:Zt,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),o.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=o.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){o.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){o.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{o.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=o.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),o.spinner.success(" Session health check passed");return}catch{}await ce(this.options.session),o.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{o.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){o.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},Y=null,dt=a=>(Y&&Y.stop(),Y=new $e(a),Y),Ni=()=>Y;var Ue=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new asyncMutex.Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new asyncMutex.Mutex,this.kLocks.set(e,t);}return t}},Ve=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=Ue.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await Oe.readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await Oe.mkdir(Be.dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await Oe.writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async upsert(e,t,s="key.id"){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let i=this.data.get(e),n;Array.isArray(i)?n=i:i===void 0?n=[]:n=[i];let c=M__default.default.get(t,s);if(c){let p=n.findIndex(l=>M__default.default.get(l,s)===c);p>=0?n[p]=t:n.push(t);}else n.push(t);this.data.set(e,n),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return rt(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await Oe.mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,g=Math.min(l+this.size,r.length),b=r.subarray(l,g);c.push(Oe.writeFile(Be.join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:b.toString("base64")})));}return c.push(Oe.writeFile(Be.join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=Be.join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await Oe.readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(Oe.readFile(Be.join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(g=>Buffer.from(JSON.parse(g).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(Oe.unlink(Be.join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(Oe.unlink(Be.join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await Oe.readdir(this.chunkDir)).length===0&&await Oe.rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},J=(a,e)=>new Ve(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var wt=async a=>{o.spinner.start(" Initializing auth state...");let e=await Oe.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw o.spinner.error(` Failed to open credentials
2
- `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await Oe.mkdir(a,{recursive:true});let t=J(`${a}/auth/creds.json`,{BufferJSON:as.BufferJSON}),s=J(`${a}/auth/keys.json`,{BufferJSON:as.BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||as.initAuthCreds();return o.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,g=await s.get(l);i==="app-state-sync-key"&&g&&(g=as.proto.Message.AppStateSyncKeyData.fromObject(g)),c[p]=g;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],g=`${c}:${p}`;l?n.push(s.set(g,l)):n.push(s.delete(g).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var os=new qe__default.default,vt=(a,e)=>({logger:o.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new qe__default.default,mediaCache:new qe__default.default({stdTTL:60}),cachedGroupMetadata:async t=>os.get(t),shouldIgnoreJid:t=>as.isJidBroadcast(t),auth:{creds:e.creds,keys:as.makeCacheableSignalKeyStore(e.keys,o.logger)},getMessage:async t=>{if(t?.id)return await a.db("messages").get(t.id)}});var Mt=async a=>{let e=mt();e&&ut(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:r}=await wt(t),i=vt(a,s),n=as__default.default(i);n.ev.on("creds.update",r),o.set("socket",n);};var pe=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=o.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),o.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=o.get("socket"),s={};return s.callId=e.id,s.callerId=as.jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=as.jidNormalizedUser(e.chatId),s.roomName=P(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var le={version:"2.0.9",author:"zaadevofc"};var bt=a=>{us__default.default.generate(a,{small:true},e=>{console.log(e);});},Tt=async()=>{console.clear(),o.spinner.start(" Checking for updates...");let a=await et(),e=le.version===a;o.spinner.stop();let t="Zaileys",s=`
3
- by ${le.author} \xB7 v${le.version}`,r=`${e?"Already using latest version!":`Update available! (v${a})`}
4
- `,i=e?"lime":"orange",n=await ps__default.default.text(t),c=st.cristal(n);console.log(c),console.log(v(s,"dimgray")),console.log(v(r,i));};var de=class{constructor(e){this.client=e;this.initialize();}async initialize(){o.spinner.start(" Initializing connection...");let e=o.get("socket"),t={},s=async()=>{t.status="reload",o.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await as.delay(3e3),o.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await as.delay(3e3),await tt(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){o.spinner.update(" Generating pairing code..."),await as.delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());o.spinner.warn(` Pairing expired at ${st.cristal(i)}`),o.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:p}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,o.spinner.update(" Connection status: "+st.cristal(t.status)),this.client.options.authType==="qr"&&p){t.authTimeout=Date.now()+6e4;let l=new Date(t.authTimeout).toLocaleTimeString();o.spinner.warn(" Please scan the QR code..."),o.spinner.warn(` Qr code expired at ${st.cristal(l)}`),bt(p),t.qr=p;return}if(n==="close"){let l=y(c?.error)?.output?.statusCode,g=c?.error?.message||"",b=typeof l=="number"&&l!==as.DisconnectReason.loggedOut,O=l===515||g.toLowerCase().includes("prekey");if(o.spinner.error(` [${l} - Closed] ${g}`),O){o.spinner.warn(" Session key mismatch detected, attempting repair..."),await ce(this.client.options.session),await as.delay(1e3),await s();return}if(l===401||l===405){o.spinner.warn(" Session may be used by another device/instance."),o.spinner.warn(" If you want to connect here, close the other connection first."),o.spinner.warn(` Or use a different session name in your Client options.
5
- `);return}if(l===500){o.spinner.error(" Server error occurred, attempting reconnect..."),await s();return}b&&await s();}if(n==="open")if(e.user?.id){let l=as.jidNormalizedUser(e.user.id).split("@")[0],g=e.user.name||e.user.verifiedName;o.spinner.success(` Connected as ${st.cristal(g||l)}`);}else o.spinner.success(" Connected!");o.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,o.spinner.start(" Syncing messages history..."),i&&o.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(o.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),o.events.emit("connection",t);});}};var xt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Je={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var fe=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var ye=class{constructor(e){this.client=e;this.limiter=new fe(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=o.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),o.set("message",i),o.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=o.get("socket"),i={},n=K(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=K(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=xt[c],i.receiverId=as.jidNormalizedUser(r?.user?.id||""),i.receiverName=P(r?.user?.name||r?.user?.verifiedName),i.roomId=as.jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,g=p?.type===1,b=p?.type===2,O=i.roomId?.includes("@newsletter"),Re=!!e?.message?.questionMessage,$=e?.key?.fromMe||false;if($&&this.client.options.ignoreMe&&t!=="replied")return;let Pe=p?.key?.id;if(l||g||b){let T=(await this.client.db("messages").get(i.roomId))?.find(D=>D.key.id===Pe);if(!T)return;e=T,n=K(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=A([e?.key],["remoteJidAlt","participant"])||null,i.senderId=as.jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=P(e?.pushName||e?.verifiedBizName),i.senderDevice=as.getDevice(i.chatId),i.channelId=F([i.roomId,i.senderId]),i.uniqueId=F([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,O){let x=await r.newsletterMetadata("jid",i.roomId);i.roomName=y(x.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if($&&(i.senderLid=as.jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=De(p?.paramsJson)?.id),i.text=P(i.text),i.mentions=nt(i.text),i.links=it(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=$,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isPrefix&&(i.text=i.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=O,i.isQuestion=Re,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!se(te(n),"editedMessage"),i.isDeleted=l,i.isPinned=g,i.isUnPinned=b,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!se(te(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!se(te(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let x=this.client.options.citation;for(let T of Object.keys(x)){let D=x[T];i.citation[T]=async()=>{let V=await D(),Ee=[E(i.roomId),E(i.senderLid),E(i.senderId)];return !!M__default.default.intersection(Ee,V).length};}}i.chatType!=="text"&&(i.media={...ot(p),buffer:()=>as.downloadMediaMessage(e,"buffer",{}),stream:()=>as.downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let z=p?.contextInfo?.quotedMessage,j=A([z],["viewOnceMessageV2Extension","viewOnceMessage"]),U=p?.contextInfo?.stanzaId;if(z&&this.maxReplies){this.maxReplies--;let T=(await this.client.db("messages").get(i.roomId))?.find(V=>V.key.id===U),D={...T,...K(j).leaf};j?(i.replied=await this.parse(D,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(T,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var he=class{constructor(e){this.client=e;this.connection=new de(e),this.messages=new ye(e),this.calls=new pe(e),this.initialize();}connection;messages;calls;async initialize(){let e=o.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").upsert(n.id,n,"id");for(let n of r)await this.client.db("contacts").upsert(n.id,n,"id");for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(s.key.remoteJid,s,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").upsert(s.id,s,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").upsert(s.id,s,"id");});}};var X=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var hs=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),ks=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),ws=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),vs=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),Ms=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),Ss=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([hs,ks,ws,vs,Ms]).array()}),bs=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),Ct=u__default.default.union([bs,Ss]);var ee=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),It=u__default.default.object({text:u__default.default.string()}).passthrough(),Ts=u__default.default.object({image:ee,caption:u__default.default.string().optional()}).passthrough(),xs=u__default.default.object({audio:ee,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),As=u__default.default.object({video:ee,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),Cs=u__default.default.object({sticker:ee,caption:u__default.default.string().optional()}).passthrough(),Is=u__default.default.object({document:ee,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),Rs=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),Ps=u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()}),Es=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),Rt=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:Ct.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Ws=u__default.default.union([It,Ts,xs,As,Cs,Is,Rs,Ps,Es]),Pt=u__default.default.string().or(u__default.default.intersection(Ws,Rt.omit({buttons:true}))),Et=u__default.default.intersection(It,Rt.omit({banner:true}));var ke=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=y(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=o.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=as.generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:as.generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!as.isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var we=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=X(Et,t):t=X(Pt,t));let i=o.get("socket"),n={},c={},p=M__default.default.isString(t),l=this.client.options?.fakeReply?.provider,g=this.client.options?.autoMentions,b=this.client.options?.autoPresence,O=M__default.default.has(t,"replied"),Re=M__default.default.has(t,"banner"),$=M__default.default.has(t,"isViewOnce"),Pe=s=="button",z=M__default.default.has(t,"image"),j=M__default.default.has(t,"video"),U=M__default.default.has(t,"audio"),x=M__default.default.has(t,"sticker"),T=M__default.default.has(t,"document"),D=M__default.default.has(t,"location"),V=M__default.default.has(t,"contacts"),Ee=M__default.default.has(t,"poll"),Ye=z||j||U||x||T,q=p?t:A([t],["text","caption"]);if(b&&(U?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),g&&(n={...n,mentions:Le(q),contextInfo:{mentionedJid:Le(q)}}),O&&(c.quoted=y(t).replied,l&&(c.quoted.key.remoteJid=Je[l],c.quoted.key.participant=Je[l])),Re&&(n={...n,contextInfo:{externalAdReply:y(t).banner}},n.contextInfo.externalAdReply.mediaType=1),$&&(n={...n,viewOnce:y(t)?.isViewOnce}),q&&(n={...n,text:q,caption:q},Ye&&delete y(n).text),Ye){let k=A([t],["image","video","audio","sticker","document"]),I=M__default.default.isString(k)?{url:k}:k;if(z&&(n={...n,image:I,jpegThumbnail:await _e(k)}),j){let R=y(t)?.ptv;n={...n,video:I,ptv:R,jpegThumbnail:await _e(k)};}if(U){let R=y(t)?.ptt;n={...n,audio:await at(k),ptt:R,mimetype:R?"audio/ogg; codecs=opus":"audio/mpeg"};}if(x&&(n={...n,sticker:await ct(k,this.client.options?.sticker)}),T){let R=await pt(k);n={...n,fileName:y(t).fileName,...R};}}if(D){let k=y(t).location;n={...n,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(V){let k=y(t)?.contacts,Xe=k?.contacts.map(I=>{let R=["BEGIN:VCARD","VERSION:3.0",`FN:${I.fullname}`,`ORG:${I.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${I.phoneNumber}:${I.phoneNumber}`,"END:VCARD"].join(`
6
- `);return {displayName:I.fullname,vcard:R}});n={...n,contacts:{displayName:k?.title,contacts:Xe}};}if(Ee){let k=y(t)?.poll;n={...n,poll:{name:k.name,values:k.answers,selectableCount:k.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(n={...n,contextInfo:{...y(n).contextInfo,isForwarded:true,forwardingScore:y(t).isForwardedMany?9999:1}}),s=="edit"&&(n={...n,edit:r?.key},await i.sendPresenceUpdate("paused",e)),s=="delete"&&(n={...n,delete:r?.key},await i.sendPresenceUpdate("paused",e)),Pe?await new ke().send(e,t,c):await i.sendMessage(e,y(n),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return M__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let s=o.get("socket"),r={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(r[t],e)}async reaction(e,t){return await o.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await o.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").groupCreate(e,t)}async participant(e,t,s){return await o.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "subject":if(!i)return await r.groupUpdateSubject(e,t);case "description":if(!i)return await r.groupUpdateDescription(e,t);case "picture":return await r.updateProfilePicture(e,ae(t))}}async setting(e,t){let s=o.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await o.get("socket").groupLeave(e)}async inviteCode(e,t){let s=o.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await o.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let r=o.get("socket");switch(s){case "approve":return await r.groupRequestParticipantsUpdate(e,t,s);case "reject":return await r.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await o.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await o.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=o.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,r[t])}},ve=class{constructor(e){this.glient=e;this.group=new Ge(e);}group};var Fs=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),Ns=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),Bs=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),_s=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number()}).optional(),Wt=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:Fs,citation:Ns,fakeReply:Bs,sticker:_s}),$s=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),zs=u.z.object({authType:u.z.literal("qr")}),Dt=u.z.union([$s.extend(Wt.shape),zs.extend(Wt.shape)]);u.z.enum(["connection","messages","calls"]);var Me=class{collect(e,t,s){let r=t.max??1/0;if(r<=0){s([]);return}let i=o.collectors.get(e);i&&(clearTimeout(i.timeoutId),i.callback(i.messages),o.collectors.delete(e));let n=setTimeout(()=>{let c=o.collectors.get(e);c&&(c.callback(c.messages),o.collectors.delete(e));},t.timeout);o.collectors.set(e,{messages:[],max:r,filter:t.filter,callback:s,timeoutId:n});}push(e){let t=o.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e.channelId)),true)}has(e){return o.collectors.has(e)}cancel(e){let t=o.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e),t.messages):[]}};var Se=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,o.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),o.spinner.info("Logs Indicator:"),console.log(v(" \u2022","orange")+" Private Chat"),console.log(v(" \u2022","lime")+" Group Chat"),console.log(v(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=y(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),r=v(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),i=v(`${e?.roomName}`,t),n=e?.text?.slice(0,300)||"",c=n?.length>=300?"...":"",p=`${r} \u2192 ${i}
7
- `;e?.isNewsletter?p+=`${v("[room]","dimgray")} \u2192 ${v(`${e?.roomName} (${E(e?.roomId)})`,t)}
8
- `:p+=`${v("[sender]","dimgray")} \u2192 ${v(`${e?.senderName} (${E(e?.senderId)})`,t)}
9
- `,p+=`${v(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${v(n+c,s?["#ff5f6d","#ffc371"]:"brown")}
10
- `,p+="\u2014",console.log(p);}call(e){if(!o.get("logs")?.ready)return;let t=y(this.getRoomColor(e)),s=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=v(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
11
- `;i+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${E(e?.callerId)})`,t)}
12
- `,i+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,i+="\u2014",console.log(i);}};var be=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var Te=class{plugins=[];pluginsDir;constructor(e=Be__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!L__namespace.existsSync(e))return t;let s=L__namespace.readdirSync(e);for(let r of s){let i=Be__namespace.join(e,r);L__namespace.statSync(i).isDirectory()?this.getAllFiles(i,t):(r.endsWith(".ts")||r.endsWith(".js"))&&!r.endsWith(".d.ts")&&t.push(i);}return t}async load(){if(!L__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let r=(await import(url.pathToFileURL(t).href)).default;r?.default&&(r=r.default),r?.handler&&r?.config&&this.plugins.push(r);}catch{}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},ko=(a,e)=>({handler:a,config:e});var xe=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var He=class{constructor(e){this.client=e;}async block(e){return await o.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await o.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await o.get("socket").updateLastSeenPrivacy(e)}async online(e){return await o.get("socket").updateOnlinePrivacy(e)}async picture(e){return await o.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await o.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await o.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await o.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=o.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await o.get("socket").fetchBlocklist()}async getSettings(){return await o.get("socket").fetchPrivacySettings(true)}},Ae=class{constructor(e){this.plient=e;this.privacy=new He(e);}privacy};var Ze=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").newsletterCreate(e,t)}async action(e,t){let s=o.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ae(t))}}async metadata(e,t){return await o.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await o.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await o.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=o.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await o.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await o.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await o.get("socket").newsletterDemote(e,t)}async delete(e){return await o.get("socket").newsletterDelete(e)}async removePicture(e){return await o.get("socket").newsletterRemovePicture(e)}},Ce=class{constructor(e){this.nlient=e;this.newsletter=new Ze(e);}newsletter};var Qe=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await o.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await o.get("socket").communityLeave(e)}async metadata(e){return await o.get("socket").communityMetadata(e)}async update(e,t,s){let r=o.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=o.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=o.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,y(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,y(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=o.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=o.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Ie=class{constructor(e){this.mlient=e;this.community=new Qe(e);}community};var Lt=class{constructor(e){this.options=e;this.options=X(Dt,e);let t=new xe().classInjection(this,[new we(this),new ve(this),new Ae(this),new Ce(this),new Ie(this)]);return this._ready=this.initialize(t),t}listener;_ready;watchdog=null;logs;collector=new Me;middleware=new be;plugins=new Te;async initialize(e){await Tt(),await Mt(this),await this.plugins.load(),this.listener=new he(e||this),this.logs=new Se(this),this.watchdog=dt({session:this.options.session,checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3,onRecovery:async()=>{await this.initialize(e);}}),this.watchdog.start(),this.setupPrekeyErrorDetection();}prekeyDetected=false;setupPrekeyErrorDetection(){let e=console.log,t=this.watchdog,s=this;console.log=(...r)=>{let i=r.map(n=>String(n)).join(" ").toLowerCase();return (i.includes("closing open session")||i.includes("prekey bundle"))&&!s.prekeyDetected&&(s.prekeyDetected=true,o.spinner.warn(" Prekey bundle error detected"),t?.forceRecovery(),setTimeout(()=>{s.prekeyDetected=false;},6e4)),e.apply(console,r)};}ready(){return this._ready}db(e){return o.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){o.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=A(t,["name","verifiedName"]),i=A(s,["notify","name"]);return P(r||i)||null}};
1
+ 'use strict';var ps=require('baileys'),Be=require('fs/promises'),asyncMutex=require('async-mutex'),je=require('path'),nanospinner=require('nanospinner'),Ke=require('node-cache'),events=require('events'),jt=require('pino'),nt=require('gradient-string'),b=require('lodash'),fileType=require('file-type'),X=require('fluent-ffmpeg'),Jt=require('node-webpmux'),os=require('os'),ze=require('sharp'),Kt=require('@ffmpeg-installer/ffmpeg'),Ht=require('@ffprobe-installer/ffprobe'),_=require('fs'),ms=require('figlet'),fs=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ps__default=/*#__PURE__*/_interopDefault(ps);var Be__default=/*#__PURE__*/_interopDefault(Be);var je__namespace=/*#__PURE__*/_interopNamespace(je);var Ke__default=/*#__PURE__*/_interopDefault(Ke);var jt__default=/*#__PURE__*/_interopDefault(jt);var nt__default=/*#__PURE__*/_interopDefault(nt);var b__default=/*#__PURE__*/_interopDefault(b);var X__default=/*#__PURE__*/_interopDefault(X);var Jt__default=/*#__PURE__*/_interopDefault(Jt);var ze__default=/*#__PURE__*/_interopDefault(ze);var Kt__default=/*#__PURE__*/_interopDefault(Kt);var Ht__default=/*#__PURE__*/_interopDefault(Ht);var ___namespace=/*#__PURE__*/_interopNamespace(_);var ms__default=/*#__PURE__*/_interopDefault(ms);var fs__default=/*#__PURE__*/_interopDefault(fs);var u__default=/*#__PURE__*/_interopDefault(u);var Oe=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=H(s);return this.cache.set(s,r),r}spinner=nanospinner.createSpinner("",{color:"green"});logger=jt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Ke__default.default({stdTTL:300,useClones:false});collectors=new Map},o=new Oe;var h=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},rt=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Be__default.default.unlink(e);}catch(e){throw o.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},W=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var M=(a,e="lime")=>Array.isArray(e)?nt__default.default(e)(a):nt__default.default([e,e])(a),Ne=a=>{try{return JSON.parse(a)}catch{return b__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},Z=a=>{try{return JSON.stringify(a)}catch{let e=b__default.default.attempt(()=>JSON.stringify(Ne(a)||"{}"));return b__default.default.isError(e)?"{}":e}},pi=(a="")=>b__default.default.shuffle(a).join(""),Q=(a="",e="")=>a?b__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,ot=(a="")=>a?b__default.default.castArray(a.match(ps.URL_REGEX)||[]):[],ui=a=>a[Math.floor(Math.random()*a.length)],I=(a,e)=>{for(let t of a||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},at=(a,e)=>{let t=b__default.default.castArray(e),s=(n,c)=>b__default.default.every(c,(l,p)=>n?.[p]===l),r=(n,c)=>b__default.default.some(c,(l,p)=>n?.[p]===l),i=n=>b__default.default.isArray(n)?b__default.default.find(n,i)??n:b__default.default.isObject(n)?b__default.default.find(t,p=>s(n,p))||b__default.default.find(t,p=>r(n,p))?n:b__default.default.find(b__default.default.values(n),i)??n:null;return i(a)},mi=(a,e,t)=>new Proxy(a,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var j=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},ct=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return b__default.default.toArray(e)},Fe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return b__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ki=a=>b__default.default.isEmpty(a)?[]:b__default.default.map([...a],e=>`${e}@s.whatsapp.net`),lt=a=>b__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),ne=a=>{if(!a)return {leaf:void 0,chain:[]};let e=ps.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=ps.getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},L=a=>Number(a?.split("@")[0]);X__default.default.setFfmpegPath(Kt__default.default.path);X__default.default.setFfprobePath(Ht__default.default.path);var k={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},v=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__namespace.default.join(os.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Be__default.default.unlink(t)));}static async safeReadFile(e){try{return await Be__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Be__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},R=class{static async toBuffer(e){if(b__default.default.isBuffer(e))return e;if(b__default.default.isArrayBuffer(e))return Buffer.from(e);if(b__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},$=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(k.MIME.IMAGE)||e.startsWith(k.MIME.VIDEO)}static isAnimated(e){return e===k.MIME.GIF||e.startsWith(k.MIME.VIDEO)}},ee=class{static async process(e){return new Promise((t,s)=>{let r=X__default.default(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{X__default.default.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},oe=class{static async getWaAudio(e,t="opus"){let s=await R.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);$.validate(r,k.MIME.AUDIO);let i=v.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=v.createTempPath("audio_out",n);await v.safeWriteFile(i,s);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await ee.process({input:i,output:c,options:p,onEnd:async()=>{l=await v.safeReadFile(c);},onError:async()=>{await v.cleanup([i,c]);}}),await v.cleanup([i,c]),l}catch(p){throw await v.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},D=class{static async getThumbnail(e){let t=await R.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);$.validate(s,k.MIME.VIDEO);let r=v.createTempPath("video","mp4"),i=v.createTempPath("thumb","jpg");await v.safeWriteFile(r,t);let n;try{return await new Promise((c,l)=>{X__default.default(r).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:je__namespace.default.basename(i),folder:je__namespace.default.dirname(i),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await v.safeReadFile(i)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await v.cleanup([r,i]),n}catch(c){throw await v.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return ee.getDuration(e)}},ae=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===k.MIME.GIF?ze__default.default(e,{animated:false}):ze__default.default(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return ze__default.default(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},te=class{static async getThumbnail(e){let t=await R.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s||!$.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(k.MIME.VIDEO)?D.getThumbnail(e):ae.getThumbnail(t)}},ce=class{static createExifMetadata(e){let t={"sticker-pack-id":j(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=v.createTempPath("sticker_in",r),n=v.createTempPath("sticker_out","webp");await v.safeWriteFile(i,e);let c=k.STICKER.MAX_DURATION;try{let x=await D.getDuration(i);c=h(Math.min(x,k.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",k.STICKER.MAX_DURATION);}let l=`scale=${k.STICKER.SIZE}:${k.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${k.STICKER.SIZE}:${k.STICKER.SIZE},fps=${k.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-s)),y;try{return await ee.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${k.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{y=await v.safeReadFile(n);},onError:async()=>{await v.cleanup([i,n]);}}),await v.cleanup([i,n]),y}catch(x){throw await v.cleanup([i,n]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===k.MIME.GIF?"gif":e.startsWith(k.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await R.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||k.STICKER.DEFAULT_QUALITY,c=$.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await ae.resizeForSticker(s,i),l=this.createExifMetadata(t),p=new Jt__default.default.Image;await p.load(c),p.exif=l;let y=await p.save(null);return Buffer.isBuffer(y)?y:Buffer.from(y)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},le=class{static async create(e){try{let t=await R.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:j(Date.now().toString()),jpegThumbnail:await te.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},pe=R.toBuffer.bind(R),pt=oe.getWaAudio.bind(oe),Li=D.getThumbnail.bind(D),Di=D.getDuration.bind(D),$e=te.getThumbnail.bind(te),ut=ce.create.bind(ce),mt=le.create.bind(le);var ft=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ue=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await _.promises.readFile(e,"utf-8"),s=JSON.parse(t),r=["sender-key:","session:"],i={},n=!1;for(let[c,l]of Object.entries(s))r.some(y=>c.startsWith(y))?n=!0:i[c]=l;n&&(await _.promises.writeFile(e,JSON.stringify(i,null,2)),o.spinner.success(" Session keys repaired successfully"));}catch{o.spinner.warn(" Could not repair session keys, will re-negotiate");}},gt=()=>{let a=o.get("socket");return a?.end?a:null};var Zt=6e4,Qt=12e4,Yt=6e4,Xt=3,Ue=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Zt,staleThresholdMs:Qt,cooldownMs:Yt,maxRetries:Xt,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),o.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=o.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){o.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){o.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{o.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=o.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),o.spinner.success(" Session health check passed");return}catch{}await ue(this.options.session),o.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{o.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){o.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},se=null,yt=a=>(se&&se.stop(),se=new Ue(a),se),Ui=()=>se;var Je=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new asyncMutex.Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new asyncMutex.Mutex,this.kLocks.set(e,t);}return t}},Ge=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=Je.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await Be.readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await Be.mkdir(je.dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(l=>{t[i]=l;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await Be.writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async upsert(e,t,s="key.id"){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let i=this.data.get(e),n;Array.isArray(i)?n=i:i===void 0?n=[]:n=[i];let c=b__default.default.get(t,s);if(c){let l=n.findIndex(p=>b__default.default.get(p,s)===c);l>=0?n[l]=t:n.push(t);}else n.push(t);this.data.set(e,n),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return at(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await Be.mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let l=0;l<i;l++){let p=l*this.size,y=Math.min(p+this.size,r.length),x=r.subarray(p,y);c.push(Be.writeFile(je.join(this.chunkDir,`${e}.${l}.json`),JSON.stringify({i:l,d:x.toString("base64")})));}return c.push(Be.writeFile(je.join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=je.join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await Be.readFile(s,"utf-8")),i=[];for(let p=0;p<r.t;p++)i.push(Be.readFile(je.join(this.chunkDir,`${e}.${p}.json`),"utf-8").then(y=>Buffer.from(JSON.parse(y).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),l=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,l);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(Be.unlink(je.join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(Be.unlink(je.join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await Be.readdir(this.chunkDir)).length===0&&await Be.rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},H=(a,e)=>new Ge(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var bt=async a=>{o.spinner.start(" Initializing auth state...");let e=await Be.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw o.spinner.error(` Failed to open credentials
2
+ `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await Be.mkdir(a,{recursive:true});let t=H(`${a}/auth/creds.json`,{BufferJSON:ps.BufferJSON}),s=H(`${a}/auth/keys.json`,{BufferJSON:ps.BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||ps.initAuthCreds();return o.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async l=>{let p=`${i}:${l}`,y=await s.get(p);i==="app-state-sync-key"&&y&&(y=ps.proto.Message.AppStateSyncKeyData.fromObject(y)),c[l]=y;})),c},set:async i=>{let n=[];for(let c in i)for(let l in i[c]){let p=i[c][l],y=`${c}:${l}`;p?n.push(s.set(y,p)):n.push(s.delete(y).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var ls=new Ke__default.default,St=(a,e)=>({logger:o.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Ke__default.default,mediaCache:new Ke__default.default({stdTTL:60}),cachedGroupMetadata:async t=>ls.get(t),shouldIgnoreJid:t=>ps.isJidBroadcast(t),auth:{creds:e.creds,keys:ps.makeCacheableSignalKeyStore(e.keys,o.logger)},getMessage:async t=>{if(t?.id)return await a.db("messages").get(t.id)}});var xt=async a=>{let e=gt();e&&ft(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:r}=await bt(t),i=St(a,s),n=ps__default.default(i);n.ev.on("creds.update",r),o.set("socket",n);};var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=o.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),o.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=o.get("socket"),s={};return s.callId=e.id,s.callerId=ps.jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=ps.jidNormalizedUser(e.chatId),s.roomName=W(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var de={version:"2.0.11",author:"zaadevofc"};var At=a=>{fs__default.default.generate(a,{small:true},e=>{console.log(e);});},Ct=async()=>{console.clear(),o.spinner.start(" Checking for updates...");let a=await it(),e=de.version===a;o.spinner.stop();let t="Zaileys",s=`
3
+ by ${de.author} \xB7 v${de.version}`,r=`${e?"Already using latest version!":`Update available! (v${a})`}
4
+ `,i=e?"lime":"orange",n=await ms__default.default.text(t),c=nt.cristal(n);console.log(c),console.log(M(s,"dimgray")),console.log(M(r,i));};var ye=class{constructor(e){this.client=e;this.initialize();}async initialize(){o.spinner.start(" Initializing connection...");let e=o.get("socket"),t={},s=async()=>{t.status="reload",o.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await ps.delay(3e3),o.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await ps.delay(3e3),await rt(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){o.spinner.update(" Generating pairing code..."),await ps.delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());o.spinner.warn(` Pairing expired at ${nt.cristal(i)}`),o.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:l}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,o.spinner.update(" Connection status: "+nt.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();o.spinner.warn(" Please scan the QR code..."),o.spinner.warn(` Qr code expired at ${nt.cristal(p)}`),At(l),t.qr=l;return}if(n==="close"){let p=h(c?.error)?.output?.statusCode,y=c?.error?.message||"",x=typeof p=="number"&&p!==ps.DisconnectReason.loggedOut,z=p===515||y.toLowerCase().includes("prekey");if(o.spinner.error(` [${p} - Closed] ${y}`),z){o.spinner.warn(" Session key mismatch detected, attempting repair..."),await ue(this.client.options.session),await ps.delay(1e3),await s();return}if(p===401||p===405){o.spinner.warn(" Session may be used by another device/instance."),o.spinner.warn(" If you want to connect here, close the other connection first."),o.spinner.warn(` Or use a different session name in your Client options.
5
+ `);return}if(p===500){o.spinner.error(" Server error occurred, attempting reconnect..."),await s();return}x&&await s();}if(n==="open")if(e.user?.id){let p=ps.jidNormalizedUser(e.user.id).split("@")[0],y=e.user.name||e.user.verifiedName;o.spinner.success(` Connected as ${nt.cristal(y||p)}`);}else o.spinner.success(" Connected!");o.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,o.spinner.start(" Syncing messages history..."),i&&o.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(o.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),o.events.emit("connection",t);});}};var It={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},He={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var he=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var we=class{constructor(e){this.client=e;this.limiter=new he(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=o.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),o.set("message",i),o.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=o.get("socket"),i={},n=ne(e.message),c=n.chain.at(-1),l=n.leaf;l?.message&&(n=ne(l.message),c=n.chain.at(-1),l=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=It[c],i.receiverId=ps.jidNormalizedUser(r?.user?.id||""),i.receiverName=W(r?.user?.name||r?.user?.verifiedName),i.roomId=ps.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,y=l?.type===1,x=l?.type===2,z=i.roomId?.includes("@newsletter"),We=!!e?.message?.questionMessage,V=e?.key?.fromMe||false;if(V&&this.client.options.ignoreMe&&t!=="replied")return;let Le=l?.key?.id;if(p||y||x){let T=(await this.client.db("messages").get(i.roomId))?.find(B=>B.key.id===Le);if(!T)return;e=T,n=ne(e.message),c=n.chain.at(-1),l=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=I([e?.key],["remoteJidAlt","participant"])||null,i.senderId=ps.jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=W(e?.pushName||e?.verifiedBizName),i.senderDevice=ps.getDevice(i.chatId),i.channelId=j([i.roomId,i.senderId]),i.uniqueId=j([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,z){let C=await r.newsletterMetadata("jid",i.roomId);i.roomName=h(C.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(V&&(i.senderLid=ps.jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(i.text=Ne(l?.paramsJson)?.id),i.text=W(i.text),i.mentions=ct(i.text),i.links=ot(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=V,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isPrefix&&(i.text=i.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=z,i.isQuestion=We,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!Q(Z(n),"editedMessage"),i.isDeleted=p,i.isPinned=y,i.isUnPinned=x,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!Q(Z(l?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!Q(Z(l?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let C=this.client.options.citation;for(let T of Object.keys(C)){let B=C[T];i.citation[T]=async()=>{let G=await B(),De=[L(i.roomId),L(i.senderLid),L(i.senderId)];return !!b__default.default.intersection(De,G).length};}}i.chatType!=="text"&&(i.media={...lt(l),buffer:()=>ps.downloadMediaMessage(e,"buffer",{}),stream:()=>ps.downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let N=l?.contextInfo?.quotedMessage,F=I([N],["viewOnceMessageV2Extension","viewOnceMessage"]);F=Q(Z(N),"viewOnce")?N:F;let J=l?.contextInfo?.stanzaId;if(N&&this.maxReplies){this.maxReplies--;let T=(await this.client.db("messages").get(i.roomId))?.find(G=>G.key.id===J),B={...T,message:F};F?(i.replied=await this.parse(B,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(T,"replied"),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(i),i}};var ve=class{constructor(e){this.client=e;this.connection=new ye(e),this.messages=new we(e),this.calls=new me(e),this.initialize();}connection;messages;calls;async initialize(){let e=o.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").upsert(n.id,n,"id");for(let n of r)await this.client.db("contacts").upsert(n.id,n,"id");for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(s.key.remoteJid,s,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").upsert(s.id,s,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").upsert(s.id,s,"id");});}};var ie=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var vs=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),Ms=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),bs=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),Ss=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),xs=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),Ts=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([vs,Ms,bs,Ss,xs]).array()}),As=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),Pt=u__default.default.union([As,Ts]);var re=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Et=u__default.default.object({text:u__default.default.string()}).passthrough(),Cs=u__default.default.object({image:re,caption:u__default.default.string().optional()}).passthrough(),Is=u__default.default.object({audio:re,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),Rs=u__default.default.object({video:re,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),Ps=u__default.default.object({sticker:re,caption:u__default.default.string().optional()}).passthrough(),Es=u__default.default.object({document:re,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),Ws=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),Ls=u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()}),Ds=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),Wt=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:Pt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Os=u__default.default.union([Et,Cs,Is,Rs,Ps,Es,Ws,Ls,Ds]),Lt=u__default.default.string().or(u__default.default.intersection(Os,Wt.omit({buttons:true}))),Dt=u__default.default.intersection(Et,Wt.omit({banner:true}));var Me=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=h(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=o.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=ps.generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:ps.generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!ps.isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var be=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=ie(Dt,t):t=ie(Lt,t));let i=o.get("socket"),n={},c={},l=b__default.default.isString(t),p=this.client.options?.fakeReply?.provider,y=this.client.options?.autoMentions,x=this.client.options?.autoPresence,z=b__default.default.has(t,"replied"),We=b__default.default.has(t,"banner"),V=b__default.default.has(t,"isViewOnce"),Le=s=="button",N=b__default.default.has(t,"image"),F=b__default.default.has(t,"video"),J=b__default.default.has(t,"audio"),C=b__default.default.has(t,"sticker"),T=b__default.default.has(t,"document"),B=b__default.default.has(t,"location"),G=b__default.default.has(t,"contacts"),De=b__default.default.has(t,"poll"),tt=N||F||J||C||T,K=l?t:I([t],["text","caption"]);if(x&&(J?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),y&&(n={...n,mentions:Fe(K),contextInfo:{mentionedJid:Fe(K)}}),z&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=He[p],c.quoted.key.participant=He[p])),We&&(n={...n,contextInfo:{externalAdReply:h(t).banner}},n.contextInfo.externalAdReply.mediaType=1),V&&(n={...n,viewOnce:h(t)?.isViewOnce}),K&&(n={...n,text:K,caption:K},tt&&delete h(n).text),tt){let w=I([t],["image","video","audio","sticker","document"]),P=b__default.default.isString(w)?{url:w}:w;if(N&&(n={...n,image:P,jpegThumbnail:await $e(w)}),F){let E=h(t)?.ptv;n={...n,video:P,ptv:E,jpegThumbnail:await $e(w)};}if(J){let E=h(t)?.ptt;n={...n,audio:await pt(w),ptt:E,mimetype:E?"audio/ogg; codecs=opus":"audio/mpeg"};}if(C&&(n={...n,sticker:await ut(w,this.client.options?.sticker)}),T){let E=await mt(w);n={...n,fileName:h(t).fileName,...E};}}if(B){let w=h(t).location;n={...n,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(G){let w=h(t)?.contacts,st=w?.contacts.map(P=>{let E=["BEGIN:VCARD","VERSION:3.0",`FN:${P.fullname}`,`ORG:${P.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${P.phoneNumber}:${P.phoneNumber}`,"END:VCARD"].join(`
6
+ `);return {displayName:P.fullname,vcard:E}});n={...n,contacts:{displayName:w?.title,contacts:st}};}if(De){let w=h(t)?.poll;n={...n,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(n={...n,contextInfo:{...h(n).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),s=="edit"&&(n={...n,edit:r?.key},await i.sendPresenceUpdate("paused",e)),s=="delete"&&(n={...n,delete:r?.key},await i.sendPresenceUpdate("paused",e)),Le?await new Me().send(e,t,c):await i.sendMessage(e,h(n),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return b__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let s=o.get("socket"),r={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(r[t],e)}async reaction(e,t){return await o.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await o.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ze=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").groupCreate(e,t)}async participant(e,t,s){return await o.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "subject":if(!i)return await r.groupUpdateSubject(e,t);case "description":if(!i)return await r.groupUpdateDescription(e,t);case "picture":return await r.updateProfilePicture(e,pe(t))}}async setting(e,t){let s=o.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await o.get("socket").groupLeave(e)}async inviteCode(e,t){let s=o.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await o.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let r=o.get("socket");switch(s){case "approve":return await r.groupRequestParticipantsUpdate(e,t,s);case "reject":return await r.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await o.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await o.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=o.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,r[t])}},Se=class{constructor(e){this.glient=e;this.group=new Ze(e);}group};var _s=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),zs=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),js=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),$s=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number()}).optional(),Ot=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:_s,citation:zs,fakeReply:js,sticker:$s}),Us=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),qs=u.z.object({authType:u.z.literal("qr")}),Nt=u.z.union([Us.extend(Ot.shape),qs.extend(Ot.shape)]),ao=u.z.enum(["connection","messages","calls"]);var uo=u__default.default.object({status:u__default.default.enum(["connecting","open","close","reload","syncing"]),authType:u__default.default.enum(["pairing","qr"]),authTimeout:u__default.default.number().optional(),syncProgress:u__default.default.number().optional(),syncCompleted:u__default.default.boolean().default(false).optional(),qr:u__default.default.string().optional(),code:u__default.default.string().optional()});var Vs=u__default.default.enum(["unknown","android","ios","desktop","web"]),Js=u__default.default.enum(["text","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Gs=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Js,receiverId:u__default.default.string(),receiverName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),senderLid:u__default.default.string(),senderId:u__default.default.string(),senderName:u__default.default.string(),senderDevice:Vs,timestamp:u__default.default.number(),text:u__default.default.string().nullable(),mentions:u__default.default.string().array(),links:u__default.default.string().array(),isBot:u__default.default.boolean(),isFromMe:u__default.default.boolean(),isPrefix:u__default.default.boolean(),isSpam:u__default.default.boolean(),isTagMe:u__default.default.boolean(),isGroup:u__default.default.boolean(),isNewsletter:u__default.default.boolean(),isQuestion:u__default.default.boolean(),isStory:u__default.default.boolean(),isViewOnce:u__default.default.boolean(),isEdited:u__default.default.boolean(),isDeleted:u__default.default.boolean(),isPinned:u__default.default.boolean(),isUnPinned:u__default.default.boolean(),isBroadcast:u__default.default.boolean(),isEphemeral:u__default.default.boolean(),isForwarded:u__default.default.boolean(),citation:u__default.default.record(u__default.default.string(),u__default.default.function({output:u__default.default.promise(u__default.default.boolean())})).nullable(),media:u__default.default.object({buffer:u__default.default.function(),stream:u__default.default.function()}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()}),get replied(){return Gs.nullable()}});var wo=u__default.default.object({callId:u__default.default.string(),callerId:u__default.default.string(),callerName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),date:u__default.default.date(),offline:u__default.default.boolean(),status:u__default.default.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u__default.default.boolean(),isGroup:u__default.default.boolean()});var xe=class{collect(e,t,s){let r=t.max??1/0;if(r<=0){s([]);return}let i=o.collectors.get(e);i&&(clearTimeout(i.timeoutId),i.callback(i.messages),o.collectors.delete(e));let n=setTimeout(()=>{let c=o.collectors.get(e);c&&(c.callback(c.messages),o.collectors.delete(e));},t.timeout);o.collectors.set(e,{messages:[],max:r,filter:t.filter,callback:s,timeoutId:n});}push(e){let t=o.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e.channelId)),true)}has(e){return o.collectors.has(e)}cancel(e){let t=o.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e),t.messages):[]}};var Te=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,o.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),o.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=h(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),r=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),i=M(`${e?.roomName}`,t),n=e?.text?.slice(0,300)||"",c=n?.length>=300?"...":"",l=`${r} \u2192 ${i}
7
+ `;e?.isNewsletter?l+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${L(e?.roomId)})`,t)}
8
+ `:l+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${L(e?.senderId)})`,t)}
9
+ `,l+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(n+c,s?["#ff5f6d","#ffc371"]:"brown")}
10
+ `,l+="\u2014",console.log(l);}call(e){if(!o.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),s=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=M(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
11
+ `;i+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${L(e?.callerId)})`,t)}
12
+ `,i+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
+ `,i+="\u2014",console.log(i);}};var Ae=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var Ce=class{plugins=[];pluginsDir;constructor(e=je__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!___namespace.existsSync(e))return t;let s=___namespace.readdirSync(e);for(let r of s){let i=je__namespace.join(e,r);___namespace.statSync(i).isDirectory()?this.getAllFiles(i,t):(r.endsWith(".ts")||r.endsWith(".js"))&&!r.endsWith(".d.ts")&&t.push(i);}return t}async load(){if(!___namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let r=(await import(url.pathToFileURL(t).href)).default;r?.default&&(r=r.default),r?.handler&&r?.config&&this.plugins.push(r);}catch{}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},_o=(a,e)=>({handler:a,config:e});var Ie=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let l=t[c];if(i in l){let p=Reflect.get(l,i,n);return typeof p=="function"?p.bind(l):p}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let l=0;l<s;l++){let p=t[l];if(i in p)return Reflect.set(p,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Ye=class{constructor(e){this.client=e;}async block(e){return await o.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await o.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await o.get("socket").updateLastSeenPrivacy(e)}async online(e){return await o.get("socket").updateOnlinePrivacy(e)}async picture(e){return await o.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await o.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await o.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await o.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=o.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await o.get("socket").fetchBlocklist()}async getSettings(){return await o.get("socket").fetchPrivacySettings(true)}},Re=class{constructor(e){this.plient=e;this.privacy=new Ye(e);}privacy};var Xe=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").newsletterCreate(e,t)}async action(e,t){let s=o.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,pe(t))}}async metadata(e,t){return await o.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await o.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await o.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=o.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await o.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await o.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await o.get("socket").newsletterDemote(e,t)}async delete(e){return await o.get("socket").newsletterDelete(e)}async removePicture(e){return await o.get("socket").newsletterRemovePicture(e)}},Pe=class{constructor(e){this.nlient=e;this.newsletter=new Xe(e);}newsletter};var et=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await o.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await o.get("socket").communityLeave(e)}async metadata(e){return await o.get("socket").communityMetadata(e)}async update(e,t,s){let r=o.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=o.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=o.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,h(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,h(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=o.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=o.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Ee=class{constructor(e){this.mlient=e;this.community=new et(e);}community};var Ft=class{constructor(e){this.options=e;this.options=ie(Nt,e);let t=new Ie().classInjection(this,[new be(this),new Se(this),new Re(this),new Pe(this),new Ee(this)]);return this._ready=this.initialize(t),t}listener;_ready;watchdog=null;logs;collector=new xe;middleware=new Ae;plugins=new Ce;async initialize(e){await Ct(),await xt(this),await this.plugins.load(),this.listener=new ve(e||this),this.logs=new Te(this),this.watchdog=yt({session:this.options.session,checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3,onRecovery:async()=>{await this.initialize(e);}}),this.watchdog.start(),this.setupPrekeyErrorDetection();}prekeyDetected=false;setupPrekeyErrorDetection(){let e=console.log,t=this.watchdog,s=this;console.log=(...r)=>{let i=r.map(n=>String(n)).join(" ").toLowerCase();return (i.includes("closing open session")||i.includes("prekey bundle"))&&!s.prekeyDetected&&(s.prekeyDetected=true,o.spinner.warn(" Prekey bundle error detected"),t?.forceRecovery(),setTimeout(()=>{s.prekeyDetected=false;},6e4)),e.apply(console,r)};}ready(){return this._ready}db(e){return o.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){o.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=I(t,["name","verifiedName","displayName"]),i=I(s,["notify","name"]);return W(r||i)||null}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${le.author} \xB7 v${le.version}`,r=`${e?"Already using latest version!":`Upd
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/14/2025 6:27:46 PM
21
+ * Last build time: 12/14/2025 10:59:53 PM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
- */exports.AudioProcessor=ie;exports.Client=Lt;exports.DocumentProcessor=oe;exports.ImageProcessor=re;exports.Lowdb=Ve;exports.MediaProcessor=Q;exports.Plugins=Te;exports.SessionWatchdog=$e;exports.StickerProcessor=ne;exports.VideoProcessor=W;exports.cleanJid=E;exports.cleanMediaObject=ot;exports.cleanupSocket=ut;exports.createLowdb=J;exports.createWatchdog=dt;exports.definePlugins=ko;exports.extractJids=Le;exports.extractUrls=it;exports.findGlobalWord=se;exports.findNestedByKeys=rt;exports.generateId=F;exports.getDeepContent=K;exports.getExistingSocket=mt;exports.getLatestLibVersion=et;exports.getMediaThumbnail=_e;exports.getUsersMentions=nt;exports.getVideoDuration=Ii;exports.getVideoThumbnail=Ci;exports.getWaAudio=at;exports.getWaDocument=pt;exports.getWaSticker=ct;exports.getWatchdog=Ni;exports.ignoreLint=y;exports.logColor=v;exports.modifyFn=oi;exports.normalizeText=P;exports.numbersToJids=mi;exports.pickKeysFromArray=A;exports.randomize=ni;exports.registerAuthCreds=Mt;exports.removeAuthCreds=tt;exports.repairSessionKeys=ce;exports.shuffleString=ri;exports.toBuffer=ae;exports.toJson=De;exports.toString=te;exports.useAuthState=wt;
24
+ */exports.AudioProcessor=oe;exports.ButtonInteractiveCallType=Ss;exports.ButtonInteractiveCopyType=bs;exports.ButtonInteractiveReplyType=vs;exports.ButtonInteractiveSingleSelectType=xs;exports.ButtonInteractiveType=Ts;exports.ButtonInteractiveUrlType=Ms;exports.ButtonSimpleType=As;exports.ButtonType=Pt;exports.CitationType=zs;exports.Client=Ft;exports.ClientAuthPairingType=Us;exports.ClientAuthQRType=qs;exports.ClientBaseType=Ot;exports.ClientOptionsType=Nt;exports.DEVICE_ENUM_TYPES=Vs;exports.DocumentProcessor=le;exports.EventEnumType=ao;exports.FakeReplyType=js;exports.ImageProcessor=ae;exports.LimiterType=_s;exports.ListenerCallsType=wo;exports.ListenerConnectionType=uo;exports.ListenerMessagesType=Gs;exports.Lowdb=Ge;exports.MESSAGE_ENUM_TYPES=Js;exports.MediaProcessor=te;exports.Plugins=Ce;exports.SessionWatchdog=Ue;exports.StickerMetadataType=$s;exports.StickerProcessor=ce;exports.VideoProcessor=D;exports.cleanJid=L;exports.cleanMediaObject=lt;exports.cleanupSocket=ft;exports.createLowdb=H;exports.createWatchdog=yt;exports.definePlugins=_o;exports.extractJids=Fe;exports.extractUrls=ot;exports.findGlobalWord=Q;exports.findNestedByKeys=at;exports.generateId=j;exports.getDeepContent=ne;exports.getExistingSocket=gt;exports.getLatestLibVersion=it;exports.getMediaThumbnail=$e;exports.getUsersMentions=ct;exports.getVideoDuration=Di;exports.getVideoThumbnail=Li;exports.getWaAudio=pt;exports.getWaDocument=mt;exports.getWaSticker=ut;exports.getWatchdog=Ui;exports.ignoreLint=h;exports.logColor=M;exports.modifyFn=mi;exports.normalizeText=W;exports.numbersToJids=ki;exports.pickKeysFromArray=I;exports.randomize=ui;exports.registerAuthCreds=xt;exports.removeAuthCreds=rt;exports.repairSessionKeys=ue;exports.shuffleString=pi;exports.toBuffer=pe;exports.toJson=Ne;exports.toString=Z;exports.useAuthState=bt;
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
- import cs,{URL_REGEX,extractMessageContent,getContentType,BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,isJidBroadcast,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import Fe,{readFile,mkdir,writeFile,unlink,readdir,rmdir,stat}from'fs/promises';import {Mutex}from'async-mutex';import*as _e from'path';import _e__default,{dirname,join}from'path';import {createSpinner}from'nanospinner';import Je from'node-cache';import {EventEmitter}from'events';import _t from'pino';import it,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import Z from'fluent-ffmpeg';import Vt from'node-webpmux';import {tmpdir}from'os';import Be from'sharp';import Jt from'@ffmpeg-installer/ffmpeg';import Gt from'@ffprobe-installer/ffprobe';import*as O from'fs';import {promises}from'fs';import ls from'figlet';import ms from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import {pathToFileURL}from'url';var De=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=G(s);return this.cache.set(s,r),r}spinner=createSpinner("",{color:"green"});logger=_t({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Je({stdTTL:300,useClones:false});collectors=new Map},o=new De;var h=a=>a,tt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},st=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Fe.unlink(e);}catch(e){throw o.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},E=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var M=(a,e="lime")=>Array.isArray(e)?it(e)(a):it([e,e])(a),Le=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},se=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Le(a)||"{}"));return S.isError(e)?"{}":e}},ni=(a="")=>S.shuffle(a).join(""),ie=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,rt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],oi=a=>a[Math.floor(Math.random()*a.length)],C=(a,e)=>{for(let t of a||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},nt=(a,e)=>{let t=S.castArray(e),s=(n,c)=>S.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>S.some(c,(p,l)=>n?.[l]===p),i=n=>S.isArray(n)?S.find(n,i)??n:S.isObject(n)?S.find(t,l=>s(n,l))||S.find(t,l=>r(n,l))?n:S.find(S.values(n),i)??n:null;return i(a)},ai=(a,e,t)=>new Proxy(a,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var N=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},ot=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},Oe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},di=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),at=a=>S.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),H=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);Z.setFfmpegPath(Jt.path);Z.setFfprobePath(Gt.path);var k={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},v=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return _e__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Fe.unlink(t)));}static async safeReadFile(e){try{return await Fe.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Fe.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},I=class{static async toBuffer(e){if(S.isBuffer(e))return e;if(S.isArrayBuffer(e))return Buffer.from(e);if(S.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},B=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(k.MIME.IMAGE)||e.startsWith(k.MIME.VIDEO)}static isAnimated(e){return e===k.MIME.GIF||e.startsWith(k.MIME.VIDEO)}},Q=class{static async process(e){return new Promise((t,s)=>{let r=Z(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{Z.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},re=class{static async getWaAudio(e,t="opus"){let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);B.validate(r,k.MIME.AUDIO);let i=v.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=v.createTempPath("audio_out",n);await v.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Q.process({input:i,output:c,options:l,onEnd:async()=>{p=await v.safeReadFile(c);},onError:async()=>{await v.cleanup([i,c]);}}),await v.cleanup([i,c]),p}catch(l){throw await v.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},D=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);B.validate(s,k.MIME.VIDEO);let r=v.createTempPath("video","mp4"),i=v.createTempPath("thumb","jpg");await v.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{Z(r).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:_e__default.basename(i),folder:_e__default.dirname(i),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await v.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await v.cleanup([r,i]),n}catch(c){throw await v.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Q.getDuration(e)}},ne=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===k.MIME.GIF?Be(e,{animated:false}):Be(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Be(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},Y=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s||!B.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(k.MIME.VIDEO)?D.getThumbnail(e):ne.getThumbnail(t)}},oe=class{static createExifMetadata(e){let t={"sticker-pack-id":N(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=v.createTempPath("sticker_in",r),n=v.createTempPath("sticker_out","webp");await v.safeWriteFile(i,e);let c=k.STICKER.MAX_DURATION;try{let T=await D.getDuration(i);c=h(Math.min(T,k.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",k.STICKER.MAX_DURATION);}let p=`scale=${k.STICKER.SIZE}:${k.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${k.STICKER.SIZE}:${k.STICKER.SIZE},fps=${k.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),y;try{return await Q.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${k.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{y=await v.safeReadFile(n);},onError:async()=>{await v.cleanup([i,n]);}}),await v.cleanup([i,n]),y}catch(T){throw await v.cleanup([i,n]),new Error(`Animated sticker processing failed: ${T.message}`)}}static getExtension(e){return e===k.MIME.GIF?"gif":e.startsWith(k.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||k.STICKER.DEFAULT_QUALITY,c=B.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await ne.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Vt.Image;await l.load(c),l.exif=p;let y=await l.save(null);return Buffer.isBuffer(y)?y:Buffer.from(y)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},ae=class{static async create(e){try{let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:N(Date.now().toString()),jpegThumbnail:await Y.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ce=I.toBuffer.bind(I),ct=re.getWaAudio.bind(re),Ii=D.getThumbnail.bind(D),Ri=D.getDuration.bind(D),$e=Y.getThumbnail.bind(Y),pt=oe.create.bind(oe),lt=ae.create.bind(ae);var mt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},pe=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),s=JSON.parse(t),r=["sender-key:","session:"],i={},n=!1;for(let[c,p]of Object.entries(s))r.some(y=>c.startsWith(y))?n=!0:i[c]=p;n&&(await promises.writeFile(e,JSON.stringify(i,null,2)),o.spinner.success(" Session keys repaired successfully"));}catch{o.spinner.warn(" Could not repair session keys, will re-negotiate");}},dt=()=>{let a=o.get("socket");return a?.end?a:null};var Kt=6e4,Ht=12e4,Zt=6e4,Qt=3,ze=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Kt,staleThresholdMs:Ht,cooldownMs:Zt,maxRetries:Qt,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),o.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=o.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){o.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){o.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{o.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=o.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),o.spinner.success(" Session health check passed");return}catch{}await pe(this.options.session),o.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{o.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){o.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},X=null,ft=a=>(X&&X.stop(),X=new ze(a),X),Bi=()=>X;var Ve=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new Mutex,this.kLocks.set(e,t);}return t}},qe=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=Ve.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await mkdir(dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async upsert(e,t,s="key.id"){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let i=this.data.get(e),n;Array.isArray(i)?n=i:i===void 0?n=[]:n=[i];let c=S.get(t,s);if(c){let p=n.findIndex(l=>S.get(l,s)===c);p>=0?n[p]=t:n.push(t);}else n.push(t);this.data.set(e,n),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return nt(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,y=Math.min(l+this.size,r.length),T=r.subarray(l,y);c.push(writeFile(join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:T.toString("base64")})));}return c.push(writeFile(join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(readFile(join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(y=>Buffer.from(JSON.parse(y).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(unlink(join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(unlink(join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await readdir(this.chunkDir)).length===0&&await rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},G=(a,e)=>new qe(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var vt=async a=>{o.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw o.spinner.error(` Failed to open credentials
2
- `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await mkdir(a,{recursive:true});let t=G(`${a}/auth/creds.json`,{BufferJSON:BufferJSON}),s=G(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||initAuthCreds();return o.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,y=await s.get(l);i==="app-state-sync-key"&&y&&(y=proto.Message.AppStateSyncKeyData.fromObject(y)),c[p]=y;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],y=`${c}:${p}`;l?n.push(s.set(y,l)):n.push(s.delete(y).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var as=new Je,Mt=(a,e)=>({logger:o.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Je,mediaCache:new Je({stdTTL:60}),cachedGroupMetadata:async t=>as.get(t),shouldIgnoreJid:t=>isJidBroadcast(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,o.logger)},getMessage:async t=>{if(t?.id)return await a.db("messages").get(t.id)}});var St=async a=>{let e=dt();e&&mt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:r}=await vt(t),i=Mt(a,s),n=cs(i);n.ev.on("creds.update",r),o.set("socket",n);};var le=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=o.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),o.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=o.get("socket"),s={};return s.callId=e.id,s.callerId=jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=jidNormalizedUser(e.chatId),s.roomName=E(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var ue={version:"2.0.9",author:"zaadevofc"};var Tt=a=>{ms.generate(a,{small:true},e=>{console.log(e);});},xt=async()=>{console.clear(),o.spinner.start(" Checking for updates...");let a=await tt(),e=ue.version===a;o.spinner.stop();let t="Zaileys",s=`
3
- by ${ue.author} \xB7 v${ue.version}`,r=`${e?"Already using latest version!":`Update available! (v${a})`}
4
- `,i=e?"lime":"orange",n=await ls.text(t),c=cristal(n);console.log(c),console.log(M(s,"dimgray")),console.log(M(r,i));};var fe=class{constructor(e){this.client=e;this.initialize();}async initialize(){o.spinner.start(" Initializing connection...");let e=o.get("socket"),t={},s=async()=>{t.status="reload",o.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await delay(3e3),o.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await st(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){o.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());o.spinner.warn(` Pairing expired at ${cristal(i)}`),o.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:p}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,o.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&p){t.authTimeout=Date.now()+6e4;let l=new Date(t.authTimeout).toLocaleTimeString();o.spinner.warn(" Please scan the QR code..."),o.spinner.warn(` Qr code expired at ${cristal(l)}`),Tt(p),t.qr=p;return}if(n==="close"){let l=h(c?.error)?.output?.statusCode,y=c?.error?.message||"",T=typeof l=="number"&&l!==DisconnectReason.loggedOut,F=l===515||y.toLowerCase().includes("prekey");if(o.spinner.error(` [${l} - Closed] ${y}`),F){o.spinner.warn(" Session key mismatch detected, attempting repair..."),await pe(this.client.options.session),await delay(1e3),await s();return}if(l===401||l===405){o.spinner.warn(" Session may be used by another device/instance."),o.spinner.warn(" If you want to connect here, close the other connection first."),o.spinner.warn(` Or use a different session name in your Client options.
5
- `);return}if(l===500){o.spinner.error(" Server error occurred, attempting reconnect..."),await s();return}T&&await s();}if(n==="open")if(e.user?.id){let l=jidNormalizedUser(e.user.id).split("@")[0],y=e.user.name||e.user.verifiedName;o.spinner.success(` Connected as ${cristal(y||l)}`);}else o.spinner.success(" Connected!");o.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,o.spinner.start(" Syncing messages history..."),i&&o.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(o.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),o.events.emit("connection",t);});}};var At={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ge={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ge=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var he=class{constructor(e){this.client=e;this.limiter=new ge(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=o.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),o.set("message",i),o.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=o.get("socket"),i={},n=H(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=H(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=At[c],i.receiverId=jidNormalizedUser(r?.user?.id||""),i.receiverName=E(r?.user?.name||r?.user?.verifiedName),i.roomId=jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,y=p?.type===1,T=p?.type===2,F=i.roomId?.includes("@newsletter"),Pe=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ee=p?.key?.id;if(l||y||T){let x=(await this.client.db("messages").get(i.roomId))?.find(L=>L.key.id===Ee);if(!x)return;e=x,n=H(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=C([e?.key],["remoteJidAlt","participant"])||null,i.senderId=jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=E(e?.pushName||e?.verifiedBizName),i.senderDevice=getDevice(i.chatId),i.channelId=N([i.roomId,i.senderId]),i.uniqueId=N([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,F){let A=await r.newsletterMetadata("jid",i.roomId);i.roomName=h(A.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(z&&(i.senderLid=jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=Le(p?.paramsJson)?.id),i.text=E(i.text),i.mentions=ot(i.text),i.links=rt(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=z,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isPrefix&&(i.text=i.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=F,i.isQuestion=Pe,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!ie(se(n),"editedMessage"),i.isDeleted=l,i.isPinned=y,i.isUnPinned=T,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!ie(se(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!ie(se(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let A=this.client.options.citation;for(let x of Object.keys(A)){let L=A[x];i.citation[x]=async()=>{let q=await L(),We=[W(i.roomId),W(i.senderLid),W(i.senderId)];return !!S.intersection(We,q).length};}}i.chatType!=="text"&&(i.media={...at(p),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let j=p?.contextInfo?.quotedMessage,U=C([j],["viewOnceMessageV2Extension","viewOnceMessage"]),V=p?.contextInfo?.stanzaId;if(j&&this.maxReplies){this.maxReplies--;let x=(await this.client.db("messages").get(i.roomId))?.find(q=>q.key.id===V),L={...x,...H(U).leaf};U?(i.replied=await this.parse(L,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(x,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var ke=class{constructor(e){this.client=e;this.connection=new fe(e),this.messages=new he(e),this.calls=new le(e),this.initialize();}connection;messages;calls;async initialize(){let e=o.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").upsert(n.id,n,"id");for(let n of r)await this.client.db("contacts").upsert(n.id,n,"id");for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(s.key.remoteJid,s,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").upsert(s.id,s,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").upsert(s.id,s,"id");});}};var ee=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ks=u.object({type:u.literal("quick_reply"),text:u.string()}),ws=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),vs=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),Ms=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),Ss=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),bs=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([ks,ws,vs,Ms,Ss]).array()}),Ts=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),It=u.union([Ts,bs]);var te=u.url().or(u.base64()).or(u.instanceof(Buffer)),Rt=u.object({text:u.string()}).passthrough(),xs=u.object({image:te,caption:u.string().optional()}).passthrough(),As=u.object({audio:te,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),Cs=u.object({video:te,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),Is=u.object({sticker:te,caption:u.string().optional()}).passthrough(),Rs=u.object({document:te,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ps=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),Es=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),Ws=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),Pt=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:It.optional()});u.enum(["forward","button","edit","delete"]);var Ds=u.union([Rt,xs,As,Cs,Is,Rs,Ps,Es,Ws]),Et=u.string().or(u.intersection(Ds,Pt.omit({buttons:true}))),Wt=u.intersection(Rt,Pt.omit({banner:true}));var we=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=h(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=o.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var ve=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=ee(Wt,t):t=ee(Et,t));let i=o.get("socket"),n={},c={},p=S.isString(t),l=this.client.options?.fakeReply?.provider,y=this.client.options?.autoMentions,T=this.client.options?.autoPresence,F=S.has(t,"replied"),Pe=S.has(t,"banner"),z=S.has(t,"isViewOnce"),Ee=s=="button",j=S.has(t,"image"),U=S.has(t,"video"),V=S.has(t,"audio"),A=S.has(t,"sticker"),x=S.has(t,"document"),L=S.has(t,"location"),q=S.has(t,"contacts"),We=S.has(t,"poll"),Xe=j||U||V||A||x,J=p?t:C([t],["text","caption"]);if(T&&(V?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),y&&(n={...n,mentions:Oe(J),contextInfo:{mentionedJid:Oe(J)}}),F&&(c.quoted=h(t).replied,l&&(c.quoted.key.remoteJid=Ge[l],c.quoted.key.participant=Ge[l])),Pe&&(n={...n,contextInfo:{externalAdReply:h(t).banner}},n.contextInfo.externalAdReply.mediaType=1),z&&(n={...n,viewOnce:h(t)?.isViewOnce}),J&&(n={...n,text:J,caption:J},Xe&&delete h(n).text),Xe){let w=C([t],["image","video","audio","sticker","document"]),R=S.isString(w)?{url:w}:w;if(j&&(n={...n,image:R,jpegThumbnail:await $e(w)}),U){let P=h(t)?.ptv;n={...n,video:R,ptv:P,jpegThumbnail:await $e(w)};}if(V){let P=h(t)?.ptt;n={...n,audio:await ct(w),ptt:P,mimetype:P?"audio/ogg; codecs=opus":"audio/mpeg"};}if(A&&(n={...n,sticker:await pt(w,this.client.options?.sticker)}),x){let P=await lt(w);n={...n,fileName:h(t).fileName,...P};}}if(L){let w=h(t).location;n={...n,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(q){let w=h(t)?.contacts,et=w?.contacts.map(R=>{let P=["BEGIN:VCARD","VERSION:3.0",`FN:${R.fullname}`,`ORG:${R.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${R.phoneNumber}:${R.phoneNumber}`,"END:VCARD"].join(`
6
- `);return {displayName:R.fullname,vcard:P}});n={...n,contacts:{displayName:w?.title,contacts:et}};}if(We){let w=h(t)?.poll;n={...n,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(n={...n,contextInfo:{...h(n).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),s=="edit"&&(n={...n,edit:r?.key},await i.sendPresenceUpdate("paused",e)),s=="delete"&&(n={...n,delete:r?.key},await i.sendPresenceUpdate("paused",e)),Ee?await new we().send(e,t,c):await i.sendMessage(e,h(n),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return S.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let s=o.get("socket"),r={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(r[t],e)}async reaction(e,t){return await o.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await o.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ke=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").groupCreate(e,t)}async participant(e,t,s){return await o.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "subject":if(!i)return await r.groupUpdateSubject(e,t);case "description":if(!i)return await r.groupUpdateDescription(e,t);case "picture":return await r.updateProfilePicture(e,ce(t))}}async setting(e,t){let s=o.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await o.get("socket").groupLeave(e)}async inviteCode(e,t){let s=o.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await o.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let r=o.get("socket");switch(s){case "approve":return await r.groupRequestParticipantsUpdate(e,t,s);case "reject":return await r.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await o.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await o.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=o.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,r[t])}},Me=class{constructor(e){this.glient=e;this.group=new Ke(e);}group};var Ns=z.object({maxMessages:z.number().default(20),durationMs:z.number().default(1e4)}).optional(),Bs=z.record(z.string(),z.function({output:z.promise(z.array(z.number()))})).optional(),_s=z.object({provider:z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z.number())}).optional(),$s=z.object({packageName:z.string(),authorName:z.string(),quality:z.number()}).optional(),Dt=z.object({session:z.string().default("zaileys").optional(),prefix:z.string().optional(),ignoreMe:z.boolean().default(true).optional(),showLogs:z.boolean().default(true).optional(),syncFullHistory:z.boolean().default(true).optional(),autoMarkAI:z.boolean().default(true).optional(),autoMentions:z.boolean().default(true).optional(),autoOnline:z.boolean().default(true).optional(),autoRead:z.boolean().default(true).optional(),autoPresence:z.boolean().default(true).optional(),autoRejectCall:z.boolean().default(true).optional(),limiter:Ns,citation:Bs,fakeReply:_s,sticker:$s}),zs=z.object({authType:z.literal("pairing"),phoneNumber:z.number()}),js=z.object({authType:z.literal("qr")}),Lt=z.union([zs.extend(Dt.shape),js.extend(Dt.shape)]);z.enum(["connection","messages","calls"]);var Se=class{collect(e,t,s){let r=t.max??1/0;if(r<=0){s([]);return}let i=o.collectors.get(e);i&&(clearTimeout(i.timeoutId),i.callback(i.messages),o.collectors.delete(e));let n=setTimeout(()=>{let c=o.collectors.get(e);c&&(c.callback(c.messages),o.collectors.delete(e));},t.timeout);o.collectors.set(e,{messages:[],max:r,filter:t.filter,callback:s,timeoutId:n});}push(e){let t=o.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e.channelId)),true)}has(e){return o.collectors.has(e)}cancel(e){let t=o.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e),t.messages):[]}};var be=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,o.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),o.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=h(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),r=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),i=M(`${e?.roomName}`,t),n=e?.text?.slice(0,300)||"",c=n?.length>=300?"...":"",p=`${r} \u2192 ${i}
7
- `;e?.isNewsletter?p+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${W(e?.roomId)})`,t)}
8
- `:p+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${W(e?.senderId)})`,t)}
9
- `,p+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(n+c,s?["#ff5f6d","#ffc371"]:"brown")}
10
- `,p+="\u2014",console.log(p);}call(e){if(!o.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),s=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=M(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
11
- `;i+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${W(e?.callerId)})`,t)}
12
- `,i+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,i+="\u2014",console.log(i);}};var Te=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var xe=class{plugins=[];pluginsDir;constructor(e=_e.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!O.existsSync(e))return t;let s=O.readdirSync(e);for(let r of s){let i=_e.join(e,r);O.statSync(i).isDirectory()?this.getAllFiles(i,t):(r.endsWith(".ts")||r.endsWith(".js"))&&!r.endsWith(".d.ts")&&t.push(i);}return t}async load(){if(!O.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let r=(await import(pathToFileURL(t).href)).default;r?.default&&(r=r.default),r?.handler&&r?.config&&this.plugins.push(r);}catch{}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},wo=(a,e)=>({handler:a,config:e});var Ae=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Ze=class{constructor(e){this.client=e;}async block(e){return await o.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await o.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await o.get("socket").updateLastSeenPrivacy(e)}async online(e){return await o.get("socket").updateOnlinePrivacy(e)}async picture(e){return await o.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await o.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await o.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await o.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=o.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await o.get("socket").fetchBlocklist()}async getSettings(){return await o.get("socket").fetchPrivacySettings(true)}},Ce=class{constructor(e){this.plient=e;this.privacy=new Ze(e);}privacy};var Qe=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").newsletterCreate(e,t)}async action(e,t){let s=o.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ce(t))}}async metadata(e,t){return await o.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await o.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await o.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=o.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await o.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await o.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await o.get("socket").newsletterDemote(e,t)}async delete(e){return await o.get("socket").newsletterDelete(e)}async removePicture(e){return await o.get("socket").newsletterRemovePicture(e)}},Ie=class{constructor(e){this.nlient=e;this.newsletter=new Qe(e);}newsletter};var Ye=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await o.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await o.get("socket").communityLeave(e)}async metadata(e){return await o.get("socket").communityMetadata(e)}async update(e,t,s){let r=o.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=o.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=o.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,h(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,h(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=o.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=o.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Re=class{constructor(e){this.mlient=e;this.community=new Ye(e);}community};var Ot=class{constructor(e){this.options=e;this.options=ee(Lt,e);let t=new Ae().classInjection(this,[new ve(this),new Me(this),new Ce(this),new Ie(this),new Re(this)]);return this._ready=this.initialize(t),t}listener;_ready;watchdog=null;logs;collector=new Se;middleware=new Te;plugins=new xe;async initialize(e){await xt(),await St(this),await this.plugins.load(),this.listener=new ke(e||this),this.logs=new be(this),this.watchdog=ft({session:this.options.session,checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3,onRecovery:async()=>{await this.initialize(e);}}),this.watchdog.start(),this.setupPrekeyErrorDetection();}prekeyDetected=false;setupPrekeyErrorDetection(){let e=console.log,t=this.watchdog,s=this;console.log=(...r)=>{let i=r.map(n=>String(n)).join(" ").toLowerCase();return (i.includes("closing open session")||i.includes("prekey bundle"))&&!s.prekeyDetected&&(s.prekeyDetected=true,o.spinner.warn(" Prekey bundle error detected"),t?.forceRecovery(),setTimeout(()=>{s.prekeyDetected=false;},6e4)),e.apply(console,r)};}ready(){return this._ready}db(e){return o.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){o.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=C(t,["name","verifiedName"]),i=C(s,["notify","name"]);return E(r||i)||null}};
1
+ import us,{URL_REGEX,extractMessageContent,getContentType,BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,isJidBroadcast,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import _e,{readFile,mkdir,writeFile,unlink,readdir,rmdir,stat}from'fs/promises';import {Mutex}from'async-mutex';import*as $e from'path';import $e__default,{dirname,join}from'path';import {createSpinner}from'nanospinner';import He from'node-cache';import {EventEmitter}from'events';import $t from'pino';import ot,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import ee from'fluent-ffmpeg';import Gt from'node-webpmux';import {tmpdir}from'os';import je from'sharp';import Ht from'@ffmpeg-installer/ffmpeg';import Zt from'@ffprobe-installer/ffprobe';import*as z from'fs';import {promises}from'fs';import ds from'figlet';import gs from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z as z$1}from'zod';import {pathToFileURL}from'url';var Ne=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=Z(s);return this.cache.set(s,r),r}spinner=createSpinner("",{color:"green"});logger=$t({level:"silent",enabled:false});events=new EventEmitter;groupCache=new He({stdTTL:300,useClones:false});collectors=new Map},o=new Ne;var k=a=>a,rt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},nt=async a=>{try{let e=`.session/${a}/auth/creds.json`;await _e.unlink(e);}catch(e){throw o.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},L=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var b=(a,e="lime")=>Array.isArray(e)?ot(e)(a):ot([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},Q=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Fe(a)||"{}"));return S.isError(e)?"{}":e}},ui=(a="")=>S.shuffle(a).join(""),Y=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,at=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],mi=a=>a[Math.floor(Math.random()*a.length)],R=(a,e)=>{for(let t of a||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},ct=(a,e)=>{let t=S.castArray(e),s=(n,c)=>S.every(c,(l,p)=>n?.[p]===l),r=(n,c)=>S.some(c,(l,p)=>n?.[p]===l),i=n=>S.isArray(n)?S.find(n,i)??n:S.isObject(n)?S.find(t,p=>s(n,p))||S.find(t,p=>r(n,p))?n:S.find(S.values(n),i)??n:null;return i(a)},di=(a,e,t)=>new Proxy(a,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var $=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},lt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},Be=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},wi=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),pt=a=>S.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),oe=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},D=a=>Number(a?.split("@")[0]);ee.setFfmpegPath(Ht.path);ee.setFfprobePath(Zt.path);var w={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return $e__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>_e.unlink(t)));}static async safeReadFile(e){try{return await _e.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await _e.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},P=class{static async toBuffer(e){if(S.isBuffer(e))return e;if(S.isArrayBuffer(e))return Buffer.from(e);if(S.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},U=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(w.MIME.IMAGE)||e.startsWith(w.MIME.VIDEO)}static isAnimated(e){return e===w.MIME.GIF||e.startsWith(w.MIME.VIDEO)}},te=class{static async process(e){return new Promise((t,s)=>{let r=ee(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{ee.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},ae=class{static async getWaAudio(e,t="opus"){let s=await P.toBuffer(e),r=await fileTypeFromBuffer(s);U.validate(r,w.MIME.AUDIO);let i=M.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",n);await M.safeWriteFile(i,s);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await te.process({input:i,output:c,options:p,onEnd:async()=>{l=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([i,c]);}}),await M.cleanup([i,c]),l}catch(p){throw await M.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},O=class{static async getThumbnail(e){let t=await P.toBuffer(e),s=await fileTypeFromBuffer(t);U.validate(s,w.MIME.VIDEO);let r=M.createTempPath("video","mp4"),i=M.createTempPath("thumb","jpg");await M.safeWriteFile(r,t);let n;try{return await new Promise((c,l)=>{ee(r).screenshots({timestamps:[w.THUMBNAIL.TIMESTAMP],filename:$e__default.basename(i),folder:$e__default.dirname(i),size:`${w.THUMBNAIL.SIZE}x${w.THUMBNAIL.SIZE}`,quality:w.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await M.safeReadFile(i)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await M.cleanup([r,i]),n}catch(c){throw await M.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return te.getDuration(e)}},ce=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===w.MIME.GIF?je(e,{animated:false}):je(e)).resize(w.THUMBNAIL.SIZE,w.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:w.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return je(e).resize(w.STICKER.SIZE,w.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},se=class{static async getThumbnail(e){let t=await P.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s||!U.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(w.MIME.VIDEO)?O.getThumbnail(e):ce.getThumbnail(t)}},le=class{static createExifMetadata(e){let t={"sticker-pack-id":$(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=M.createTempPath("sticker_in",r),n=M.createTempPath("sticker_out","webp");await M.safeWriteFile(i,e);let c=w.STICKER.MAX_DURATION;try{let T=await O.getDuration(i);c=k(Math.min(T,w.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",w.STICKER.MAX_DURATION);}let l=`scale=${w.STICKER.SIZE}:${w.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${w.STICKER.SIZE}:${w.STICKER.SIZE},fps=${w.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-s)),h;try{return await te.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${w.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{h=await M.safeReadFile(n);},onError:async()=>{await M.cleanup([i,n]);}}),await M.cleanup([i,n]),h}catch(T){throw await M.cleanup([i,n]),new Error(`Animated sticker processing failed: ${T.message}`)}}static getExtension(e){return e===w.MIME.GIF?"gif":e.startsWith(w.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await P.toBuffer(e),r=await fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||w.STICKER.DEFAULT_QUALITY,c=U.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await ce.resizeForSticker(s,i),l=this.createExifMetadata(t),p=new Gt.Image;await p.load(c),p.exif=l;let h=await p.save(null);return Buffer.isBuffer(h)?h:Buffer.from(h)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},pe=class{static async create(e){try{let t=await P.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:$(Date.now().toString()),jpegThumbnail:await se.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ue=P.toBuffer.bind(P),ut=ae.getWaAudio.bind(ae),Di=O.getThumbnail.bind(O),Oi=O.getDuration.bind(O),Ue=se.getThumbnail.bind(se),mt=le.create.bind(le),dt=pe.create.bind(pe);var gt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},me=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),s=JSON.parse(t),r=["sender-key:","session:"],i={},n=!1;for(let[c,l]of Object.entries(s))r.some(h=>c.startsWith(h))?n=!0:i[c]=l;n&&(await promises.writeFile(e,JSON.stringify(i,null,2)),o.spinner.success(" Session keys repaired successfully"));}catch{o.spinner.warn(" Could not repair session keys, will re-negotiate");}},yt=()=>{let a=o.get("socket");return a?.end?a:null};var Qt=6e4,Yt=12e4,Xt=6e4,es=3,qe=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Qt,staleThresholdMs:Yt,cooldownMs:Xt,maxRetries:es,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),o.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=o.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){o.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){o.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{o.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=o.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),o.spinner.success(" Session health check passed");return}catch{}await me(this.options.session),o.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{o.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){o.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},ie=null,ht=a=>(ie&&ie.stop(),ie=new qe(a),ie),qi=()=>ie;var Ge=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new Mutex,this.kLocks.set(e,t);}return t}},Ke=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=Ge.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await mkdir(dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(l=>{t[i]=l;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async upsert(e,t,s="key.id"){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let i=this.data.get(e),n;Array.isArray(i)?n=i:i===void 0?n=[]:n=[i];let c=S.get(t,s);if(c){let l=n.findIndex(p=>S.get(p,s)===c);l>=0?n[l]=t:n.push(t);}else n.push(t);this.data.set(e,n),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return ct(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let l=0;l<i;l++){let p=l*this.size,h=Math.min(p+this.size,r.length),T=r.subarray(p,h);c.push(writeFile(join(this.chunkDir,`${e}.${l}.json`),JSON.stringify({i:l,d:T.toString("base64")})));}return c.push(writeFile(join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await readFile(s,"utf-8")),i=[];for(let p=0;p<r.t;p++)i.push(readFile(join(this.chunkDir,`${e}.${p}.json`),"utf-8").then(h=>Buffer.from(JSON.parse(h).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),l=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,l);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(unlink(join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(unlink(join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await readdir(this.chunkDir)).length===0&&await rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},Z=(a,e)=>new Ke(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var St=async a=>{o.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw o.spinner.error(` Failed to open credentials
2
+ `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await mkdir(a,{recursive:true});let t=Z(`${a}/auth/creds.json`,{BufferJSON:BufferJSON}),s=Z(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||initAuthCreds();return o.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async l=>{let p=`${i}:${l}`,h=await s.get(p);i==="app-state-sync-key"&&h&&(h=proto.Message.AppStateSyncKeyData.fromObject(h)),c[l]=h;})),c},set:async i=>{let n=[];for(let c in i)for(let l in i[c]){let p=i[c][l],h=`${c}:${l}`;p?n.push(s.set(h,p)):n.push(s.delete(h).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var ps=new He,xt=(a,e)=>({logger:o.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new He,mediaCache:new He({stdTTL:60}),cachedGroupMetadata:async t=>ps.get(t),shouldIgnoreJid:t=>isJidBroadcast(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,o.logger)},getMessage:async t=>{if(t?.id)return await a.db("messages").get(t.id)}});var Tt=async a=>{let e=yt();e&&gt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:r}=await St(t),i=xt(a,s),n=us(i);n.ev.on("creds.update",r),o.set("socket",n);};var de=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=o.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),o.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=o.get("socket"),s={};return s.callId=e.id,s.callerId=jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=jidNormalizedUser(e.chatId),s.roomName=L(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var fe={version:"2.0.11",author:"zaadevofc"};var Ct=a=>{gs.generate(a,{small:true},e=>{console.log(e);});},It=async()=>{console.clear(),o.spinner.start(" Checking for updates...");let a=await rt(),e=fe.version===a;o.spinner.stop();let t="Zaileys",s=`
3
+ by ${fe.author} \xB7 v${fe.version}`,r=`${e?"Already using latest version!":`Update available! (v${a})`}
4
+ `,i=e?"lime":"orange",n=await ds.text(t),c=cristal(n);console.log(c),console.log(b(s,"dimgray")),console.log(b(r,i));};var he=class{constructor(e){this.client=e;this.initialize();}async initialize(){o.spinner.start(" Initializing connection...");let e=o.get("socket"),t={},s=async()=>{t.status="reload",o.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await delay(3e3),o.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await nt(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){o.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());o.spinner.warn(` Pairing expired at ${cristal(i)}`),o.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:l}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,o.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();o.spinner.warn(" Please scan the QR code..."),o.spinner.warn(` Qr code expired at ${cristal(p)}`),Ct(l),t.qr=l;return}if(n==="close"){let p=k(c?.error)?.output?.statusCode,h=c?.error?.message||"",T=typeof p=="number"&&p!==DisconnectReason.loggedOut,j=p===515||h.toLowerCase().includes("prekey");if(o.spinner.error(` [${p} - Closed] ${h}`),j){o.spinner.warn(" Session key mismatch detected, attempting repair..."),await me(this.client.options.session),await delay(1e3),await s();return}if(p===401||p===405){o.spinner.warn(" Session may be used by another device/instance."),o.spinner.warn(" If you want to connect here, close the other connection first."),o.spinner.warn(` Or use a different session name in your Client options.
5
+ `);return}if(p===500){o.spinner.error(" Server error occurred, attempting reconnect..."),await s();return}T&&await s();}if(n==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],h=e.user.name||e.user.verifiedName;o.spinner.success(` Connected as ${cristal(h||p)}`);}else o.spinner.success(" Connected!");o.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,o.spinner.start(" Syncing messages history..."),i&&o.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(o.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),o.events.emit("connection",t);});}};var Rt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ze={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ke=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var ve=class{constructor(e){this.client=e;this.limiter=new ke(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=o.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),o.set("message",i),o.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=o.get("socket"),i={},n=oe(e.message),c=n.chain.at(-1),l=n.leaf;l?.message&&(n=oe(l.message),c=n.chain.at(-1),l=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=Rt[c],i.receiverId=jidNormalizedUser(r?.user?.id||""),i.receiverName=L(r?.user?.name||r?.user?.verifiedName),i.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,h=l?.type===1,T=l?.type===2,j=i.roomId?.includes("@newsletter"),Le=!!e?.message?.questionMessage,J=e?.key?.fromMe||false;if(J&&this.client.options.ignoreMe&&t!=="replied")return;let De=l?.key?.id;if(p||h||T){let A=(await this.client.db("messages").get(i.roomId))?.find(_=>_.key.id===De);if(!A)return;e=A,n=oe(e.message),c=n.chain.at(-1),l=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=R([e?.key],["remoteJidAlt","participant"])||null,i.senderId=jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=L(e?.pushName||e?.verifiedBizName),i.senderDevice=getDevice(i.chatId),i.channelId=$([i.roomId,i.senderId]),i.uniqueId=$([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,j){let I=await r.newsletterMetadata("jid",i.roomId);i.roomName=k(I.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(J&&(i.senderLid=jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(i.text=Fe(l?.paramsJson)?.id),i.text=L(i.text),i.mentions=lt(i.text),i.links=at(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=J,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isPrefix&&(i.text=i.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=j,i.isQuestion=Le,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!Y(Q(n),"editedMessage"),i.isDeleted=p,i.isPinned=h,i.isUnPinned=T,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!Y(Q(l?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!Y(Q(l?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let I=this.client.options.citation;for(let A of Object.keys(I)){let _=I[A];i.citation[A]=async()=>{let K=await _(),Oe=[D(i.roomId),D(i.senderLid),D(i.senderId)];return !!S.intersection(Oe,K).length};}}i.chatType!=="text"&&(i.media={...pt(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let F=l?.contextInfo?.quotedMessage,B=R([F],["viewOnceMessageV2Extension","viewOnceMessage"]);B=Y(Q(F),"viewOnce")?F:B;let G=l?.contextInfo?.stanzaId;if(F&&this.maxReplies){this.maxReplies--;let A=(await this.client.db("messages").get(i.roomId))?.find(K=>K.key.id===G),_={...A,message:B};B?(i.replied=await this.parse(_,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(A,"replied"),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(i),i}};var Me=class{constructor(e){this.client=e;this.connection=new he(e),this.messages=new ve(e),this.calls=new de(e),this.initialize();}connection;messages;calls;async initialize(){let e=o.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").upsert(n.id,n,"id");for(let n of r)await this.client.db("contacts").upsert(n.id,n,"id");for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(s.key.remoteJid,s,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").upsert(s.id,s,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").upsert(s.id,s,"id");});}};var re=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var Ms=u.object({type:u.literal("quick_reply"),text:u.string()}),bs=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),Ss=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),xs=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),Ts=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),As=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([Ms,bs,Ss,xs,Ts]).array()}),Cs=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),Et=u.union([Cs,As]);var ne=u.url().or(u.base64()).or(u.instanceof(Buffer)),Wt=u.object({text:u.string()}).passthrough(),Is=u.object({image:ne,caption:u.string().optional()}).passthrough(),Rs=u.object({audio:ne,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),Ps=u.object({video:ne,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),Es=u.object({sticker:ne,caption:u.string().optional()}).passthrough(),Ws=u.object({document:ne,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ls=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),Ds=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),Os=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),Lt=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:Et.optional()});u.enum(["forward","button","edit","delete"]);var Ns=u.union([Wt,Is,Rs,Ps,Es,Ws,Ls,Ds,Os]),Dt=u.string().or(u.intersection(Ns,Lt.omit({buttons:true}))),Ot=u.intersection(Wt,Lt.omit({banner:true}));var be=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=k(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:k(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=o.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var Se=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=re(Ot,t):t=re(Dt,t));let i=o.get("socket"),n={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,h=this.client.options?.autoMentions,T=this.client.options?.autoPresence,j=S.has(t,"replied"),Le=S.has(t,"banner"),J=S.has(t,"isViewOnce"),De=s=="button",F=S.has(t,"image"),B=S.has(t,"video"),G=S.has(t,"audio"),I=S.has(t,"sticker"),A=S.has(t,"document"),_=S.has(t,"location"),K=S.has(t,"contacts"),Oe=S.has(t,"poll"),st=F||B||G||I||A,H=l?t:R([t],["text","caption"]);if(T&&(G?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),h&&(n={...n,mentions:Be(H),contextInfo:{mentionedJid:Be(H)}}),j&&(c.quoted=k(t).replied,p&&(c.quoted.key.remoteJid=Ze[p],c.quoted.key.participant=Ze[p])),Le&&(n={...n,contextInfo:{externalAdReply:k(t).banner}},n.contextInfo.externalAdReply.mediaType=1),J&&(n={...n,viewOnce:k(t)?.isViewOnce}),H&&(n={...n,text:H,caption:H},st&&delete k(n).text),st){let v=R([t],["image","video","audio","sticker","document"]),E=S.isString(v)?{url:v}:v;if(F&&(n={...n,image:E,jpegThumbnail:await Ue(v)}),B){let W=k(t)?.ptv;n={...n,video:E,ptv:W,jpegThumbnail:await Ue(v)};}if(G){let W=k(t)?.ptt;n={...n,audio:await ut(v),ptt:W,mimetype:W?"audio/ogg; codecs=opus":"audio/mpeg"};}if(I&&(n={...n,sticker:await mt(v,this.client.options?.sticker)}),A){let W=await dt(v);n={...n,fileName:k(t).fileName,...W};}}if(_){let v=k(t).location;n={...n,location:{degreesLatitude:v.latitude,degreesLongitude:v.longitude,url:v.url,address:v.footer,name:v.title}};}if(K){let v=k(t)?.contacts,it=v?.contacts.map(E=>{let W=["BEGIN:VCARD","VERSION:3.0",`FN:${E.fullname}`,`ORG:${E.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${E.phoneNumber}:${E.phoneNumber}`,"END:VCARD"].join(`
6
+ `);return {displayName:E.fullname,vcard:W}});n={...n,contacts:{displayName:v?.title,contacts:it}};}if(Oe){let v=k(t)?.poll;n={...n,poll:{name:v.name,values:v.answers,selectableCount:v.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(n={...n,contextInfo:{...k(n).contextInfo,isForwarded:true,forwardingScore:k(t).isForwardedMany?9999:1}}),s=="edit"&&(n={...n,edit:r?.key},await i.sendPresenceUpdate("paused",e)),s=="delete"&&(n={...n,delete:r?.key},await i.sendPresenceUpdate("paused",e)),De?await new be().send(e,t,c):await i.sendMessage(e,k(n),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return S.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let s=o.get("socket"),r={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(r[t],e)}async reaction(e,t){return await o.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await o.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Qe=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").groupCreate(e,t)}async participant(e,t,s){return await o.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "subject":if(!i)return await r.groupUpdateSubject(e,t);case "description":if(!i)return await r.groupUpdateDescription(e,t);case "picture":return await r.updateProfilePicture(e,ue(t))}}async setting(e,t){let s=o.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await o.get("socket").groupLeave(e)}async inviteCode(e,t){let s=o.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await o.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let r=o.get("socket");switch(s){case "approve":return await r.groupRequestParticipantsUpdate(e,t,s);case "reject":return await r.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await o.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await o.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=o.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,r[t])}},xe=class{constructor(e){this.glient=e;this.group=new Qe(e);}group};var zs=z$1.object({maxMessages:z$1.number().default(20),durationMs:z$1.number().default(1e4)}).optional(),js=z$1.record(z$1.string(),z$1.function({output:z$1.promise(z$1.array(z$1.number()))})).optional(),$s=z$1.object({provider:z$1.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z$1.number())}).optional(),Us=z$1.object({packageName:z$1.string(),authorName:z$1.string(),quality:z$1.number()}).optional(),Nt=z$1.object({session:z$1.string().default("zaileys").optional(),prefix:z$1.string().optional(),ignoreMe:z$1.boolean().default(true).optional(),showLogs:z$1.boolean().default(true).optional(),syncFullHistory:z$1.boolean().default(true).optional(),autoMarkAI:z$1.boolean().default(true).optional(),autoMentions:z$1.boolean().default(true).optional(),autoOnline:z$1.boolean().default(true).optional(),autoRead:z$1.boolean().default(true).optional(),autoPresence:z$1.boolean().default(true).optional(),autoRejectCall:z$1.boolean().default(true).optional(),limiter:zs,citation:js,fakeReply:$s,sticker:Us}),qs=z$1.object({authType:z$1.literal("pairing"),phoneNumber:z$1.number()}),Vs=z$1.object({authType:z$1.literal("qr")}),Ft=z$1.union([qs.extend(Nt.shape),Vs.extend(Nt.shape)]),co=z$1.enum(["connection","messages","calls"]);var mo=u.object({status:u.enum(["connecting","open","close","reload","syncing"]),authType:u.enum(["pairing","qr"]),authTimeout:u.number().optional(),syncProgress:u.number().optional(),syncCompleted:u.boolean().default(false).optional(),qr:u.string().optional(),code:u.string().optional()});var Js=u.enum(["unknown","android","ios","desktop","web"]),Gs=u.enum(["text","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Ks=u.object({channelId:u.string(),uniqueId:u.string(),chatId:u.string(),chatType:Gs,receiverId:u.string(),receiverName:u.string(),roomId:u.string(),roomName:u.string(),senderLid:u.string(),senderId:u.string(),senderName:u.string(),senderDevice:Js,timestamp:u.number(),text:u.string().nullable(),mentions:u.string().array(),links:u.string().array(),isBot:u.boolean(),isFromMe:u.boolean(),isPrefix:u.boolean(),isSpam:u.boolean(),isTagMe:u.boolean(),isGroup:u.boolean(),isNewsletter:u.boolean(),isQuestion:u.boolean(),isStory:u.boolean(),isViewOnce:u.boolean(),isEdited:u.boolean(),isDeleted:u.boolean(),isPinned:u.boolean(),isUnPinned:u.boolean(),isBroadcast:u.boolean(),isEphemeral:u.boolean(),isForwarded:u.boolean(),citation:u.record(u.string(),u.function({output:u.promise(u.boolean())})).nullable(),media:u.object({buffer:u.function(),stream:u.function()}).loose().nullable(),message:u.function({input:[],output:u.custom()}),get replied(){return Ks.nullable()}});var vo=u.object({callId:u.string(),callerId:u.string(),callerName:u.string(),roomId:u.string(),roomName:u.string(),date:u.date(),offline:u.boolean(),status:u.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u.boolean(),isGroup:u.boolean()});var Te=class{collect(e,t,s){let r=t.max??1/0;if(r<=0){s([]);return}let i=o.collectors.get(e);i&&(clearTimeout(i.timeoutId),i.callback(i.messages),o.collectors.delete(e));let n=setTimeout(()=>{let c=o.collectors.get(e);c&&(c.callback(c.messages),o.collectors.delete(e));},t.timeout);o.collectors.set(e,{messages:[],max:r,filter:t.filter,callback:s,timeoutId:n});}push(e){let t=o.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e.channelId)),true)}has(e){return o.collectors.has(e)}cancel(e){let t=o.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e),t.messages):[]}};var Ae=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,o.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),o.spinner.info("Logs Indicator:"),console.log(b(" \u2022","orange")+" Private Chat"),console.log(b(" \u2022","lime")+" Group Chat"),console.log(b(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=k(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),r=b(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),i=b(`${e?.roomName}`,t),n=e?.text?.slice(0,300)||"",c=n?.length>=300?"...":"",l=`${r} \u2192 ${i}
7
+ `;e?.isNewsletter?l+=`${b("[room]","dimgray")} \u2192 ${b(`${e?.roomName} (${D(e?.roomId)})`,t)}
8
+ `:l+=`${b("[sender]","dimgray")} \u2192 ${b(`${e?.senderName} (${D(e?.senderId)})`,t)}
9
+ `,l+=`${b(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${b(n+c,s?["#ff5f6d","#ffc371"]:"brown")}
10
+ `,l+="\u2014",console.log(l);}call(e){if(!o.get("logs")?.ready)return;let t=k(this.getRoomColor(e)),s=b(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=b(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
11
+ `;i+=`${b("[caller]","dimgray")} \u2192 ${b(`${e?.callerName} (${D(e?.callerId)})`,t)}
12
+ `,i+=`${b(`[${e?.status}]`,"dimgray")} \u2192 ${b(e?.isVideo?"Video Call":"Voice Call","brown")}
13
+ `,i+="\u2014",console.log(i);}};var Ce=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var Ie=class{plugins=[];pluginsDir;constructor(e=$e.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!z.existsSync(e))return t;let s=z.readdirSync(e);for(let r of s){let i=$e.join(e,r);z.statSync(i).isDirectory()?this.getAllFiles(i,t):(r.endsWith(".ts")||r.endsWith(".js"))&&!r.endsWith(".d.ts")&&t.push(i);}return t}async load(){if(!z.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let r=(await import(pathToFileURL(t).href)).default;r?.default&&(r=r.default),r?.handler&&r?.config&&this.plugins.push(r);}catch{}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},zo=(a,e)=>({handler:a,config:e});var Re=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let l=t[c];if(i in l){let p=Reflect.get(l,i,n);return typeof p=="function"?p.bind(l):p}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let l=0;l<s;l++){let p=t[l];if(i in p)return Reflect.set(p,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Xe=class{constructor(e){this.client=e;}async block(e){return await o.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await o.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await o.get("socket").updateLastSeenPrivacy(e)}async online(e){return await o.get("socket").updateOnlinePrivacy(e)}async picture(e){return await o.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await o.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await o.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await o.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=o.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await o.get("socket").fetchBlocklist()}async getSettings(){return await o.get("socket").fetchPrivacySettings(true)}},Pe=class{constructor(e){this.plient=e;this.privacy=new Xe(e);}privacy};var et=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").newsletterCreate(e,t)}async action(e,t){let s=o.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ue(t))}}async metadata(e,t){return await o.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await o.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await o.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=o.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await o.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await o.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await o.get("socket").newsletterDemote(e,t)}async delete(e){return await o.get("socket").newsletterDelete(e)}async removePicture(e){return await o.get("socket").newsletterRemovePicture(e)}},Ee=class{constructor(e){this.nlient=e;this.newsletter=new et(e);}newsletter};var tt=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await o.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await o.get("socket").communityLeave(e)}async metadata(e){return await o.get("socket").communityMetadata(e)}async update(e,t,s){let r=o.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=o.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=o.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,k(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,k(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=o.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=o.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},We=class{constructor(e){this.mlient=e;this.community=new tt(e);}community};var Bt=class{constructor(e){this.options=e;this.options=re(Ft,e);let t=new Re().classInjection(this,[new Se(this),new xe(this),new Pe(this),new Ee(this),new We(this)]);return this._ready=this.initialize(t),t}listener;_ready;watchdog=null;logs;collector=new Te;middleware=new Ce;plugins=new Ie;async initialize(e){await It(),await Tt(this),await this.plugins.load(),this.listener=new Me(e||this),this.logs=new Ae(this),this.watchdog=ht({session:this.options.session,checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3,onRecovery:async()=>{await this.initialize(e);}}),this.watchdog.start(),this.setupPrekeyErrorDetection();}prekeyDetected=false;setupPrekeyErrorDetection(){let e=console.log,t=this.watchdog,s=this;console.log=(...r)=>{let i=r.map(n=>String(n)).join(" ").toLowerCase();return (i.includes("closing open session")||i.includes("prekey bundle"))&&!s.prekeyDetected&&(s.prekeyDetected=true,o.spinner.warn(" Prekey bundle error detected"),t?.forceRecovery(),setTimeout(()=>{s.prekeyDetected=false;},6e4)),e.apply(console,r)};}ready(){return this._ready}db(e){return o.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){o.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=R(t,["name","verifiedName","displayName"]),i=R(s,["notify","name"]);return L(r||i)||null}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${ue.author} \xB7 v${ue.version}`,r=`${e?"Already using latest version!":`Upd
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/14/2025 6:27:46 PM
21
+ * Last build time: 12/14/2025 10:59:53 PM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
- */export{re as AudioProcessor,Ot as Client,ae as DocumentProcessor,ne as ImageProcessor,qe as Lowdb,Y as MediaProcessor,xe as Plugins,ze as SessionWatchdog,oe as StickerProcessor,D as VideoProcessor,W as cleanJid,at as cleanMediaObject,mt as cleanupSocket,G as createLowdb,ft as createWatchdog,wo as definePlugins,Oe as extractJids,rt as extractUrls,ie as findGlobalWord,nt as findNestedByKeys,N as generateId,H as getDeepContent,dt as getExistingSocket,tt as getLatestLibVersion,$e as getMediaThumbnail,ot as getUsersMentions,Ri as getVideoDuration,Ii as getVideoThumbnail,ct as getWaAudio,lt as getWaDocument,pt as getWaSticker,Bi as getWatchdog,h as ignoreLint,M as logColor,ai as modifyFn,E as normalizeText,di as numbersToJids,C as pickKeysFromArray,oi as randomize,St as registerAuthCreds,st as removeAuthCreds,pe as repairSessionKeys,ni as shuffleString,ce as toBuffer,Le as toJson,se as toString,vt as useAuthState};
24
+ */export{ae as AudioProcessor,xs as ButtonInteractiveCallType,Ss as ButtonInteractiveCopyType,Ms as ButtonInteractiveReplyType,Ts as ButtonInteractiveSingleSelectType,As as ButtonInteractiveType,bs as ButtonInteractiveUrlType,Cs as ButtonSimpleType,Et as ButtonType,js as CitationType,Bt as Client,qs as ClientAuthPairingType,Vs as ClientAuthQRType,Nt as ClientBaseType,Ft as ClientOptionsType,Js as DEVICE_ENUM_TYPES,pe as DocumentProcessor,co as EventEnumType,$s as FakeReplyType,ce as ImageProcessor,zs as LimiterType,vo as ListenerCallsType,mo as ListenerConnectionType,Ks as ListenerMessagesType,Ke as Lowdb,Gs as MESSAGE_ENUM_TYPES,se as MediaProcessor,Ie as Plugins,qe as SessionWatchdog,Us as StickerMetadataType,le as StickerProcessor,O as VideoProcessor,D as cleanJid,pt as cleanMediaObject,gt as cleanupSocket,Z as createLowdb,ht as createWatchdog,zo as definePlugins,Be as extractJids,at as extractUrls,Y as findGlobalWord,ct as findNestedByKeys,$ as generateId,oe as getDeepContent,yt as getExistingSocket,rt as getLatestLibVersion,Ue as getMediaThumbnail,lt as getUsersMentions,Oi as getVideoDuration,Di as getVideoThumbnail,ut as getWaAudio,dt as getWaDocument,mt as getWaSticker,qi as getWatchdog,k as ignoreLint,b as logColor,di as modifyFn,L as normalizeText,wi as numbersToJids,R as pickKeysFromArray,mi as randomize,Tt as registerAuthCreds,nt as removeAuthCreds,me as repairSessionKeys,ui as shuffleString,ue as toBuffer,Fe as toJson,Q as toString,St as useAuthState};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zaileys",
3
3
  "description": "Zaileys - Simplified WhatsApp Node.js TypeScript/JavaScript API",
4
- "version": "2.0.10",
4
+ "version": "2.0.12",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",