zaileys 2.1.2 → 2.1.4

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
@@ -66,6 +66,9 @@ Targeting **Node.js** and **TypeScript** developers, Zaileys integrates essentia
66
66
 
67
67
  ## ðŸŠķ Features
68
68
 
69
+ - ✅ **Auto-Cleanup** - Automatically delete old messages to keep database light
70
+ - ✅ **Intelligent Health Manager** - Auto-recovery and connection monitoring
71
+ - ✅ **History Filtering** - Smart filtering of old history sync messages
69
72
  - ✅ **Type-Safe** - Full TypeScript + Zod validation with autocomplete
70
73
  - ✅ **Middleware** - Intercept and process events globally
71
74
  - ✅ **Plugin System** - Drop-in file-based plugins
@@ -235,6 +238,8 @@ These options apply to both authentication methods:
235
238
  | `showLogs` | `boolean` | `true` | Enable internal logging. |
236
239
  | `ignoreMe` | `boolean` | `true` | Ignore messages sent by the bot itself. |
237
240
  | `syncFullHistory` | `boolean` | `true` | Sync full chat history on startup. |
241
+ | `cleanupDays` | `number` | `7` | Days to keep messages before auto-deletion. |
242
+ | `disableFFmpeg` | `boolean` | `false` | Disable built-in FFmpeg installers. |
238
243
 
239
244
  ### Automation Options
240
245
 
@@ -272,6 +277,14 @@ wa.use(async (ctx, next) => {
272
277
  });
273
278
  ````
274
279
 
280
+ ### 🛠ïļ Maintenance & Health
281
+
282
+ Zaileys includes built-in tools to keep your bot running smoothly and your database light.
283
+
284
+ - **Auto-Cleanup**: Automatically deletes messages older than `cleanupDays` (default 7) every hour.
285
+ - **Intelligent Recovery**: Automatically detects and repairs session issues or connection drops.
286
+ - **History Filtering**: Prevents database bloat by ignoring extremely old messages during the initial history sync.
287
+
275
288
  ### ðŸ§Đ Plugins
276
289
 
277
290
  Zaileys features a built-in file-based plugin system. By default, it looks for plugins in the `plugins` directory of your project root.
@@ -497,18 +510,20 @@ Send one or multiple contacts.
497
510
 
498
511
  ```typescript
499
512
  await wa.send(ctx.roomId, {
500
- title: 'My Contacts',
501
- contacts: [
502
- {
503
- fullname: 'John Doe',
504
- phoneNumber: 6281234567890,
505
- organization: 'Company Inc.',
506
- },
507
- {
508
- fullname: 'Jane Smith',
509
- phoneNumber: 6289876543210,
510
- },
511
- ],
513
+ contacts: {
514
+ title: 'My Contacts',
515
+ contacts: [
516
+ {
517
+ fullname: 'John Doe',
518
+ phoneNumber: 6281234567890,
519
+ organization: 'Company Inc.',
520
+ },
521
+ {
522
+ fullname: 'Jane Smith',
523
+ phoneNumber: 6289876543210,
524
+ },
525
+ ],
526
+ },
512
527
  });
513
528
  ```
514
529
 
package/dist/index.d.mts CHANGED
@@ -53,13 +53,15 @@ declare const SignalOptionsType: z.ZodUnion<[z.ZodString, z.ZodIntersection<z.Zo
53
53
  footer: z.ZodOptional<z.ZodString>;
54
54
  }, z.core.$strip>>;
55
55
  }, z.core.$loose>, z.ZodObject<{
56
- title: z.ZodOptional<z.ZodString>;
57
- contacts: z.ZodArray<z.ZodObject<{
58
- fullname: z.ZodString;
59
- phoneNumber: z.ZodNumber;
60
- organization: z.ZodOptional<z.ZodString>;
61
- }, z.core.$strip>>;
62
- }, z.core.$strip>, z.ZodObject<{
56
+ contacts: z.ZodObject<{
57
+ title: z.ZodOptional<z.ZodString>;
58
+ contacts: z.ZodArray<z.ZodObject<{
59
+ fullname: z.ZodString;
60
+ phoneNumber: z.ZodNumber;
61
+ organization: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>>;
63
+ }, z.core.$strip>;
64
+ }, z.core.$loose>, z.ZodObject<{
63
65
  poll: z.ZodObject<{
64
66
  name: z.ZodString;
65
67
  answers: z.ZodArray<z.ZodString>;
@@ -697,6 +699,7 @@ declare const ClientBaseType: z$1.ZodObject<{
697
699
  showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
698
700
  syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
699
701
  disableFFmpeg: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
702
+ cleanupDays: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodNumber>>;
700
703
  autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
701
704
  autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
702
705
  autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
@@ -746,6 +749,7 @@ declare const ClientOptionsType: z$1.ZodUnion<readonly [z$1.ZodObject<{
746
749
  showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
747
750
  syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
748
751
  disableFFmpeg: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
752
+ cleanupDays: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodNumber>>;
749
753
  autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
750
754
  autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
751
755
  autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
@@ -786,6 +790,7 @@ declare const ClientOptionsType: z$1.ZodUnion<readonly [z$1.ZodObject<{
786
790
  showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
787
791
  syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
788
792
  disableFFmpeg: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
793
+ cleanupDays: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodNumber>>;
789
794
  autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
790
795
  autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
791
796
  autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
@@ -971,6 +976,7 @@ declare class HealthManager {
971
976
  private lastActivityTime;
972
977
  private lastRecoveryTime;
973
978
  private checkInterval;
979
+ private cleanupInterval;
974
980
  private isRecovering;
975
981
  private retryCount;
976
982
  private options;
@@ -992,6 +998,7 @@ declare class Logs {
992
998
  constructor(client: Client);
993
999
  getRoomColor(validator: any): "lime" | "orange" | "dimgray" | "blue";
994
1000
  initialize(): void;
1001
+ private displayIndicator;
995
1002
  message(message: Partial<MessagesContext>): void;
996
1003
  call(call: Partial<CallsContext>): void;
997
1004
  }
@@ -1148,6 +1155,7 @@ declare class Client {
1148
1155
  }>>;
1149
1156
  getRoomName(roomId: string): Promise<string>;
1150
1157
  getLabelName(roomId: string): Promise<string>;
1158
+ cleanupMessages(days?: number): Promise<void>;
1151
1159
  }
1152
1160
 
1153
1161
  declare const registerAuthCreds: (client: Client) => Promise<void>;
package/dist/index.d.ts CHANGED
@@ -53,13 +53,15 @@ declare const SignalOptionsType: z.ZodUnion<[z.ZodString, z.ZodIntersection<z.Zo
53
53
  footer: z.ZodOptional<z.ZodString>;
54
54
  }, z.core.$strip>>;
55
55
  }, z.core.$loose>, z.ZodObject<{
56
- title: z.ZodOptional<z.ZodString>;
57
- contacts: z.ZodArray<z.ZodObject<{
58
- fullname: z.ZodString;
59
- phoneNumber: z.ZodNumber;
60
- organization: z.ZodOptional<z.ZodString>;
61
- }, z.core.$strip>>;
62
- }, z.core.$strip>, z.ZodObject<{
56
+ contacts: z.ZodObject<{
57
+ title: z.ZodOptional<z.ZodString>;
58
+ contacts: z.ZodArray<z.ZodObject<{
59
+ fullname: z.ZodString;
60
+ phoneNumber: z.ZodNumber;
61
+ organization: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>>;
63
+ }, z.core.$strip>;
64
+ }, z.core.$loose>, z.ZodObject<{
63
65
  poll: z.ZodObject<{
64
66
  name: z.ZodString;
65
67
  answers: z.ZodArray<z.ZodString>;
@@ -697,6 +699,7 @@ declare const ClientBaseType: z$1.ZodObject<{
697
699
  showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
698
700
  syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
699
701
  disableFFmpeg: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
702
+ cleanupDays: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodNumber>>;
700
703
  autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
701
704
  autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
702
705
  autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
@@ -746,6 +749,7 @@ declare const ClientOptionsType: z$1.ZodUnion<readonly [z$1.ZodObject<{
746
749
  showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
747
750
  syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
748
751
  disableFFmpeg: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
752
+ cleanupDays: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodNumber>>;
749
753
  autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
750
754
  autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
751
755
  autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
@@ -786,6 +790,7 @@ declare const ClientOptionsType: z$1.ZodUnion<readonly [z$1.ZodObject<{
786
790
  showLogs: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
787
791
  syncFullHistory: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
788
792
  disableFFmpeg: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
793
+ cleanupDays: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodNumber>>;
789
794
  autoMarkAI: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
790
795
  autoMentions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
791
796
  autoOnline: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodBoolean>>;
@@ -971,6 +976,7 @@ declare class HealthManager {
971
976
  private lastActivityTime;
972
977
  private lastRecoveryTime;
973
978
  private checkInterval;
979
+ private cleanupInterval;
974
980
  private isRecovering;
975
981
  private retryCount;
976
982
  private options;
@@ -992,6 +998,7 @@ declare class Logs {
992
998
  constructor(client: Client);
993
999
  getRoomColor(validator: any): "lime" | "orange" | "dimgray" | "blue";
994
1000
  initialize(): void;
1001
+ private displayIndicator;
995
1002
  message(message: Partial<MessagesContext>): void;
996
1003
  call(call: Partial<CallsContext>): void;
997
1004
  }
@@ -1148,6 +1155,7 @@ declare class Client {
1148
1155
  }>>;
1149
1156
  getRoomName(roomId: string): Promise<string>;
1150
1157
  getLabelName(roomId: string): Promise<string>;
1158
+ cleanupMessages(days?: number): Promise<void>;
1151
1159
  }
1152
1160
 
1153
1161
  declare const registerAuthCreds: (client: Client) => Promise<void>;
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
- 'use strict';var jt=require('baileys'),Oe=require('fs/promises'),jetdb=require('jetdb'),nanospinner=require('nanospinner'),Be=require('node-cache'),events=require('events'),Dt=require('pino'),F=require('fs'),at=require('gradient-string'),x=require('lodash'),fileType=require('file-type'),K=require('fluent-ffmpeg'),Jt=require('node-webpmux'),os$1=require('os'),Le=require('path'),_e=require('sharp'),Ht=require('figlet'),Qt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),As=require('stream'),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 jt__default=/*#__PURE__*/_interopDefault(jt);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var Be__default=/*#__PURE__*/_interopDefault(Be);var Dt__default=/*#__PURE__*/_interopDefault(Dt);var F__namespace=/*#__PURE__*/_interopNamespace(F);var at__default=/*#__PURE__*/_interopDefault(at);var x__default=/*#__PURE__*/_interopDefault(x);var K__default=/*#__PURE__*/_interopDefault(K);var Jt__default=/*#__PURE__*/_interopDefault(Jt);var Le__namespace=/*#__PURE__*/_interopNamespace(Le);var _e__default=/*#__PURE__*/_interopDefault(_e);var Ht__default=/*#__PURE__*/_interopDefault(Ht);var Qt__default=/*#__PURE__*/_interopDefault(Qt);var u__default=/*#__PURE__*/_interopDefault(u);var As__default=/*#__PURE__*/_interopDefault(As);var De=class{data=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 n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return jetdb.createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=nanospinner.createSpinner("",{color:"green"});logger=Dt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Be__default.default({stdTTL:300,useClones:false});collectors=new Map},i=new De;var Xe=async a=>{i.spinner.start(" Initializing auth state...");let e=await Oe.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.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=jetdb.createJetDB(`${a}/auth/creds.json`,{BufferJSON:jt.BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=jetdb.createJetDB(`${a}/auth/keys.json`,{BufferJSON:jt.BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||jt.initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,k=await n.get(p);s==="app-state-sync-key"&&k&&(k=jt.proto.Message.AppStateSyncKeyData.fromObject(k)),c[l]=k;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let k=s[l][p],v=`${l}:${p}`;k?r.push({key:v,value:k}):c.push(v);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var Lt=new Be__default.default,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Be__default.default,mediaCache:new Be__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Lt.get(t),auth:{creds:e.creds,keys:jt.makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ee=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await F.promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(k=>c.startsWith(k))?r=!0:s[c]=l;r&&(await F.promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},nt=()=>{let a=i.get("socket");return a?.end?a:null};var ot=async a=>{let e=nt();e&&st(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Xe(t),s=et(a,n),r=jt__default.default(s);r.ev.on("creds.update",o),i.set("socket",r);};var y=a=>a,rt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},it=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Oe__default.default.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},I=(a="")=>{if(!a?.length)return null;let e=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,n)=>[...n].reverse().join("")).replace(/[\uFE00-\uFE0F]/gu,"").replace(/[\u200C\u200D]/gu,"").replace(/[\u2800\u180E]/gu,"").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+/gu," ").replace(/[\p{Cc}\p{Cf}\p{Co}\p{Cn}]/gu,"").trim().replace(/\s+/g," ");return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?at__default.default(e)(a):at__default.default([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return x__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},V=a=>{try{return JSON.stringify(a)}catch{let e=x__default.default.attempt(()=>JSON.stringify(Fe(a)||"{}"));return x__default.default.isError(e)?"{}":e}},Tn=(a="")=>x__default.default.shuffle(a).join(""),J=(a="",e="")=>a?x__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,ct=(a="")=>a?x__default.default.castArray(a.match(jt.URL_REGEX)||[]):[],Cn=a=>a[Math.floor(Math.random()*a.length)],B=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,k,v]=p;r=r?.[k]?.[parseInt(v,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},An=(a,e)=>{let t=x__default.default.castArray(e),n=(r,c)=>x__default.default.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>x__default.default.some(c,(l,p)=>r?.[p]===l),s=r=>x__default.default.isArray(r)?x__default.default.find(r,s)??r:x__default.default.isObject(r)?x__default.default.find(t,p=>n(r,p))||x__default.default.find(t,p=>o(r,p))?r:x__default.default.find(x__default.default.values(r),s)??r:null;return s(a)},In=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var $=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),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 x__default.default.toArray(e)},Ne=(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 x__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Bn=a=>x__default.default.isEmpty(a)?[]:x__default.default.map([...a],e=>`${e}@s.whatsapp.net`),pt=a=>x__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"]),te=a=>{if(!a)return {leaf:void 0,chain:[]};let e=jt.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=jt.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},P=a=>Number(a?.split("@")[0]);var ut=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;K__default.default.setFfmpegPath(e.path),K__default.default.setFfprobePath(t.path);}catch{}},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"}},b=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Le__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}`)}}},R=class{static async toBuffer(e){if(x__default.default.isBuffer(e))return e;if(x__default.default.isArrayBuffer(e))return Buffer.from(e);if(x__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 n=await t.arrayBuffer();return Buffer.from(n)}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(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},H=class{static async process(e){return new Promise((t,n)=>{let o=K__default.default(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{K__default.default.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},se=class{static async getWaAudio(e,t="opus"){let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);_.validate(o,h.MIME.AUDIO);let s=b.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=b.createTempPath("audio_out",r);await b.safeWriteFile(s,n);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 H.process({input:s,output:c,options:p,onEnd:async()=>{l=await b.safeReadFile(c);},onError:async()=>{await b.cleanup([s,c]);}}),await b.cleanup([s,c]),l}catch(p){throw await b.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},W=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);_.validate(n,h.MIME.VIDEO);let o=b.createTempPath("video","mp4"),s=b.createTempPath("thumb","jpg");await b.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{K__default.default(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:Le__namespace.default.basename(s),folder:Le__namespace.default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await b.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await b.cleanup([o,s]),r}catch(c){throw await b.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return H.getDuration(e)}},ne=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===h.MIME.GIF?_e__default.default(e,{animated:false}):_e__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,n="default"){let o=_e__default.default(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=h.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Z=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!_.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?W.getThumbnail(e):ne.getThumbnail(t)}},oe=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"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=b.createTempPath("sticker_in",o),r=b.createTempPath("sticker_out","webp");await b.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let v=await W.getDuration(s);c=y(Math.min(v,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let l=`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`,p=Math.max(1,Math.min(100,100-n)),k;try{return await H.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await b.safeReadFile(r);},onError:async()=>{await b.cleanup([s,r]);}}),await b.cleanup([s,r]),k}catch(v){throw await b.cleanup([s,r]),new Error(`Animated sticker processing failed: ${v.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=_.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await ne.resizeForSticker(n,s,c),p=this.createExifMetadata(t),k=new Jt__default.default.Image;await k.load(l),k.exif=p;let v=await k.save(null);return Buffer.isBuffer(v)?v:Buffer.from(v)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},re=class{static async create(e){try{let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:$(Date.now().toString()),jpegThumbnail:await Z.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ie=R.toBuffer.bind(R),mt=se.getWaAudio.bind(se),Gn=W.getThumbnail.bind(W),Kn=W.getDuration.bind(W),je=Z.getThumbnail.bind(Z),dt=oe.create.bind(oe),ft=re.create.bind(re);var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jt.jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jt.jidNormalizedUser(e.chatId),n.roomName=I(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ce={version:"2.1.1",author:"zaadevofc"};var yt=a=>{Qt__default.default.generate(a,{small:true},e=>{console.log(e);});},ht=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await rt(),e=ce.version===a;i.spinner.stop();let t="Zaileys",n=`
1
+ 'use strict';var zt=require('baileys'),Fe=require('fs/promises'),jetdb=require('jetdb'),nanospinner=require('nanospinner'),Be=require('node-cache'),events=require('events'),Bt=require('pino'),N=require('fs'),rt=require('unorm'),ct=require('gradient-string'),x=require('lodash'),fileType=require('file-type'),H=require('fluent-ffmpeg'),Gt=require('node-webpmux'),os$1=require('os'),je=require('path'),_e=require('sharp'),Zt=require('figlet'),Yt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),Is=require('stream'),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 zt__default=/*#__PURE__*/_interopDefault(zt);var Fe__default=/*#__PURE__*/_interopDefault(Fe);var Be__default=/*#__PURE__*/_interopDefault(Be);var Bt__default=/*#__PURE__*/_interopDefault(Bt);var N__namespace=/*#__PURE__*/_interopNamespace(N);var rt__default=/*#__PURE__*/_interopDefault(rt);var ct__default=/*#__PURE__*/_interopDefault(ct);var x__default=/*#__PURE__*/_interopDefault(x);var H__default=/*#__PURE__*/_interopDefault(H);var Gt__default=/*#__PURE__*/_interopDefault(Gt);var je__namespace=/*#__PURE__*/_interopNamespace(je);var _e__default=/*#__PURE__*/_interopDefault(_e);var Zt__default=/*#__PURE__*/_interopDefault(Zt);var Yt__default=/*#__PURE__*/_interopDefault(Yt);var u__default=/*#__PURE__*/_interopDefault(u);var Is__default=/*#__PURE__*/_interopDefault(Is);var We=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return jetdb.createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=nanospinner.createSpinner("",{color:"green"});logger=Bt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Be__default.default({stdTTL:300,useClones:false});collectors=new Map},i=new We;var Xe=async a=>{i.spinner.start(" Initializing auth state...");let e=await Fe.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.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 Fe.mkdir(a,{recursive:true});let t=jetdb.createJetDB(`${a}/auth/creds.json`,{BufferJSON:zt.BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=jetdb.createJetDB(`${a}/auth/keys.json`,{BufferJSON:zt.BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||zt.initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,w=await n.get(p);s==="app-state-sync-key"&&w&&(w=zt.proto.Message.AppStateSyncKeyData.fromObject(w)),c[l]=w;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let w=s[l][p],M=`${l}:${p}`;w?r.push({key:M,value:w}):c.push(M);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var Lt=new Be__default.default,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Be__default.default,mediaCache:new Be__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Lt.get(t),auth:{creds:e.creds,keys:zt.makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ee=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await N.promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(w=>c.startsWith(w))?r=!0:s[c]=l;r&&(await N.promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},nt=()=>{let a=i.get("socket");return a?.end?a:null};var ot=async a=>{let e=nt();e&&st(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Xe(t),s=et(a,n),r=zt__default.default(s);r.ev.on("creds.update",o),i.set("socket",r);};var y=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},at=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Fe__default.default.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},I=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>rt__default.default.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>rt__default.default.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var v=(a,e="lime")=>Array.isArray(e)?ct__default.default(e)(a):ct__default.default([e,e])(a),Ne=a=>{try{return JSON.parse(a)}catch{return x__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},V=a=>{try{return JSON.stringify(a)}catch{let e=x__default.default.attempt(()=>JSON.stringify(Ne(a)||"{}"));return x__default.default.isError(e)?"{}":e}},An=(a="")=>x__default.default.shuffle(a).join(""),J=(a="",e="")=>a?x__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?x__default.default.castArray(a.match(zt.URL_REGEX)||[]):[],In=a=>a[Math.floor(Math.random()*a.length)],B=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,w,M]=p;r=r?.[w]?.[parseInt(M,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},Rn=(a,e)=>{let t=x__default.default.castArray(e),n=(r,c)=>x__default.default.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>x__default.default.some(c,(l,p)=>r?.[p]===l),s=r=>x__default.default.isArray(r)?x__default.default.find(r,s)??r:x__default.default.isObject(r)?x__default.default.find(t,p=>n(r,p))||x__default.default.find(t,p=>o(r,p))?r:x__default.default.find(x__default.default.values(r),s)??r:null;return s(a)},En=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var $=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},pt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return x__default.default.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 x__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},On=a=>x__default.default.isEmpty(a)?[]:x__default.default.map([...a],e=>`${e}@s.whatsapp.net`),ut=a=>x__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"]),te=a=>{if(!a)return {leaf:void 0,chain:[]};let e=zt.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=zt.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},P=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;H__default.default.setFfmpegPath(e.path),H__default.default.setFfprobePath(t.path);}catch{}},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"}},b=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Fe__default.default.unlink(t)));}static async safeReadFile(e){try{return await Fe__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Fe__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},R=class{static async toBuffer(e){if(x__default.default.isBuffer(e))return e;if(x__default.default.isArrayBuffer(e))return Buffer.from(e);if(x__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 n=await t.arrayBuffer();return Buffer.from(n)}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(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},K=class{static async process(e){return new Promise((t,n)=>{let o=H__default.default(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{H__default.default.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},se=class{static async getWaAudio(e,t="opus"){let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);_.validate(o,h.MIME.AUDIO);let s=b.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=b.createTempPath("audio_out",r);await b.safeWriteFile(s,n);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 K.process({input:s,output:c,options:p,onEnd:async()=>{l=await b.safeReadFile(c);},onError:async()=>{await b.cleanup([s,c]);}}),await b.cleanup([s,c]),l}catch(p){throw await b.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},D=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);_.validate(n,h.MIME.VIDEO);let o=b.createTempPath("video","mp4"),s=b.createTempPath("thumb","jpg");await b.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{H__default.default(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:je__namespace.default.basename(s),folder:je__namespace.default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await b.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await b.cleanup([o,s]),r}catch(c){throw await b.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return K.getDuration(e)}},ne=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===h.MIME.GIF?_e__default.default(e,{animated:false}):_e__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,n="default"){let o=_e__default.default(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=h.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Z=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!_.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?D.getThumbnail(e):ne.getThumbnail(t)}},oe=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"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=b.createTempPath("sticker_in",o),r=b.createTempPath("sticker_out","webp");await b.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let M=await D.getDuration(s);c=y(Math.min(M,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let l=`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`,p=Math.max(1,Math.min(100,100-n)),w;try{return await K.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{w=await b.safeReadFile(r);},onError:async()=>{await b.cleanup([s,r]);}}),await b.cleanup([s,r]),w}catch(M){throw await b.cleanup([s,r]),new Error(`Animated sticker processing failed: ${M.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=_.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await ne.resizeForSticker(n,s,c),p=this.createExifMetadata(t),w=new Gt__default.default.Image;await w.load(l),w.exif=p;let M=await w.save(null);return Buffer.isBuffer(M)?M:Buffer.from(M)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},re=class{static async create(e){try{let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:$(Date.now().toString()),jpegThumbnail:await Z.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ie=R.toBuffer.bind(R),dt=se.getWaAudio.bind(se),Kn=D.getThumbnail.bind(D),Zn=D.getDuration.bind(D),Le=Z.getThumbnail.bind(Z),ft=oe.create.bind(oe),gt=re.create.bind(re);var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=zt.jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=zt.jidNormalizedUser(e.chatId),n.roomName=I(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ce={version:"2.1.3",author:"zaadevofc"};var ht=a=>{Yt__default.default.generate(a,{small:true},e=>{console.log(e);});},wt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await it(),e=ce.version===a;i.spinner.stop();let t="Zaileys",n=`
3
3
  by ${ce.author} \xB7 v${ce.version}`,o=`${e?"Already using latest version!":`Update available! (v${a})`}
4
- `,s=e?"lime":"orange",r=await Ht__default.default.text(t),c=at.cristal(r);console.log(c),console.log(M(n,"dimgray")),console.log(M(o,s));};var ue=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await jt.delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await jt.delay(3e3),await it(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await jt.delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${at.cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+at.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${at.cristal(p)}`),yt(l),t.qr=l;return}if(r==="close"){let p=y(c?.error)?.output?.statusCode,k=c?.error?.message||"",v=typeof p=="number"&&p!==jt.DisconnectReason.loggedOut,N=p===515||k.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${k}`),N){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await ee(this.client.options.session),await jt.delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
- `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}v&&await n();}if(r==="open")if(e.user?.id){let p=jt.jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${at.cristal(k||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var kt={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",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",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 me=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 fe=class{constructor(e){this.client=e;this.limiter=new me(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");e.ev.on("messages.upsert",async({messages:t,type:n})=>{if(n==="notify")for(let o of t){let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=te(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=te(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=kt[c],!s.chatType)return;s.receiverId=jt.jidNormalizedUser(o?.user?.id||""),s.receiverName=I(o?.user?.name||o?.user?.verifiedName),s.roomId=jt.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,k=l?.type===1,v=l?.type===2,N=s.roomId?.includes("@newsletter"),Ie=!!e?.message?.questionMessage,j=e?.key?.fromMe||false;if(j&&this.client.options.ignoreMe&&t!=="replied")return;let Re=l?.key?.id;if(p||k||v){let T=await this.client.db("messages").query(s.roomId).where("key.id","=",Re).first();if(!T)return;e=T,r=te(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=B([e?.key],["participant","remoteJid","remoteJidAlt"])||null,s.senderId=jt.jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt),s.senderName=I(e?.pushName||e?.verifiedBizName),s.senderDevice=jt.getDevice(s.chatId),s.channelId=$([s.roomId,s.senderId]),s.uniqueId=$([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,N){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=y(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(j&&(s.senderLid=jt.jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Fe(l?.paramsJson)?.id),s.text=I(s.text),s.mentions=lt(s.text),s.links=ct(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=j,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,x__default.default.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=N,s.isQuestion=Ie,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!J(V(r),"editedMessage"),s.isDeleted=p,s.isPinned=k,s.isUnPinned=v,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!J(V(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!J(V(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let U of Object.keys(T)){let Ee=T[U];s.citation[U]=async()=>{let Pe=await Ee(),We=[P(s.roomId),P(s.senderLid),P(s.senderId)];return !!x__default.default.intersection(We,Pe).length};}}s.chatType!=="text"&&(s.media={...pt(l),buffer:()=>jt.downloadMediaMessage(e,"buffer",{}),stream:()=>jt.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let O=l?.contextInfo?.quotedMessage,X=J(V(O),"viewOnce"),z=l?.contextInfo?.stanzaId;if(O&&this.maxReplies){this.maxReplies--;let T=await this.client.getMessageByChatId(z,O);T&&(s.replied=T,X&&(s.replied.isViewOnce=true)),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ge=class{constructor(e){this.client=e;this.connection=new ue(e),this.messages=new fe(e),this.calls=new ae(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var Q=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ss=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),ns=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),os=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),rs=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),is=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()}),as=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ss,ns,os,rs,is]).array()}),cs=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()}),Mt=u__default.default.union([cs,as]);var ls=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),ps=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),us=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),Ue=u.z.enum(["default","rounded","circle","oval"]).default("default"),ms=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number(),shape:Ue.optional()}).optional(),vt=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(),disableFFmpeg:u.z.boolean().default(false).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:ls,citation:ps,fakeReply:us,sticker:ms}),ds=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),fs=u.z.object({authType:u.z.literal("qr")}),xt=u.z.union([ds.extend(vt.shape),fs.extend(vt.shape)]),or=u.z.enum(["connection","messages","calls"]);var Y=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),St=u__default.default.object({text:u__default.default.string()}).passthrough(),gs=u__default.default.object({image:Y,caption:u__default.default.string().optional()}).passthrough(),ys=u__default.default.object({audio:Y,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),hs=u__default.default.object({video:Y,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),ks=u__default.default.object({sticker:Y,shape:Ue.optional(),caption:u__default.default.string().optional()}).passthrough(),ws=u__default.default.object({document:Y,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),bs=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(),Ms=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()}),vs=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()})}),Tt=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:Mt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var xs=u__default.default.union([St,gs,ys,hs,ks,ws,bs,Ms,vs]),Ct=u__default.default.string().or(u__default.default.intersection(xs,Tt.omit({buttons:true}))),At=u__default.default.intersection(St,Tt.omit({banner:true}));var ye=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=y(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=jt.generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:jt.generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!jt.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var he=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Q(At,t):t=Q(Ct,t));let s=i.get("socket"),r={},c={},l=x__default.default.isString(t),p=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,v=this.client.options?.autoPresence,N=x__default.default.has(t,"replied"),Ie=x__default.default.has(t,"banner"),j=x__default.default.has(t,"isViewOnce"),Re=n=="button",O=x__default.default.has(t,"image"),X=x__default.default.has(t,"video"),z=x__default.default.has(t,"audio"),T=x__default.default.has(t,"sticker"),U=x__default.default.has(t,"document"),Ee=x__default.default.has(t,"location"),Pe=x__default.default.has(t,"contacts"),We=x__default.default.has(t,"poll"),He=O||X||z||T||U,q=l?t:B([t],["text","caption"]);if(v&&(z?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),k&&(r={...r,mentions:Ne(q),contextInfo:{mentionedJid:Ne(q)}}),N&&(c.quoted=y(t).replied,p&&(c.quoted.key.remoteJid=ze[p],c.quoted.key.participant=ze[p])),Ie&&(r={...r,contextInfo:{externalAdReply:y(t).banner}},r.contextInfo.externalAdReply.mediaType=1),j&&(r={...r,viewOnce:y(t)?.isViewOnce}),q&&(r={...r,text:q,caption:q},He&&delete y(r).text),He){let w=B([t],["image","video","audio","sticker","document"]),E=x__default.default.isString(w)?{url:w}:w;if(O&&(r={...r,image:E,jpegThumbnail:await je(w)}),X){let A=y(t)?.ptv;r={...r,video:E,ptv:A,jpegThumbnail:await je(w)};}if(z){let A=y(t)?.ptt;r={...r,audio:await mt(w),ptt:A,mimetype:A?"audio/ogg; codecs=opus":"audio/mpeg"};}if(T){let A=y(t)?.shape;r={...r,sticker:await dt(w,{...this.client.options?.sticker,shape:A})};}if(U){let A=await ft(w);r={...r,fileName:y(t).fileName,...A};}}if(Ee){let w=y(t).location;r={...r,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(Pe){let w=y(t)?.contacts,Ze=w?.contacts.map(E=>{let A=["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:A}});r={...r,contacts:{displayName:w?.title,contacts:Ze}};}if(We){let w=y(t)?.poll;r={...r,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...y(r).contextInfo,isForwarded:true,forwardingScore:y(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Re?await new ye().send(e,t,c):await s.sendMessage(e,y(r),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 x__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 n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.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 i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,y(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,y(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},ke=class{constructor(e){this.mlient=e;this.community=new qe(e);}community};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ie(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){return await i.get("socket").groupMetadata(e)}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},we=class{constructor(e){this.glient=e;this.group=new Ve(e);}group};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ie(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},be=class{constructor(e){this.nlient=e;this.newsletter=new Je(e);}newsletter};var Ge=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},Me=class{constructor(e){this.plient=e;this.privacy=new Ge(e);}privacy};var Jr=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 Is=u__default.default.enum(["unknown","android","ios","desktop","web"]),Rs=u__default.default.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","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"]),It=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Rs,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:Is,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(),isStatusMention:u__default.default.boolean(),isGroupStatusMention:u__default.default.boolean(),isHideTags: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({output:u__default.default.promise(u__default.default.instanceof(Buffer))}),stream:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(As__default.default))})}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()})}),Qr=It.extend({replied:It.nullable()});var ti=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 ve=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.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),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Es={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},xe=class{constructor(e,t={}){this.client=e;this.options={...Es,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),i.spinner.success(" Health manager monitoring started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await ee(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};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,i.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),i.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=y(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=M(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
- `;e?.isNewsletter?l+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${P(e?.roomId)})`,t)}
8
- `:l+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${P(e?.senderId)})`,t)}
9
- `,l+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
- `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=y(this.getRoomColor(e)),n=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=M(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
- `;s+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${P(e?.callerId)})`,t)}
12
- `,s+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,s+="\u2014",console.log(s);}};var Te=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ce=class{plugins=[];pluginsDir;constructor(e=Le__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!F__namespace.existsSync(e))return t;let n=F__namespace.readdirSync(e);for(let o of n){let s=Le__namespace.join(e,o);F__namespace.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!F__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(url.pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}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();}},Ti=(a,e)=>({handler:a,config:e});var Ae=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Rt=class{constructor(e){this.options=e;this.options=Q(xt,e);let t=new Ae().classInjection(this,[new he(this),new we(this),new Me(this),new be(this),new ke(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new ve;middleware=new Te;plugins=new Ce;async initialize(e){await ht(),await ut(this.options.disableFFmpeg),await ot(this),await this.plugins.load(),this.listener=new ge(e||this),this.logs=new Se(this),this.health=new xe(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getMessageByChatId(e,t){let n=await this.db("messages").all();for(let[o]of n){let s=await this.db("messages").query(o).where("key.id","=",e).first();if(s)return s={...s,message:t},await this.listener.messages.parse(s)}return null}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;return n&&(o=(await t.groupMetadata(e))?.subject||null),I(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=B(t,["message.protocolMessage.memberLabel"]);return I(n?.label)||null}};
4
+ `,s=e?"lime":"orange",r=await Zt__default.default.text(t),c=ct.cristal(r);console.log(c),console.log(v(n,"dimgray")),console.log(v(o,s));};var ue=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await zt.delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await zt.delay(3e3),await at(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await zt.delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${ct.cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+ct.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${ct.cristal(p)}`),ht(l),t.qr=l;return}if(r==="close"){let p=y(c?.error)?.output?.statusCode,w=c?.error?.message||"",M=typeof p=="number"&&p!==zt.DisconnectReason.loggedOut,O=p===515||w.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${w}`),O){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await ee(this.client.options.session),await zt.delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
+ `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}M&&await n();}if(r==="open")if(e.user?.id){let p=zt.jidNormalizedUser(e.user.id).split("@")[0],w=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${ct.cristal(w||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var kt={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",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",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 me=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 fe=class{constructor(e){this.client=e;this.limiter=new me(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=te(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=te(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=kt[c],!s.chatType)return;s.receiverId=zt.jidNormalizedUser(o?.user?.id||""),s.receiverName=I(o?.user?.name||o?.user?.verifiedName),s.roomId=zt.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,w=l?.type===1,M=l?.type===2,O=s.roomId?.includes("@newsletter"),Ie=!!e?.message?.questionMessage,L=e?.key?.fromMe||false;if(L&&this.client.options.ignoreMe&&t!=="replied")return;let Re=l?.key?.id;if(p||w||M){let T=await this.client.db("messages").query(s.roomId).where("key.id","=",Re).first();if(!T)return;e=T,r=te(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=B([e?.key],["participant","remoteJid"])||null,s.senderId=zt.jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid),s.senderName=I(e?.pushName||e?.verifiedBizName),s.senderDevice=zt.getDevice(s.chatId||""),s.channelId=$([s.roomId,s.senderId]),s.uniqueId=$([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,O){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=y(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(L&&(s.senderLid=zt.jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Ne(l?.paramsJson)?.id),s.text=I(s.text),s.mentions=pt(s.text),s.links=lt(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=L,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,x__default.default.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=O,s.isQuestion=Ie,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!J(V(r),"editedMessage"),s.isDeleted=p,s.isPinned=w,s.isUnPinned=M,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!J(V(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!J(V(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let U of Object.keys(T)){let Ee=T[U];s.citation[U]=async()=>{let Pe=await Ee(),De=[P(s.roomId),P(s.senderLid),P(s.senderId)];return !!x__default.default.intersection(De,Pe).length};}}s.chatType!=="text"&&(s.media={...ut(l),buffer:()=>zt.downloadMediaMessage(e,"buffer",{}),stream:()=>zt.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let F=l?.contextInfo?.quotedMessage,X=J(V(F),"viewOnce"),z=l?.contextInfo?.stanzaId;if(F&&this.maxReplies){this.maxReplies--;let T=await this.client.getMessageByChatId(z,F);T&&(s.replied=T,X&&(s.replied.isViewOnce=true)),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ge=class{constructor(e){this.client=e;this.connection=new ue(e),this.messages=new fe(e),this.calls=new ae(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;Date.now()-o>1440*60*1e3||await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var Q=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ns=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),os=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),rs=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),is=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),as=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()}),cs=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ns,os,rs,is,as]).array()}),ls=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()}),Mt=u__default.default.union([ls,cs]);var ps=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),us=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),ms=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),Ue=u.z.enum(["default","rounded","circle","oval"]).default("default"),ds=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number(),shape:Ue.optional()}).optional(),xt=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(),disableFFmpeg:u.z.boolean().default(false).optional(),cleanupDays:u.z.number().default(7).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:ps,citation:us,fakeReply:ms,sticker:ds}),fs=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),gs=u.z.object({authType:u.z.literal("qr")}),St=u.z.union([fs.extend(xt.shape),gs.extend(xt.shape)]),ir=u.z.enum(["connection","messages","calls"]);var Y=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Tt=u__default.default.object({text:u__default.default.string()}).passthrough(),ys=u__default.default.object({image:Y,caption:u__default.default.string().optional()}).passthrough(),hs=u__default.default.object({audio:Y,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),ws=u__default.default.object({video:Y,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),ks=u__default.default.object({sticker:Y,shape:Ue.optional(),caption:u__default.default.string().optional()}).passthrough(),bs=u__default.default.object({document:Y,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),vs=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(),Ms=u__default.default.object({contacts: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()})}).passthrough(),xs=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()})}),Ct=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:Mt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Ss=u__default.default.union([Tt,ys,hs,ws,ks,bs,vs,Ms,xs]),At=u__default.default.string().or(u__default.default.intersection(Ss,Ct.omit({buttons:true}))),It=u__default.default.intersection(Tt,Ct.omit({banner:true}));var ye=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=y(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=zt.generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:zt.generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!zt.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var he=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Q(It,t):t=Q(At,t));let s=i.get("socket"),r={},c={},l=x__default.default.isString(t),p=this.client.options?.fakeReply?.provider,w=this.client.options?.autoMentions,M=this.client.options?.autoPresence,O=x__default.default.has(t,"replied"),Ie=x__default.default.has(t,"banner"),L=x__default.default.has(t,"isViewOnce"),Re=n=="button",F=x__default.default.has(t,"image"),X=x__default.default.has(t,"video"),z=x__default.default.has(t,"audio"),T=x__default.default.has(t,"sticker"),U=x__default.default.has(t,"document"),Ee=x__default.default.has(t,"location"),Pe=x__default.default.has(t,"contacts"),De=x__default.default.has(t,"poll"),Ke=F||X||z||T||U,q=l?t:B([t],["text","caption"]);if(M&&(z?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),w&&(r={...r,mentions:Oe(q),contextInfo:{mentionedJid:Oe(q)}}),O&&(c.quoted=y(t).replied,p&&(c.quoted.key.remoteJid=ze[p],c.quoted.key.participant=ze[p])),Ie&&(r={...r,contextInfo:{externalAdReply:y(t).banner}},r.contextInfo.externalAdReply.mediaType=1),L&&(r={...r,viewOnce:y(t)?.isViewOnce}),q&&(r={...r,text:q,caption:q},Ke&&delete y(r).text),Ke){let k=B([t],["image","video","audio","sticker","document"]),E=x__default.default.isString(k)?{url:k}:k;if(F&&(r={...r,image:E,jpegThumbnail:await Le(k)}),X){let A=y(t)?.ptv;r={...r,video:E,ptv:A,jpegThumbnail:await Le(k)};}if(z){let A=y(t)?.ptt;r={...r,audio:await dt(k),ptt:A,mimetype:A?"audio/ogg; codecs=opus":"audio/mpeg"};}if(T){let A=y(t)?.shape;r={...r,sticker:await ft(k,{...this.client.options?.sticker,shape:A})};}if(U){let A=await gt(k);r={...r,fileName:y(t).fileName,...A};}}if(Ee){let k=y(t).location;r={...r,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(Pe){let k=y(t)?.contacts,Ze=k?.contacts.map(E=>{let A=["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:A}});r={...r,contacts:{displayName:k?.title,contacts:Ze}};}if(De){let k=y(t)?.poll;r={...r,poll:{name:k.name,values:k.answers,selectableCount:k.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...y(r).contextInfo,isForwarded:true,forwardingScore:y(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Re?await new ye().send(e,t,c):await s.sendMessage(e,y(r),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 x__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 n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.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 i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,y(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,y(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},we=class{constructor(e){this.mlient=e;this.community=new qe(e);}community};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ie(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){return await i.get("socket").groupMetadata(e)}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},ke=class{constructor(e){this.glient=e;this.group=new Ve(e);}group};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ie(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},be=class{constructor(e){this.nlient=e;this.newsletter=new Je(e);}newsletter};var Ge=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},ve=class{constructor(e){this.plient=e;this.privacy=new Ge(e);}privacy};var Hr=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 Rs=u__default.default.enum(["unknown","android","ios","desktop","web"]),Es=u__default.default.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","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"]),Rt=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Es,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:Rs,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(),isStatusMention:u__default.default.boolean(),isGroupStatusMention:u__default.default.boolean(),isHideTags: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({output:u__default.default.promise(u__default.default.instanceof(Buffer))}),stream:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(Is__default.default))})}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()})}),Xr=Rt.extend({replied:Rt.nullable()});var ni=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 Me=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.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),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ps={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},xe=class{constructor(e,t={}){this.client=e;this.options={...Ps,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await ee(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};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;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.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)),n=e?.text?.toLowerCase()?.match("zaileys"),o=v(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=v(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
+ `;e?.isNewsletter?l+=`${v("[room]","dimgray")} \u2192 ${v(`${e?.roomName} (${P(e?.roomId)})`,t)}
8
+ `:l+=`${v("[sender]","dimgray")} \u2192 ${v(`${e?.senderName} (${P(e?.senderId)})`,t)}
9
+ `,l+=`${v(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${v(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
+ `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=y(this.getRoomColor(e)),n=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=v(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
+ `;s+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${P(e?.callerId)})`,t)}
12
+ `,s+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
13
+ `,s+="\u2014",console.log(s);}};var Te=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ce=class{plugins=[];pluginsDir;constructor(e=je__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!N__namespace.existsSync(e))return t;let n=N__namespace.readdirSync(e);for(let o of n){let s=je__namespace.join(e,o);N__namespace.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!N__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(url.pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}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();}},Ai=(a,e)=>({handler:a,config:e});var Ae=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Et=class{constructor(e){this.options=e;this.options=Q(St,e);let t=new Ae().classInjection(this,[new he(this),new ke(this),new ve(this),new be(this),new we(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new Me;middleware=new Te;plugins=new Ce;async initialize(e){await wt(),await mt(this.options.disableFFmpeg),await ot(this),await this.plugins.load(),this.listener=new ge(e||this),this.logs||(this.logs=new Se(this)),this.health&&this.health.stop(),this.health=new xe(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getMessageByChatId(e,t){let n=await this.db("messages").all();for(let[o]of n){let s=await this.db("messages").query(o).where("key.id","=",e).first();if(s)return s={...s,message:t},await this.listener.messages.parse(s)}return null}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;return n&&(o=(await t.groupMetadata(e))?.subject||null),I(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=B(t,["message.protocolMessage.memberLabel"]);return I(n?.label)||null}async cleanupMessages(e=7){let t=Date.now()-e*24*60*60*1e3,n=await this.db("messages").all(),o=0;for(let[s]of n){let r=await this.db("messages").get(s);if(!Array.isArray(r))continue;let c=r.filter(l=>Number(l.messageTimestamp)*1e3<t?(o++,false):true);c.length!==r.length&&await this.db("messages").set(s,c);}o>0&&this.options.showLogs&&i.spinner.info(` Cleaned up ${o} old messages`);}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${ce.author} \xB7 v${ce.version}`,o=`${e?"Already using latest version!":`Upd
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/18/2025 3:31:39 PM
21
+ * Last build time: 12/19/2025 8:53:18 AM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
- */Object.defineProperty(exports,"JetDB",{enumerable:true,get:function(){return jetdb.JetDB}});Object.defineProperty(exports,"createJetDB",{enumerable:true,get:function(){return jetdb.createJetDB}});exports.AudioProcessor=se;exports.BaseMessagesType=It;exports.ButtonInteractiveCallType=rs;exports.ButtonInteractiveCopyType=os;exports.ButtonInteractiveReplyType=ss;exports.ButtonInteractiveSingleSelectType=is;exports.ButtonInteractiveType=as;exports.ButtonInteractiveUrlType=ns;exports.ButtonSimpleType=cs;exports.ButtonType=Mt;exports.CitationType=ps;exports.Client=Rt;exports.ClientAuthPairingType=ds;exports.ClientAuthQRType=fs;exports.ClientBaseType=vt;exports.ClientOptionsType=xt;exports.DEVICE_ENUM_TYPES=Is;exports.DocumentProcessor=re;exports.EventEnumType=or;exports.FakeReplyType=us;exports.ImageProcessor=ne;exports.LimiterType=ls;exports.ListenerCallsType=ti;exports.ListenerConnectionType=Jr;exports.ListenerMessagesType=Qr;exports.MESSAGE_ENUM_TYPES=Rs;exports.MediaProcessor=Z;exports.Plugins=Ce;exports.StickerMetadataType=ms;exports.StickerProcessor=oe;exports.StickerShapeType=Ue;exports.VideoProcessor=W;exports.cleanJid=P;exports.cleanMediaObject=pt;exports.cleanupSocket=st;exports.configureFFmpeg=ut;exports.definePlugins=Ti;exports.extractJids=Ne;exports.extractUrls=ct;exports.findGlobalWord=J;exports.findNestedByKeys=An;exports.generateId=$;exports.getDeepContent=te;exports.getExistingSocket=nt;exports.getLatestLibVersion=rt;exports.getMediaThumbnail=je;exports.getUsersMentions=lt;exports.getVideoDuration=Kn;exports.getVideoThumbnail=Gn;exports.getWaAudio=mt;exports.getWaDocument=ft;exports.getWaSticker=dt;exports.ignoreLint=y;exports.logColor=M;exports.modifyFn=In;exports.normalizeText=I;exports.numbersToJids=Bn;exports.pickKeysFromArray=B;exports.randomize=Cn;exports.registerAuthCreds=ot;exports.removeAuthCreds=it;exports.repairSessionKeys=ee;exports.shuffleString=Tn;exports.toBuffer=ie;exports.toJson=Fe;exports.toString=V;exports.useAuthState=Xe;
24
+ */Object.defineProperty(exports,"JetDB",{enumerable:true,get:function(){return jetdb.JetDB}});Object.defineProperty(exports,"createJetDB",{enumerable:true,get:function(){return jetdb.createJetDB}});exports.AudioProcessor=se;exports.BaseMessagesType=Rt;exports.ButtonInteractiveCallType=is;exports.ButtonInteractiveCopyType=rs;exports.ButtonInteractiveReplyType=ns;exports.ButtonInteractiveSingleSelectType=as;exports.ButtonInteractiveType=cs;exports.ButtonInteractiveUrlType=os;exports.ButtonSimpleType=ls;exports.ButtonType=Mt;exports.CitationType=us;exports.Client=Et;exports.ClientAuthPairingType=fs;exports.ClientAuthQRType=gs;exports.ClientBaseType=xt;exports.ClientOptionsType=St;exports.DEVICE_ENUM_TYPES=Rs;exports.DocumentProcessor=re;exports.EventEnumType=ir;exports.FakeReplyType=ms;exports.ImageProcessor=ne;exports.LimiterType=ps;exports.ListenerCallsType=ni;exports.ListenerConnectionType=Hr;exports.ListenerMessagesType=Xr;exports.MESSAGE_ENUM_TYPES=Es;exports.MediaProcessor=Z;exports.Plugins=Ce;exports.StickerMetadataType=ds;exports.StickerProcessor=oe;exports.StickerShapeType=Ue;exports.VideoProcessor=D;exports.cleanJid=P;exports.cleanMediaObject=ut;exports.cleanupSocket=st;exports.configureFFmpeg=mt;exports.definePlugins=Ai;exports.extractJids=Oe;exports.extractUrls=lt;exports.findGlobalWord=J;exports.findNestedByKeys=Rn;exports.generateId=$;exports.getDeepContent=te;exports.getExistingSocket=nt;exports.getLatestLibVersion=it;exports.getMediaThumbnail=Le;exports.getUsersMentions=pt;exports.getVideoDuration=Zn;exports.getVideoThumbnail=Kn;exports.getWaAudio=dt;exports.getWaDocument=gt;exports.getWaSticker=ft;exports.ignoreLint=y;exports.logColor=v;exports.modifyFn=En;exports.normalizeText=I;exports.numbersToJids=On;exports.pickKeysFromArray=B;exports.randomize=In;exports.registerAuthCreds=ot;exports.removeAuthCreds=at;exports.repairSessionKeys=ee;exports.shuffleString=An;exports.toBuffer=ie;exports.toJson=Ne;exports.toString=V;exports.useAuthState=Xe;
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
- import zt,{BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,URL_REGEX,extractMessageContent,getContentType,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import $e,{stat,mkdir}from'fs/promises';import {createJetDB}from'jetdb';export{JetDB,createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import Fe from'node-cache';import {EventEmitter}from'events';import Bt from'pino';import*as N from'fs';import {promises}from'fs';import ct,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import H from'fluent-ffmpeg';import Gt from'node-webpmux';import {tmpdir}from'os';import*as je from'path';import je__default from'path';import Le from'sharp';import Zt from'figlet';import Yt from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import Is from'stream';import {pathToFileURL}from'url';var Be=class{data=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 n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=createSpinner("",{color:"green"});logger=Bt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Fe({stdTTL:300,useClones:false});collectors=new Map},i=new Be;var et=async a=>{i.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.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=createJetDB(`${a}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=createJetDB(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,w=await n.get(p);s==="app-state-sync-key"&&w&&(w=proto.Message.AppStateSyncKeyData.fromObject(w)),c[l]=w;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let w=s[l][p],x=`${l}:${p}`;w?r.push({key:x,value:w}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var jt=new Fe,tt=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Fe,mediaCache:new Fe({stdTTL:60}),cachedGroupMetadata:async t=>jt.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var nt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},te=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(w=>c.startsWith(w))?r=!0:s[c]=l;r&&(await promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},ot=()=>{let a=i.get("socket");return a?.end?a:null};var rt=async a=>{let e=ot();e&&nt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await et(t),s=tt(a,n),r=zt(s);r.ev.on("creds.update",o),i.set("socket",r);};var h=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},at=async a=>{try{let e=`.session/${a}/auth/creds.json`;await $e.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},R=(a="")=>{if(!a?.length)return null;let e=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,n)=>[...n].reverse().join("")).replace(/[\uFE00-\uFE0F]/gu,"").replace(/[\u200C\u200D]/gu,"").replace(/[\u2800\u180E]/gu,"").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+/gu," ").replace(/[\p{Cc}\p{Cf}\p{Co}\p{Cn}]/gu,"").trim().replace(/\s+/g," ");return e.length?e:null};var v=(a,e="lime")=>Array.isArray(e)?ct(e)(a):ct([e,e])(a),Ne=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},J=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Ne(a)||"{}"));return S.isError(e)?"{}":e}},Cn=(a="")=>S.shuffle(a).join(""),G=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],An=a=>a[Math.floor(Math.random()*a.length)],F=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,w,x]=p;r=r?.[w]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},In=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},Rn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var _=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},pt=(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`])},Fn=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),ut=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"]),se=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;H.setFfmpegPath(e.path),H.setFfprobePath(t.path);}catch{}},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"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__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}`)}}},E=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 n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},L=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)}},Z=class{static async process(e){return new Promise((t,n)=>{let o=H(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{H.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ne=class{static async getWaAudio(e,t="opus"){let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);L.validate(o,k.MIME.AUDIO);let s=M.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",r);await M.safeWriteFile(s,n);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 Z.process({input:s,output:c,options:p,onEnd:async()=>{l=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([s,c]);}}),await M.cleanup([s,c]),l}catch(p){throw await M.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},D=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);L.validate(n,k.MIME.VIDEO);let o=M.createTempPath("video","mp4"),s=M.createTempPath("thumb","jpg");await M.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{H(o).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:je__default.basename(s),folder:je__default.dirname(s),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await M.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await M.cleanup([o,s]),r}catch(c){throw await M.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Z.getDuration(e)}},oe=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===k.MIME.GIF?Le(e,{animated:false}):Le(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=Le(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=k.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Q=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!L.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(k.MIME.VIDEO)?D.getThumbnail(e):oe.getThumbnail(t)}},re=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"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=M.createTempPath("sticker_in",o),r=M.createTempPath("sticker_out","webp");await M.safeWriteFile(s,e);let c=k.STICKER.MAX_DURATION;try{let x=await D.getDuration(s);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-n)),w;try{return await Z.process({input:s,output:r,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()=>{w=await M.safeReadFile(r);},onError:async()=>{await M.cleanup([s,r]);}}),await M.cleanup([s,r]),w}catch(x){throw await M.cleanup([s,r]),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 n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||k.STICKER.DEFAULT_QUALITY,r=L.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await oe.resizeForSticker(n,s,c),p=this.createExifMetadata(t),w=new Gt.Image;await w.load(l),w.exif=p;let x=await w.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},ie=class{static async create(e){try{let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:_(Date.now().toString()),jpegThumbnail:await Q.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ae=E.toBuffer.bind(E),dt=ne.getWaAudio.bind(ne),Kn=D.getThumbnail.bind(D),Hn=D.getDuration.bind(D),ze=Q.getThumbnail.bind(Q),ft=re.create.bind(re),gt=ie.create.bind(ie);var ce=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jidNormalizedUser(e.chatId),n.roomName=R(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var le={version:"2.1.1",author:"zaadevofc"};var ht=a=>{Yt.generate(a,{small:true},e=>{console.log(e);});},kt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await it(),e=le.version===a;i.spinner.stop();let t="Zaileys",n=`
1
+ import Ut,{BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,URL_REGEX,extractMessageContent,getContentType,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import $e,{stat,mkdir}from'fs/promises';import {createJetDB}from'jetdb';export{JetDB,createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import Ne from'node-cache';import {EventEmitter}from'events';import Nt from'pino';import*as O from'fs';import {promises}from'fs';import it from'unorm';import lt,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import K from'fluent-ffmpeg';import Ht from'node-webpmux';import {tmpdir}from'os';import*as Le from'path';import Le__default from'path';import je from'sharp';import Qt from'figlet';import Xt from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import Rs from'stream';import {pathToFileURL}from'url';var Be=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=createSpinner("",{color:"green"});logger=Nt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Ne({stdTTL:300,useClones:false});collectors=new Map},i=new Be;var et=async a=>{i.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.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=createJetDB(`${a}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=createJetDB(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,k=await n.get(p);s==="app-state-sync-key"&&k&&(k=proto.Message.AppStateSyncKeyData.fromObject(k)),c[l]=k;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let k=s[l][p],x=`${l}:${p}`;k?r.push({key:x,value:k}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var zt=new Ne,tt=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Ne,mediaCache:new Ne({stdTTL:60}),cachedGroupMetadata:async t=>zt.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var nt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},te=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(k=>c.startsWith(k))?r=!0:s[c]=l;r&&(await promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},ot=()=>{let a=i.get("socket");return a?.end?a:null};var rt=async a=>{let e=ot();e&&nt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await et(t),s=tt(a,n),r=Ut(s);r.ev.on("creds.update",o),i.set("socket",r);};var h=a=>a,at=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},ct=async a=>{try{let e=`.session/${a}/auth/creds.json`;await $e.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},R=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>it.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>it.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?lt(e)(a):lt([e,e])(a),Oe=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},J=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Oe(a)||"{}"));return S.isError(e)?"{}":e}},In=(a="")=>S.shuffle(a).join(""),G=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,pt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],Rn=a=>a[Math.floor(Math.random()*a.length)],N=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,k,x]=p;r=r?.[k]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},En=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},Pn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var _=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},ut=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.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 S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Fn=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),mt=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"]),se=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},D=a=>Number(a?.split("@")[0]);var dt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;K.setFfmpegPath(e.path),K.setFfprobePath(t.path);}catch{}},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"}},v=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Le__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}`)}}},E=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 n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},j=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)}},Z=class{static async process(e){return new Promise((t,n)=>{let o=K(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{K.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ne=class{static async getWaAudio(e,t="opus"){let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);j.validate(o,w.MIME.AUDIO);let s=v.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=v.createTempPath("audio_out",r);await v.safeWriteFile(s,n);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 Z.process({input:s,output:c,options:p,onEnd:async()=>{l=await v.safeReadFile(c);},onError:async()=>{await v.cleanup([s,c]);}}),await v.cleanup([s,c]),l}catch(p){throw await v.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},W=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);j.validate(n,w.MIME.VIDEO);let o=v.createTempPath("video","mp4"),s=v.createTempPath("thumb","jpg");await v.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{K(o).screenshots({timestamps:[w.THUMBNAIL.TIMESTAMP],filename:Le__default.basename(s),folder:Le__default.dirname(s),size:`${w.THUMBNAIL.SIZE}x${w.THUMBNAIL.SIZE}`,quality:w.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await v.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await v.cleanup([o,s]),r}catch(c){throw await v.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Z.getDuration(e)}},oe=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,n="default"){let o=je(e).resize(w.STICKER.SIZE,w.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=w.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Q=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!j.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(w.MIME.VIDEO)?W.getThumbnail(e):oe.getThumbnail(t)}},re=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"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=v.createTempPath("sticker_in",o),r=v.createTempPath("sticker_out","webp");await v.safeWriteFile(s,e);let c=w.STICKER.MAX_DURATION;try{let x=await W.getDuration(s);c=h(Math.min(x,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-n)),k;try{return await Z.process({input:s,output:r,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()=>{k=await v.safeReadFile(r);},onError:async()=>{await v.cleanup([s,r]);}}),await v.cleanup([s,r]),k}catch(x){throw await v.cleanup([s,r]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===w.MIME.GIF?"gif":e.startsWith(w.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||w.STICKER.DEFAULT_QUALITY,r=j.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await oe.resizeForSticker(n,s,c),p=this.createExifMetadata(t),k=new Ht.Image;await k.load(l),k.exif=p;let x=await k.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},ie=class{static async create(e){try{let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:_(Date.now().toString()),jpegThumbnail:await Q.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ae=E.toBuffer.bind(E),ft=ne.getWaAudio.bind(ne),Zn=W.getThumbnail.bind(W),Qn=W.getDuration.bind(W),ze=Q.getThumbnail.bind(Q),gt=re.create.bind(re),yt=ie.create.bind(ie);var ce=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jidNormalizedUser(e.chatId),n.roomName=R(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var le={version:"2.1.3",author:"zaadevofc"};var wt=a=>{Xt.generate(a,{small:true},e=>{console.log(e);});},kt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await at(),e=le.version===a;i.spinner.stop();let t="Zaileys",n=`
3
3
  by ${le.author} \xB7 v${le.version}`,o=`${e?"Already using latest version!":`Update available! (v${a})`}
4
- `,s=e?"lime":"orange",r=await Zt.text(t),c=cristal(r);console.log(c),console.log(v(n,"dimgray")),console.log(v(o,s));};var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await at(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.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();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${cristal(p)}`),ht(l),t.qr=l;return}if(r==="close"){let p=h(c?.error)?.output?.statusCode,w=c?.error?.message||"",x=typeof p=="number"&&p!==DisconnectReason.loggedOut,O=p===515||w.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${w}`),O){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await te(this.client.options.session),await delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
- `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}x&&await n();}if(r==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],w=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${cristal(w||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var wt={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",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",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"},Ue={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 de=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 ge=class{constructor(e){this.client=e;this.limiter=new de(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");e.ev.on("messages.upsert",async({messages:t,type:n})=>{if(n==="notify")for(let o of t){let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=se(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=se(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=wt[c],!s.chatType)return;s.receiverId=jidNormalizedUser(o?.user?.id||""),s.receiverName=R(o?.user?.name||o?.user?.verifiedName),s.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,w=l?.type===1,x=l?.type===2,O=s.roomId?.includes("@newsletter"),Re=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ee=l?.key?.id;if(p||w||x){let C=await this.client.db("messages").query(s.roomId).where("key.id","=",Ee).first();if(!C)return;e=C,r=se(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=F([e?.key],["participant","remoteJid","remoteJidAlt"])||null,s.senderId=jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt),s.senderName=R(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId),s.channelId=_([s.roomId,s.senderId]),s.uniqueId=_([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,O){let C=await o.newsletterMetadata("jid",s.roomId);s.roomName=h(C.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(z&&(s.senderLid=jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Ne(l?.paramsJson)?.id),s.text=R(s.text),s.mentions=pt(s.text),s.links=lt(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=z,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,S.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=O,s.isQuestion=Re,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!G(J(r),"editedMessage"),s.isDeleted=p,s.isPinned=w,s.isUnPinned=x,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!G(J(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!G(J(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let C=this.client.options.citation;for(let q of Object.keys(C)){let Pe=C[q];s.citation[q]=async()=>{let We=await Pe(),De=[W(s.roomId),W(s.senderLid),W(s.senderId)];return !!S.intersection(De,We).length};}}s.chatType!=="text"&&(s.media={...ut(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let $=l?.contextInfo?.quotedMessage,ee=G(J($),"viewOnce"),U=l?.contextInfo?.stanzaId;if($&&this.maxReplies){this.maxReplies--;let C=await this.client.getMessageByChatId(U,$);C&&(s.replied=C,ee&&(s.replied.isViewOnce=true)),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ye=class{constructor(e){this.client=e;this.connection=new me(e),this.messages=new ge(e),this.calls=new ce(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var Y=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ns=u.object({type:u.literal("quick_reply"),text:u.string()}),os=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),rs=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),is=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),as=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()}),cs=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([ns,os,rs,is,as]).array()}),ls=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),vt=u.union([ls,cs]);var ps=z.object({maxMessages:z.number().default(20),durationMs:z.number().default(1e4)}).optional(),us=z.record(z.string(),z.function({output:z.promise(z.array(z.number()))})).optional(),ms=z.object({provider:z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z.number())}).optional(),qe=z.enum(["default","rounded","circle","oval"]).default("default"),ds=z.object({packageName:z.string(),authorName:z.string(),quality:z.number(),shape:qe.optional()}).optional(),xt=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(),disableFFmpeg:z.boolean().default(false).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:ps,citation:us,fakeReply:ms,sticker:ds}),fs=z.object({authType:z.literal("pairing"),phoneNumber:z.number()}),gs=z.object({authType:z.literal("qr")}),St=z.union([fs.extend(xt.shape),gs.extend(xt.shape)]),rr=z.enum(["connection","messages","calls"]);var X=u.url().or(u.base64()).or(u.instanceof(Buffer)),Tt=u.object({text:u.string()}).passthrough(),ys=u.object({image:X,caption:u.string().optional()}).passthrough(),hs=u.object({audio:X,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),ks=u.object({video:X,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),ws=u.object({sticker:X,shape:qe.optional(),caption:u.string().optional()}).passthrough(),bs=u.object({document:X,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ms=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(),vs=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),xs=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),Ct=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:vt.optional()});u.enum(["forward","button","edit","delete"]);var Ss=u.union([Tt,ys,hs,ks,ws,bs,Ms,vs,xs]),At=u.string().or(u.intersection(Ss,Ct.omit({buttons:true}))),It=u.intersection(Tt,Ct.omit({banner:true}));var he=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=h(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var ke=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Y(It,t):t=Y(At,t));let s=i.get("socket"),r={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,w=this.client.options?.autoMentions,x=this.client.options?.autoPresence,O=S.has(t,"replied"),Re=S.has(t,"banner"),z=S.has(t,"isViewOnce"),Ee=n=="button",$=S.has(t,"image"),ee=S.has(t,"video"),U=S.has(t,"audio"),C=S.has(t,"sticker"),q=S.has(t,"document"),Pe=S.has(t,"location"),We=S.has(t,"contacts"),De=S.has(t,"poll"),Ze=$||ee||U||C||q,V=l?t:F([t],["text","caption"]);if(x&&(U?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),w&&(r={...r,mentions:Oe(V),contextInfo:{mentionedJid:Oe(V)}}),O&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=Ue[p],c.quoted.key.participant=Ue[p])),Re&&(r={...r,contextInfo:{externalAdReply:h(t).banner}},r.contextInfo.externalAdReply.mediaType=1),z&&(r={...r,viewOnce:h(t)?.isViewOnce}),V&&(r={...r,text:V,caption:V},Ze&&delete h(r).text),Ze){let b=F([t],["image","video","audio","sticker","document"]),P=S.isString(b)?{url:b}:b;if($&&(r={...r,image:P,jpegThumbnail:await ze(b)}),ee){let I=h(t)?.ptv;r={...r,video:P,ptv:I,jpegThumbnail:await ze(b)};}if(U){let I=h(t)?.ptt;r={...r,audio:await dt(b),ptt:I,mimetype:I?"audio/ogg; codecs=opus":"audio/mpeg"};}if(C){let I=h(t)?.shape;r={...r,sticker:await ft(b,{...this.client.options?.sticker,shape:I})};}if(q){let I=await gt(b);r={...r,fileName:h(t).fileName,...I};}}if(Pe){let b=h(t).location;r={...r,location:{degreesLatitude:b.latitude,degreesLongitude:b.longitude,url:b.url,address:b.footer,name:b.title}};}if(We){let b=h(t)?.contacts,Qe=b?.contacts.map(P=>{let I=["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:I}});r={...r,contacts:{displayName:b?.title,contacts:Qe}};}if(De){let b=h(t)?.poll;r={...r,poll:{name:b.name,values:b.answers,selectableCount:b.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...h(r).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Ee?await new he().send(e,t,c):await s.sendMessage(e,h(r),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 n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,h(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,h(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},we=class{constructor(e){this.mlient=e;this.community=new Ve(e);}community};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ae(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){return await i.get("socket").groupMetadata(e)}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},be=class{constructor(e){this.glient=e;this.group=new Je(e);}group};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ae(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},Me=class{constructor(e){this.nlient=e;this.newsletter=new Ge(e);}newsletter};var Ke=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},ve=class{constructor(e){this.plient=e;this.privacy=new Ke(e);}privacy};var Gr=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 Rs=u.enum(["unknown","android","ios","desktop","web"]),Es=u.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","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"]),Rt=u.object({channelId:u.string(),uniqueId:u.string(),chatId:u.string(),chatType:Es,receiverId:u.string(),receiverName:u.string(),roomId:u.string(),roomName:u.string(),senderLid:u.string(),senderId:u.string(),senderName:u.string(),senderDevice:Rs,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(),isStatusMention:u.boolean(),isGroupStatusMention:u.boolean(),isHideTags: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({output:u.promise(u.instanceof(Buffer))}),stream:u.function({output:u.promise(u.instanceof(Is))})}).loose().nullable(),message:u.function({input:[],output:u.custom()})}),Yr=Rt.extend({replied:Rt.nullable()});var si=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 xe=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.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),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ps={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Se=class{constructor(e,t={}){this.client=e;this.options={...Ps,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),i.spinner.success(" Health manager monitoring started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await te(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};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,i.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),i.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=h(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=v(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=v(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
- `;e?.isNewsletter?l+=`${v("[room]","dimgray")} \u2192 ${v(`${e?.roomName} (${W(e?.roomId)})`,t)}
8
- `:l+=`${v("[sender]","dimgray")} \u2192 ${v(`${e?.senderName} (${W(e?.senderId)})`,t)}
9
- `,l+=`${v(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${v(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
- `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),n=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=v(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
- `;s+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${W(e?.callerId)})`,t)}
12
- `,s+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,s+="\u2014",console.log(s);}};var Ce=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ae=class{plugins=[];pluginsDir;constructor(e=je.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!N.existsSync(e))return t;let n=N.readdirSync(e);for(let o of n){let s=je.join(e,o);N.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!N.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}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();}},Ci=(a,e)=>({handler:a,config:e});var Ie=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Et=class{constructor(e){this.options=e;this.options=Y(St,e);let t=new Ie().classInjection(this,[new ke(this),new be(this),new ve(this),new Me(this),new we(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new xe;middleware=new Ce;plugins=new Ae;async initialize(e){await kt(),await mt(this.options.disableFFmpeg),await rt(this),await this.plugins.load(),this.listener=new ye(e||this),this.logs=new Te(this),this.health=new Se(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getMessageByChatId(e,t){let n=await this.db("messages").all();for(let[o]of n){let s=await this.db("messages").query(o).where("key.id","=",e).first();if(s)return s={...s,message:t},await this.listener.messages.parse(s)}return null}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;return n&&(o=(await t.groupMetadata(e))?.subject||null),R(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=F(t,["message.protocolMessage.memberLabel"]);return R(n?.label)||null}};
4
+ `,s=e?"lime":"orange",r=await Qt.text(t),c=cristal(r);console.log(c),console.log(M(n,"dimgray")),console.log(M(o,s));};var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await ct(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.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();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${cristal(p)}`),wt(l),t.qr=l;return}if(r==="close"){let p=h(c?.error)?.output?.statusCode,k=c?.error?.message||"",x=typeof p=="number"&&p!==DisconnectReason.loggedOut,F=p===515||k.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${k}`),F){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await te(this.client.options.session),await delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
+ `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}x&&await n();}if(r==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${cristal(k||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var bt={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",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",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"},Ue={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 de=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 ge=class{constructor(e){this.client=e;this.limiter=new de(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=se(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=se(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=bt[c],!s.chatType)return;s.receiverId=jidNormalizedUser(o?.user?.id||""),s.receiverName=R(o?.user?.name||o?.user?.verifiedName),s.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,k=l?.type===1,x=l?.type===2,F=s.roomId?.includes("@newsletter"),Re=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ee=l?.key?.id;if(p||k||x){let C=await this.client.db("messages").query(s.roomId).where("key.id","=",Ee).first();if(!C)return;e=C,r=se(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=N([e?.key],["participant","remoteJid"])||null,s.senderId=jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid),s.senderName=R(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId||""),s.channelId=_([s.roomId,s.senderId]),s.uniqueId=_([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,F){let C=await o.newsletterMetadata("jid",s.roomId);s.roomName=h(C.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(z&&(s.senderLid=jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Oe(l?.paramsJson)?.id),s.text=R(s.text),s.mentions=ut(s.text),s.links=pt(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=z,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,S.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=F,s.isQuestion=Re,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!G(J(r),"editedMessage"),s.isDeleted=p,s.isPinned=k,s.isUnPinned=x,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!G(J(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!G(J(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let C=this.client.options.citation;for(let q of Object.keys(C)){let Pe=C[q];s.citation[q]=async()=>{let De=await Pe(),We=[D(s.roomId),D(s.senderLid),D(s.senderId)];return !!S.intersection(We,De).length};}}s.chatType!=="text"&&(s.media={...mt(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let $=l?.contextInfo?.quotedMessage,ee=G(J($),"viewOnce"),U=l?.contextInfo?.stanzaId;if($&&this.maxReplies){this.maxReplies--;let C=await this.client.getMessageByChatId(U,$);C&&(s.replied=C,ee&&(s.replied.isViewOnce=true)),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ye=class{constructor(e){this.client=e;this.connection=new me(e),this.messages=new ge(e),this.calls=new ce(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;Date.now()-o>1440*60*1e3||await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var Y=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var os=u.object({type:u.literal("quick_reply"),text:u.string()}),rs=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),is=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),as=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),cs=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()}),ls=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([os,rs,is,as,cs]).array()}),ps=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),xt=u.union([ps,ls]);var us=z.object({maxMessages:z.number().default(20),durationMs:z.number().default(1e4)}).optional(),ms=z.record(z.string(),z.function({output:z.promise(z.array(z.number()))})).optional(),ds=z.object({provider:z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z.number())}).optional(),qe=z.enum(["default","rounded","circle","oval"]).default("default"),fs=z.object({packageName:z.string(),authorName:z.string(),quality:z.number(),shape:qe.optional()}).optional(),St=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(),disableFFmpeg:z.boolean().default(false).optional(),cleanupDays:z.number().default(7).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:us,citation:ms,fakeReply:ds,sticker:fs}),gs=z.object({authType:z.literal("pairing"),phoneNumber:z.number()}),ys=z.object({authType:z.literal("qr")}),Tt=z.union([gs.extend(St.shape),ys.extend(St.shape)]),ar=z.enum(["connection","messages","calls"]);var X=u.url().or(u.base64()).or(u.instanceof(Buffer)),Ct=u.object({text:u.string()}).passthrough(),hs=u.object({image:X,caption:u.string().optional()}).passthrough(),ws=u.object({audio:X,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),ks=u.object({video:X,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),bs=u.object({sticker:X,shape:qe.optional(),caption:u.string().optional()}).passthrough(),vs=u.object({document:X,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ms=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(),xs=u.object({contacts:u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()})}).passthrough(),Ss=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),At=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:xt.optional()});u.enum(["forward","button","edit","delete"]);var Ts=u.union([Ct,hs,ws,ks,bs,vs,Ms,xs,Ss]),It=u.string().or(u.intersection(Ts,At.omit({buttons:true}))),Rt=u.intersection(Ct,At.omit({banner:true}));var he=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=h(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var we=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Y(Rt,t):t=Y(It,t));let s=i.get("socket"),r={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,x=this.client.options?.autoPresence,F=S.has(t,"replied"),Re=S.has(t,"banner"),z=S.has(t,"isViewOnce"),Ee=n=="button",$=S.has(t,"image"),ee=S.has(t,"video"),U=S.has(t,"audio"),C=S.has(t,"sticker"),q=S.has(t,"document"),Pe=S.has(t,"location"),De=S.has(t,"contacts"),We=S.has(t,"poll"),Ze=$||ee||U||C||q,V=l?t:N([t],["text","caption"]);if(x&&(U?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),k&&(r={...r,mentions:Fe(V),contextInfo:{mentionedJid:Fe(V)}}),F&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=Ue[p],c.quoted.key.participant=Ue[p])),Re&&(r={...r,contextInfo:{externalAdReply:h(t).banner}},r.contextInfo.externalAdReply.mediaType=1),z&&(r={...r,viewOnce:h(t)?.isViewOnce}),V&&(r={...r,text:V,caption:V},Ze&&delete h(r).text),Ze){let b=N([t],["image","video","audio","sticker","document"]),P=S.isString(b)?{url:b}:b;if($&&(r={...r,image:P,jpegThumbnail:await ze(b)}),ee){let I=h(t)?.ptv;r={...r,video:P,ptv:I,jpegThumbnail:await ze(b)};}if(U){let I=h(t)?.ptt;r={...r,audio:await ft(b),ptt:I,mimetype:I?"audio/ogg; codecs=opus":"audio/mpeg"};}if(C){let I=h(t)?.shape;r={...r,sticker:await gt(b,{...this.client.options?.sticker,shape:I})};}if(q){let I=await yt(b);r={...r,fileName:h(t).fileName,...I};}}if(Pe){let b=h(t).location;r={...r,location:{degreesLatitude:b.latitude,degreesLongitude:b.longitude,url:b.url,address:b.footer,name:b.title}};}if(De){let b=h(t)?.contacts,Qe=b?.contacts.map(P=>{let I=["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:I}});r={...r,contacts:{displayName:b?.title,contacts:Qe}};}if(We){let b=h(t)?.poll;r={...r,poll:{name:b.name,values:b.answers,selectableCount:b.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...h(r).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Ee?await new he().send(e,t,c):await s.sendMessage(e,h(r),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 n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,h(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,h(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},ke=class{constructor(e){this.mlient=e;this.community=new Ve(e);}community};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ae(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){return await i.get("socket").groupMetadata(e)}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},be=class{constructor(e){this.glient=e;this.group=new Je(e);}group};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ae(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},ve=class{constructor(e){this.nlient=e;this.newsletter=new Ge(e);}newsletter};var He=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},Me=class{constructor(e){this.plient=e;this.privacy=new He(e);}privacy};var Kr=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 Es=u.enum(["unknown","android","ios","desktop","web"]),Ps=u.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","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"]),Et=u.object({channelId:u.string(),uniqueId:u.string(),chatId:u.string(),chatType:Ps,receiverId:u.string(),receiverName:u.string(),roomId:u.string(),roomName:u.string(),senderLid:u.string(),senderId:u.string(),senderName:u.string(),senderDevice:Es,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(),isStatusMention:u.boolean(),isGroupStatusMention:u.boolean(),isHideTags: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({output:u.promise(u.instanceof(Buffer))}),stream:u.function({output:u.promise(u.instanceof(Rs))})}).loose().nullable(),message:u.function({input:[],output:u.custom()})}),ei=Et.extend({replied:Et.nullable()});var oi=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 xe=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.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),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ds={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Se=class{constructor(e,t={}){this.client=e;this.options={...Ds,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await te(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};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;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.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)),n=e?.text?.toLowerCase()?.match("zaileys"),o=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=M(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
+ `;e?.isNewsletter?l+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${D(e?.roomId)})`,t)}
8
+ `:l+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${D(e?.senderId)})`,t)}
9
+ `,l+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
+ `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),n=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=M(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
+ `;s+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${D(e?.callerId)})`,t)}
12
+ `,s+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
+ `,s+="\u2014",console.log(s);}};var Ce=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ae=class{plugins=[];pluginsDir;constructor(e=Le.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!O.existsSync(e))return t;let n=O.readdirSync(e);for(let o of n){let s=Le.join(e,o);O.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!O.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}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();}},Ii=(a,e)=>({handler:a,config:e});var Ie=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Pt=class{constructor(e){this.options=e;this.options=Y(Tt,e);let t=new Ie().classInjection(this,[new we(this),new be(this),new Me(this),new ve(this),new ke(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new xe;middleware=new Ce;plugins=new Ae;async initialize(e){await kt(),await dt(this.options.disableFFmpeg),await rt(this),await this.plugins.load(),this.listener=new ye(e||this),this.logs||(this.logs=new Te(this)),this.health&&this.health.stop(),this.health=new Se(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getMessageByChatId(e,t){let n=await this.db("messages").all();for(let[o]of n){let s=await this.db("messages").query(o).where("key.id","=",e).first();if(s)return s={...s,message:t},await this.listener.messages.parse(s)}return null}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;return n&&(o=(await t.groupMetadata(e))?.subject||null),R(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=N(t,["message.protocolMessage.memberLabel"]);return R(n?.label)||null}async cleanupMessages(e=7){let t=Date.now()-e*24*60*60*1e3,n=await this.db("messages").all(),o=0;for(let[s]of n){let r=await this.db("messages").get(s);if(!Array.isArray(r))continue;let c=r.filter(l=>Number(l.messageTimestamp)*1e3<t?(o++,false):true);c.length!==r.length&&await this.db("messages").set(s,c);}o>0&&this.options.showLogs&&i.spinner.info(` Cleaned up ${o} old messages`);}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${le.author} \xB7 v${le.version}`,o=`${e?"Already using latest version!":`Upd
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/18/2025 3:31:39 PM
21
+ * Last build time: 12/19/2025 8:53:18 AM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
- */export{ne as AudioProcessor,Rt as BaseMessagesType,is as ButtonInteractiveCallType,rs as ButtonInteractiveCopyType,ns as ButtonInteractiveReplyType,as as ButtonInteractiveSingleSelectType,cs as ButtonInteractiveType,os as ButtonInteractiveUrlType,ls as ButtonSimpleType,vt as ButtonType,us as CitationType,Et as Client,fs as ClientAuthPairingType,gs as ClientAuthQRType,xt as ClientBaseType,St as ClientOptionsType,Rs as DEVICE_ENUM_TYPES,ie as DocumentProcessor,rr as EventEnumType,ms as FakeReplyType,oe as ImageProcessor,ps as LimiterType,si as ListenerCallsType,Gr as ListenerConnectionType,Yr as ListenerMessagesType,Es as MESSAGE_ENUM_TYPES,Q as MediaProcessor,Ae as Plugins,ds as StickerMetadataType,re as StickerProcessor,qe as StickerShapeType,D as VideoProcessor,W as cleanJid,ut as cleanMediaObject,nt as cleanupSocket,mt as configureFFmpeg,Ci as definePlugins,Oe as extractJids,lt as extractUrls,G as findGlobalWord,In as findNestedByKeys,_ as generateId,se as getDeepContent,ot as getExistingSocket,it as getLatestLibVersion,ze as getMediaThumbnail,pt as getUsersMentions,Hn as getVideoDuration,Kn as getVideoThumbnail,dt as getWaAudio,gt as getWaDocument,ft as getWaSticker,h as ignoreLint,v as logColor,Rn as modifyFn,R as normalizeText,Fn as numbersToJids,F as pickKeysFromArray,An as randomize,rt as registerAuthCreds,at as removeAuthCreds,te as repairSessionKeys,Cn as shuffleString,ae as toBuffer,Ne as toJson,J as toString,et as useAuthState};
24
+ */export{ne as AudioProcessor,Et as BaseMessagesType,as as ButtonInteractiveCallType,is as ButtonInteractiveCopyType,os as ButtonInteractiveReplyType,cs as ButtonInteractiveSingleSelectType,ls as ButtonInteractiveType,rs as ButtonInteractiveUrlType,ps as ButtonSimpleType,xt as ButtonType,ms as CitationType,Pt as Client,gs as ClientAuthPairingType,ys as ClientAuthQRType,St as ClientBaseType,Tt as ClientOptionsType,Es as DEVICE_ENUM_TYPES,ie as DocumentProcessor,ar as EventEnumType,ds as FakeReplyType,oe as ImageProcessor,us as LimiterType,oi as ListenerCallsType,Kr as ListenerConnectionType,ei as ListenerMessagesType,Ps as MESSAGE_ENUM_TYPES,Q as MediaProcessor,Ae as Plugins,fs as StickerMetadataType,re as StickerProcessor,qe as StickerShapeType,W as VideoProcessor,D as cleanJid,mt as cleanMediaObject,nt as cleanupSocket,dt as configureFFmpeg,Ii as definePlugins,Fe as extractJids,pt as extractUrls,G as findGlobalWord,En as findNestedByKeys,_ as generateId,se as getDeepContent,ot as getExistingSocket,at as getLatestLibVersion,ze as getMediaThumbnail,ut as getUsersMentions,Qn as getVideoDuration,Zn as getVideoThumbnail,ft as getWaAudio,yt as getWaDocument,gt as getWaSticker,h as ignoreLint,M as logColor,Pn as modifyFn,R as normalizeText,Fn as numbersToJids,N as pickKeysFromArray,Rn as randomize,rt as registerAuthCreds,ct as removeAuthCreds,te as repairSessionKeys,In as shuffleString,ae as toBuffer,Oe as toJson,J as toString,et 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.1.2",
4
+ "version": "2.1.4",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",
@@ -68,6 +68,7 @@
68
68
  "qrcode-terminal": "^0.12.0",
69
69
  "rate-limiter-flexible": "^9.0.0",
70
70
  "sharp": "^0.34.5",
71
+ "unorm": "^1.6.0",
71
72
  "zod": "^4.1.13"
72
73
  },
73
74
  "packageManager": "pnpm@10.24.0",