zaileys 2.0.4 → 2.0.6

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
@@ -178,7 +178,7 @@ import { definePlugins } from 'zaileys';
178
178
 
179
179
  export default definePlugins(
180
180
  async (wa, ctx) => {
181
- await wa.send(ctx.roomId, 'Hello from plugin!');
181
+ await wa.send(ctx.messages.roomId, 'Hello from plugin!');
182
182
  },
183
183
  {
184
184
  matcher: ['/hello', '!hello'], // Trigger commands
package/dist/index.d.mts CHANGED
@@ -537,7 +537,7 @@ declare class Client {
537
537
  middleware: Middleware<any>;
538
538
  plugins: Plugins;
539
539
  constructor(options: z.infer<typeof ClientOptionsType>);
540
- initialize(): Promise<void>;
540
+ initialize(client?: Client): Promise<void>;
541
541
  ready(): Promise<void>;
542
542
  db(path: string): Lowdb;
543
543
  on<T extends z.infer<typeof EventEnumType>>(event: T, handler: EventCallbackType[T]): void;
package/dist/index.d.ts CHANGED
@@ -537,7 +537,7 @@ declare class Client {
537
537
  middleware: Middleware<any>;
538
538
  plugins: Plugins;
539
539
  constructor(options: z.infer<typeof ClientOptionsType>);
540
- initialize(): Promise<void>;
540
+ initialize(client?: Client): Promise<void>;
541
541
  ready(): Promise<void>;
542
542
  db(path: string): Lowdb;
543
543
  on<T extends z.infer<typeof EventEnumType>>(event: T, handler: EventCallbackType[T]): void;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use strict';var Ht=require('baileys'),We=require('fs/promises'),asyncMutex=require('async-mutex'),Ne=require('path'),nanospinner=require('nanospinner'),je=require('node-cache'),events=require('events'),Rt=require('pino'),Xe=require('gradient-string'),v=require('lodash'),fileType=require('file-type'),G=require('fluent-ffmpeg'),Nt=require('node-webpmux'),os$1=require('os'),Be=require('sharp'),Ot=require('@ffmpeg-installer/ffmpeg'),Ft=require('@ffprobe-installer/ffprobe'),Qt=require('figlet'),Xt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),ve=require('fs'),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 Ht__default=/*#__PURE__*/_interopDefault(Ht);var We__default=/*#__PURE__*/_interopDefault(We);var Ne__namespace=/*#__PURE__*/_interopNamespace(Ne);var je__default=/*#__PURE__*/_interopDefault(je);var Rt__default=/*#__PURE__*/_interopDefault(Rt);var Xe__default=/*#__PURE__*/_interopDefault(Xe);var v__default=/*#__PURE__*/_interopDefault(v);var G__default=/*#__PURE__*/_interopDefault(G);var Nt__default=/*#__PURE__*/_interopDefault(Nt);var Be__default=/*#__PURE__*/_interopDefault(Be);var Ot__default=/*#__PURE__*/_interopDefault(Ot);var Ft__default=/*#__PURE__*/_interopDefault(Ft);var Qt__default=/*#__PURE__*/_interopDefault(Qt);var Xt__default=/*#__PURE__*/_interopDefault(Xt);var u__default=/*#__PURE__*/_interopDefault(u);var ve__namespace=/*#__PURE__*/_interopNamespace(ve);var Pe=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=V(s);return this.cache.set(s,r),r}spinner=nanospinner.createSpinner("",{color:"green"});logger=Rt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new je__default.default({stdTTL:300,useClones:false});collectors=new Map},a=new Pe;var g=o=>o,Qe=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(o){throw o}},Ye=async o=>{try{let e=`.session/${o}/auth/creds.json`;await We__default.default.unlink(e);}catch(e){throw a.spinner.error(`Failed to remove auth creds for session "${o}"!`),e}},R=(o="")=>o?.length?o.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var M=(o,e="lime")=>Array.isArray(e)?Xe__default.default(e)(o):Xe__default.default([e,e])(o),Re=o=>{try{return JSON.parse(o)}catch{return v__default.default.attempt(()=>JSON.parse(JSON.stringify(o)||"{}"))}},X=o=>{try{return JSON.stringify(o)}catch{let e=v__default.default.attempt(()=>JSON.stringify(Re(o)||"{}"));return v__default.default.isError(e)?"{}":e}},Js=(o="")=>v__default.default.shuffle(o).join(""),ee=(o="",e="")=>o?v__default.default.includes(o.toLowerCase(),e.toLowerCase()):null,et=(o="")=>o?v__default.default.castArray(o.match(Ht.URL_REGEX)||[]):[],Gs=o=>o[Math.floor(Math.random()*o.length)],C=(o,e)=>{for(let t of o||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},tt=(o,e)=>{let t=v__default.default.castArray(e),s=(n,c)=>v__default.default.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>v__default.default.some(c,(p,l)=>n?.[l]===p),i=n=>v__default.default.isArray(n)?v__default.default.find(n,i)??n:v__default.default.isObject(n)?v__default.default.find(t,l=>s(n,l))||v__default.default.find(t,l=>r(n,l))?n:v__default.default.find(v__default.default.values(n),i)??n:null;return i(o)},Ks=(o,e,t)=>new Proxy(o,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var B=o=>{let e;Array.isArray(o)?e=o.join("|"):typeof o=="string"?e=o:e=String(o);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},st=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))e.add(t[1]);return v__default.default.toArray(e)},Ee=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return v__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ei=o=>v__default.default.isEmpty(o)?[]:v__default.default.map([...o],e=>`${e}@s.whatsapp.net`),it=o=>v__default.default.omit(o,["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"]),J=o=>{if(!o)return {leaf:void 0,chain:[]};let e=Ht.extractMessageContent(o)||o,t=[];for(;e&&typeof e=="object";){let s=Ht.getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},E=o=>Number(o?.split("@")[0]);G__default.default.setFfmpegPath(Ot__default.default.path);G__default.default.setFfprobePath(Ft__default.default.path);var y={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},w=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Ne__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>We__default.default.unlink(t)));}static async safeReadFile(e){try{return await We__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await We__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},A=class{static async toBuffer(e){if(v__default.default.isBuffer(e))return e;if(v__default.default.isArrayBuffer(e))return Buffer.from(e);if(v__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},N=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(y.MIME.IMAGE)||e.startsWith(y.MIME.VIDEO)}static isAnimated(e){return e===y.MIME.GIF||e.startsWith(y.MIME.VIDEO)}},K=class{static async process(e){return new Promise((t,s)=>{let r=G__default.default(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{G__default.default.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},te=class{static async getWaAudio(e,t="opus"){let s=await A.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);N.validate(r,y.MIME.AUDIO);let i=w.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=w.createTempPath("audio_out",n);await w.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await K.process({input:i,output:c,options:l,onEnd:async()=>{p=await w.safeReadFile(c);},onError:async()=>{await w.cleanup([i,c]);}}),await w.cleanup([i,c]),p}catch(l){throw await w.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},W=class{static async getThumbnail(e){let t=await A.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);N.validate(s,y.MIME.VIDEO);let r=w.createTempPath("video","mp4"),i=w.createTempPath("thumb","jpg");await w.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{G__default.default(r).screenshots({timestamps:[y.THUMBNAIL.TIMESTAMP],filename:Ne__namespace.default.basename(i),folder:Ne__namespace.default.dirname(i),size:`${y.THUMBNAIL.SIZE}x${y.THUMBNAIL.SIZE}`,quality:y.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await w.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await w.cleanup([r,i]),n}catch(c){throw await w.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return K.getDuration(e)}},se=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===y.MIME.GIF?Be__default.default(e,{animated:false}):Be__default.default(e)).resize(y.THUMBNAIL.SIZE,y.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:y.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Be__default.default(e).resize(y.STICKER.SIZE,y.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},H=class{static async getThumbnail(e){let t=await A.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s||!N.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(y.MIME.VIDEO)?W.getThumbnail(e):se.getThumbnail(t)}},ie=class{static createExifMetadata(e){let t={"sticker-pack-id":B(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=w.createTempPath("sticker_in",r),n=w.createTempPath("sticker_out","webp");await w.safeWriteFile(i,e);let c=y.STICKER.MAX_DURATION;try{let T=await W.getDuration(i);c=g(Math.min(T,y.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",y.STICKER.MAX_DURATION);}let p=`scale=${y.STICKER.SIZE}:${y.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${y.STICKER.SIZE}:${y.STICKER.SIZE},fps=${y.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),h;try{return await K.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${y.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{h=await w.safeReadFile(n);},onError:async()=>{await w.cleanup([i,n]);}}),await w.cleanup([i,n]),h}catch(T){throw await w.cleanup([i,n]),new Error(`Animated sticker processing failed: ${T.message}`)}}static getExtension(e){return e===y.MIME.GIF?"gif":e.startsWith(y.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await A.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||y.STICKER.DEFAULT_QUALITY,c=N.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await se.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Nt__default.default.Image;await l.load(c),l.exif=p;let h=await l.save(null);return Buffer.isBuffer(h)?h:Buffer.from(h)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},re=class{static async create(e){try{let t=await A.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:B(Date.now().toString()),jpegThumbnail:await H.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ne=A.toBuffer.bind(A),rt=te.getWaAudio.bind(te),gi=W.getThumbnail.bind(W),yi=W.getDuration.bind(W),De=H.getThumbnail.bind(H),nt=ie.create.bind(ie),ot=re.create.bind(re);var ze=class o{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new o)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new asyncMutex.Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new asyncMutex.Mutex,this.kLocks.set(e,t);}return t}},$e=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=ze.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await We.readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await We.mkdir(Ne.dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await We.writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return tt(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await We.mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,h=Math.min(l+this.size,r.length),T=r.subarray(l,h);c.push(We.writeFile(Ne.join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:T.toString("base64")})));}return c.push(We.writeFile(Ne.join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=Ne.join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await We.readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(We.readFile(Ne.join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(h=>Buffer.from(JSON.parse(h).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(We.unlink(Ne.join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(We.unlink(Ne.join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await We.readdir(this.chunkDir)).length===0&&await We.rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},V=(o,e)=>new $e(o,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var ut=async o=>{a.spinner.start(" Initializing auth state...");let e=await We.stat(o).catch(()=>{});if(e){if(!e.isDirectory())throw a.spinner.error(` Failed to open credentials
2
- `),`found something that is not a directory at ${o}, either delete it or specify a different location`}else await We.mkdir(o,{recursive:true});let t=V(`${o}/auth/creds.json`,{BufferJSON:Ht.BufferJSON}),s=V(`${o}/auth/keys.json`,{BufferJSON:Ht.BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||Ht.initAuthCreds();return a.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,h=await s.get(l);i==="app-state-sync-key"&&h&&(h=Ht.proto.Message.AppStateSyncKeyData.fromObject(h)),c[p]=h;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],h=`${c}:${p}`;l?n.push(s.set(h,l)):n.push(s.delete(h).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var Kt=new je__default.default,mt=(o,e)=>({logger:a.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:o.options.autoOnline,syncFullHistory:o.options.syncFullHistory,msgRetryCounterCache:new je__default.default,mediaCache:new je__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Kt.get(t),shouldIgnoreJid:t=>Ht.isJidBroadcast(t),auth:{creds:e.creds,keys:Ht.makeCacheableSignalKeyStore(e.keys,a.logger)},getMessage:async t=>{if(t?.id)return await o.db("messages").get(t.id)}});var dt=async o=>{let e=`.session/${o.options.session}`;console.info=()=>{};let{state:t,saveCreds:s}=await ut(e),r=mt(o,t),i=Ht__default.default(r);i.ev.on("creds.update",s),a.set("socket",i);};var oe=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=a.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),a.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=a.get("socket"),s={};return s.callId=e.id,s.callerId=Ht.jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=Ht.jidNormalizedUser(e.chatId),s.roomName=R(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var ae={version:"2.0.3",author:"zaadevofc"};var gt=o=>{Xt__default.default.generate(o,{small:true},e=>{console.log(e);});},yt=async()=>{console.clear(),a.spinner.start(" Checking for updates...");let o=await Qe(),e=ae.version===o;a.spinner.stop();let t="Zaileys",s=`
2
+ `),`found something that is not a directory at ${o}, either delete it or specify a different location`}else await We.mkdir(o,{recursive:true});let t=V(`${o}/auth/creds.json`,{BufferJSON:Ht.BufferJSON}),s=V(`${o}/auth/keys.json`,{BufferJSON:Ht.BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||Ht.initAuthCreds();return a.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,h=await s.get(l);i==="app-state-sync-key"&&h&&(h=Ht.proto.Message.AppStateSyncKeyData.fromObject(h)),c[p]=h;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],h=`${c}:${p}`;l?n.push(s.set(h,l)):n.push(s.delete(h).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var Kt=new je__default.default,mt=(o,e)=>({logger:a.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:o.options.autoOnline,syncFullHistory:o.options.syncFullHistory,msgRetryCounterCache:new je__default.default,mediaCache:new je__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Kt.get(t),shouldIgnoreJid:t=>Ht.isJidBroadcast(t),auth:{creds:e.creds,keys:Ht.makeCacheableSignalKeyStore(e.keys,a.logger)},getMessage:async t=>{if(t?.id)return await o.db("messages").get(t.id)}});var dt=async o=>{let e=`.session/${o.options.session}`;console.info=()=>{};let{state:t,saveCreds:s}=await ut(e),r=mt(o,t),i=Ht__default.default(r);i.ev.on("creds.update",s),a.set("socket",i);};var oe=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=a.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),a.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=a.get("socket"),s={};return s.callId=e.id,s.callerId=Ht.jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=Ht.jidNormalizedUser(e.chatId),s.roomName=R(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var ae={version:"2.0.5",author:"zaadevofc"};var gt=o=>{Xt__default.default.generate(o,{small:true},e=>{console.log(e);});},yt=async()=>{console.clear(),a.spinner.start(" Checking for updates...");let o=await Qe(),e=ae.version===o;a.spinner.stop();let t="Zaileys",s=`
3
3
  by ${ae.author} \xB7 v${ae.version}`,r=`${e?"Already using latest version!":`Update available! (v${o})`}
4
4
  `,i=e?"lime":"orange",n=await Qt__default.default.text(t),c=Xe.cristal(n);console.log(c),console.log(M(s,"dimgray")),console.log(M(r,i));};var pe=class{constructor(e){this.client=e;this.initialize();}async initialize(){a.spinner.start(" Initializing connection...");let e=a.get("socket"),t={},s=async()=>{t.status="reload",a.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await Ht.delay(3e3),a.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await Ht.delay(3e3),await Ye(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){a.spinner.update(" Generating pairing code..."),await Ht.delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());a.spinner.warn(` Pairing expired at ${Xe.cristal(i)}`),a.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:p}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,a.spinner.update(" Connection status: "+Xe.cristal(t.status)),this.client.options.authType==="qr"&&p){t.authTimeout=Date.now()+6e4;let l=new Date(t.authTimeout).toLocaleTimeString();a.spinner.warn(" Please scan the QR code..."),a.spinner.warn(` Qr code expired at ${Xe.cristal(l)}`),gt(p),t.qr=p;return}if(n==="close"){let l=g(c?.error)?.output?.statusCode,h=c?.error?.message||"",T=typeof l=="number"&&l!==Ht.DisconnectReason.loggedOut;a.spinner.error(`[${l} - Closed] ${h}`),(l===401||l===405||l===500)&&(a.spinner.error(" Invalid session, please delete manually!"),a.spinner.error(` Session "${this.client.options.session}" has not valid, please delete it!
5
5
  `),await r()),T&&await s();}if(n==="open")if(e.user?.id){let l=Ht.jidNormalizedUser(e.user.id).split("@")[0],h=e.user.name||e.user.verifiedName;a.spinner.success(` Connected as ${Xe.cristal(h||l)}`);}else a.spinner.success(" Connected!");a.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,a.spinner.start(" Syncing messages history..."),i&&a.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(a.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),a.events.emit("connection",t);});}};var ht={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},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 le=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 me=class{constructor(e){this.client=e;this.limiter=new le(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=a.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),a.set("message",i),a.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=a.get("socket"),i={},n=J(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=J(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=ht[c],i.receiverId=Ht.jidNormalizedUser(r?.user?.id||""),i.receiverName=R(r?.user?.name||r?.user?.verifiedName),i.roomId=Ht.jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,h=p?.type===1,T=p?.type===2,Y=i.roomId?.includes("@newsletter"),Ce=!!e?.message?.questionMessage,F=e?.key?.fromMe||false;if(F&&this.client.options.ignoreMe&&t!=="replied")return;let Ae=p?.key?.id;if(l||h||T){let x=(await this.client.db("messages").get(i.roomId))?.find(L=>L.key.id===Ae);if(!x)return;e=x,n=J(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=C([e?.key],["remoteJidAlt","participant"])||null,i.senderId=Ht.jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=R(e?.pushName||e?.verifiedBizName),i.senderDevice=Ht.getDevice(i.chatId),i.channelId=B([i.roomId,i.senderId]),i.uniqueId=B([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,Y){let S=await r.newsletterMetadata("jid",i.roomId);i.roomName=g(S.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(F&&(i.senderLid=Ht.jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=Re(p?.paramsJson)?.id),i.text=R(i.text),i.mentions=st(i.text),i.links=et(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=F,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=Y,i.isQuestion=Ce,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!ee(X(n),"editedMessage"),i.isDeleted=l,i.isPinned=h,i.isUnPinned=T,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!ee(X(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!ee(X(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let S=this.client.options.citation;for(let x of Object.keys(S)){let L=S[x];i.citation[x]=async()=>{let _=await L(),Ie=[E(i.roomId),E(i.senderLid),E(i.senderId)];return !!v__default.default.intersection(Ie,_).length};}}i.chatType!=="text"&&(i.media={...it(p),buffer:()=>Ht.downloadMediaMessage(e,"buffer",{}),stream:()=>Ht.downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let z=p?.contextInfo?.quotedMessage,$=C([z],["viewOnceMessageV2Extension","viewOnceMessage"]),j=p?.contextInfo?.stanzaId;if(z&&!this.maxReplies){this.maxReplies--;let x=(await this.client.db("messages").get(i.roomId))?.find(_=>_.key.id===j),L={...x,...J($).leaf};$?(i.replied=await this.parse(L,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(x,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var de=class{constructor(e){this.client=e;this.connection=new pe(e),this.messages=new me(e),this.calls=new oe(e),this.initialize();}connection;messages;calls;async initialize(){let e=a.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").push(n.id,n);for(let n of r)await this.client.db("contacts").push(n.id,n);for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(n.key.remoteJid,n);}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(s.key.remoteJid,s);}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").push(s.id,s);}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").push(s.id,s);});}};var Z=(o,e)=>{let t=o.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()}),as=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),cs=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),ps=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()}),ls=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ns,os,as,cs,ps]).array()}),us=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()}),wt=u__default.default.union([us,ls]);var Q=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Mt=u__default.default.object({text:u__default.default.string()}).passthrough(),ms=u__default.default.object({image:Q,caption:u__default.default.string().optional()}).passthrough(),ds=u__default.default.object({audio:Q,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),fs=u__default.default.object({video:Q,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),gs=u__default.default.object({sticker:Q,caption:u__default.default.string().optional()}).passthrough(),ys=u__default.default.object({document:Q,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),hs=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(),ks=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()}),ws=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()})}),vt=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:wt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Ms=u__default.default.union([Mt,ms,ds,fs,gs,ys,hs,ks,ws]),bt=u__default.default.string().or(u__default.default.intersection(Ms,vt.omit({buttons:true}))),Tt=u__default.default.intersection(Mt,vt.omit({banner:true}));var fe=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=g(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:g(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=a.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=Ht.generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:Ht.generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!Ht.isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var ge=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=Z(Tt,t):t=Z(bt,t));let i=a.get("socket"),n={},c={},p=v__default.default.isString(t),l=this.client.options?.fakeReply?.provider,h=this.client.options?.autoMentions,T=this.client.options?.autoPresence,Y=v__default.default.has(t,"replied"),Ce=v__default.default.has(t,"banner"),F=v__default.default.has(t,"isViewOnce"),Ae=s=="button",z=v__default.default.has(t,"image"),$=v__default.default.has(t,"video"),j=v__default.default.has(t,"audio"),S=v__default.default.has(t,"sticker"),x=v__default.default.has(t,"document"),L=v__default.default.has(t,"location"),_=v__default.default.has(t,"contacts"),Ie=v__default.default.has(t,"poll"),He=z||$||j||S||x,U=p?t:C([t],["text","caption"]);if(T&&(j?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),h&&(n={...n,mentions:Ee(U),contextInfo:{mentionedJid:Ee(U)}}),Y&&(c.quoted=g(t).replied,l&&(c.quoted.key.remoteJid=Ue[l],c.quoted.key.participant=Ue[l])),Ce&&(n={...n,contextInfo:{externalAdReply:g(t).banner}},n.contextInfo.externalAdReply.mediaType=1),F&&(n={...n,viewOnce:g(t)?.isViewOnce}),U&&(n={...n,text:U,caption:U},He&&delete g(n).text),He){let k=C([t],["image","video","audio","sticker","document"]),I=v__default.default.isString(k)?{url:k}:k;if(z&&(n={...n,image:I,jpegThumbnail:await De(k)}),$){let P=g(t)?.ptv;n={...n,video:I,ptv:P,jpegThumbnail:await De(k)};}if(j){let P=g(t)?.ptt;n={...n,audio:await rt(k),ptt:P,mimetype:P?"audio/ogg; codecs=opus":"audio/mpeg"};}if(S&&(n={...n,sticker:await nt(k,this.client.options?.sticker)}),x){let P=await ot(k);n={...n,fileName:g(t).fileName,...P};}}if(L){let k=g(t).location;n={...n,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(_){let k=g(t)?.contacts,Ze=k?.contacts.map(I=>{let P=["BEGIN:VCARD","VERSION:3.0",`FN:${I.fullname}`,`ORG:${I.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${I.phoneNumber}:${I.phoneNumber}`,"END:VCARD"].join(`
@@ -10,7 +10,7 @@ by ${ae.author} \xB7 v${ae.version}`,r=`${e?"Already using latest version!":`Upd
10
10
  `,p+="\u2014",console.log(p);}call(e){if(!this.logsReady)return;let t=g(this.getRoomColor(e)),s=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=M(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
11
11
  `;i+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${E(e?.callerId)})`,t)}
12
12
  `,i+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,i+="\u2014",console.log(i);}};var we=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var Me=class{plugins=[];pluginsDir;constructor(e=Ne__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}async load(){if(!ve__namespace.existsSync(this.pluginsDir))return;let e=ve__namespace.readdirSync(this.pluginsDir).filter(t=>(t.endsWith(".ts")||t.endsWith(".js"))&&!t.endsWith(".d.ts"));for(let t of e){let s=Ne__namespace.join(this.pluginsDir,t);try{let i=(await import(url.pathToFileURL(s).href)).default;i?.handler&&i?.config&&this.plugins.push(i);}catch{}}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Jn=(o,e)=>({handler:o,config:e});var be=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Je=class{constructor(e){this.client=e;}async block(e){return await a.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await a.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await a.get("socket").updateLastSeenPrivacy(e)}async online(e){return await a.get("socket").updateOnlinePrivacy(e)}async picture(e){return await a.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await a.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await a.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await a.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=a.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await a.get("socket").fetchBlocklist()}async getSettings(){return await a.get("socket").fetchPrivacySettings(true)}},Te=class{constructor(e){this.plient=e;this.privacy=new Je(e);}privacy};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").newsletterCreate(e,t)}async action(e,t){let s=a.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=a.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ne(t))}}async metadata(e,t){return await a.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await a.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await a.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=a.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await a.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await a.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await a.get("socket").newsletterDemote(e,t)}async delete(e){return await a.get("socket").newsletterDelete(e)}async removePicture(e){return await a.get("socket").newsletterRemovePicture(e)}},xe=class{constructor(e){this.nlient=e;this.newsletter=new Ge(e);}newsletter};var Ke=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await a.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await a.get("socket").communityLeave(e)}async metadata(e){return await a.get("socket").communityMetadata(e)}async update(e,t,s){let r=a.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=a.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=a.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,g(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,g(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=a.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=a.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Se=class{constructor(e){this.mlient=e;this.community=new Ke(e);}community};var Ct=class{constructor(e){this.options=e;return this.options=Z(St,e),this._ready=this.initialize(),new be().classInjection(this,[new ge(this),new ye(this),new Te(this),new xe(this),new Se(this)])}listener;_ready;logs;collector=new he;middleware=new we;plugins=new Me;async initialize(){await yt(),await dt(this),await this.plugins.load(),this.listener=new de(this),this.logs=new ke(this);}ready(){return this._ready}db(e){return a.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){a.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=C(t,["name","verifiedName"]),i=C(s,["notify","name"]);return R(r||i)||null}};
13
+ `,i+="\u2014",console.log(i);}};var we=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var Me=class{plugins=[];pluginsDir;constructor(e=Ne__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}async load(){if(!ve__namespace.existsSync(this.pluginsDir))return;let e=ve__namespace.readdirSync(this.pluginsDir).filter(t=>(t.endsWith(".ts")||t.endsWith(".js"))&&!t.endsWith(".d.ts"));for(let t of e){let s=Ne__namespace.join(this.pluginsDir,t);try{let i=(await import(url.pathToFileURL(s).href)).default;i?.default&&(i=i.default),i?.handler&&i?.config&&this.plugins.push(i);}catch{}}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Jn=(o,e)=>({handler:o,config:e});var be=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Je=class{constructor(e){this.client=e;}async block(e){return await a.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await a.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await a.get("socket").updateLastSeenPrivacy(e)}async online(e){return await a.get("socket").updateOnlinePrivacy(e)}async picture(e){return await a.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await a.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await a.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await a.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=a.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await a.get("socket").fetchBlocklist()}async getSettings(){return await a.get("socket").fetchPrivacySettings(true)}},Te=class{constructor(e){this.plient=e;this.privacy=new Je(e);}privacy};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").newsletterCreate(e,t)}async action(e,t){let s=a.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=a.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ne(t))}}async metadata(e,t){return await a.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await a.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await a.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=a.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await a.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await a.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await a.get("socket").newsletterDemote(e,t)}async delete(e){return await a.get("socket").newsletterDelete(e)}async removePicture(e){return await a.get("socket").newsletterRemovePicture(e)}},xe=class{constructor(e){this.nlient=e;this.newsletter=new Ge(e);}newsletter};var Ke=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await a.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await a.get("socket").communityLeave(e)}async metadata(e){return await a.get("socket").communityMetadata(e)}async update(e,t,s){let r=a.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=a.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=a.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,g(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,g(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=a.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=a.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Se=class{constructor(e){this.mlient=e;this.community=new Ke(e);}community};var Ct=class{constructor(e){this.options=e;this.options=Z(St,e);let t=new be().classInjection(this,[new ge(this),new ye(this),new Te(this),new xe(this),new Se(this)]);return this._ready=this.initialize(t),t}listener;_ready;logs;collector=new he;middleware=new we;plugins=new Me;async initialize(e){await yt(),await dt(this),await this.plugins.load(),this.listener=new de(e||this),this.logs=new ke(this);}ready(){return this._ready}db(e){return a.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){a.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=C(t,["name","verifiedName"]),i=C(s,["notify","name"]);return R(r||i)||null}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${ae.author} \xB7 v${ae.version}`,r=`${e?"Already using latest version!":`Upd
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/10/2025 4:03:19 PM
21
+ * Last build time: 12/10/2025 7:45:02 PM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
24
  */exports.AudioProcessor=te;exports.Client=Ct;exports.DocumentProcessor=re;exports.ImageProcessor=se;exports.Lowdb=$e;exports.MediaProcessor=H;exports.Plugins=Me;exports.StickerProcessor=ie;exports.VideoProcessor=W;exports.cleanJid=E;exports.cleanMediaObject=it;exports.createLowdb=V;exports.definePlugins=Jn;exports.extractJids=Ee;exports.extractUrls=et;exports.findGlobalWord=ee;exports.findNestedByKeys=tt;exports.generateId=B;exports.getDeepContent=J;exports.getLatestLibVersion=Qe;exports.getMediaThumbnail=De;exports.getUsersMentions=st;exports.getVideoDuration=yi;exports.getVideoThumbnail=gi;exports.getWaAudio=rt;exports.getWaDocument=ot;exports.getWaSticker=nt;exports.ignoreLint=g;exports.logColor=M;exports.modifyFn=Ks;exports.normalizeText=R;exports.numbersToJids=ei;exports.pickKeysFromArray=C;exports.randomize=Gs;exports.registerAuthCreds=dt;exports.removeAuthCreds=Ye;exports.shuffleString=Js;exports.toBuffer=ne;exports.toJson=Re;exports.toString=X;exports.useAuthState=ut;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import Zt,{URL_REGEX,extractMessageContent,getContentType,BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,isJidBroadcast,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import Le,{readFile,mkdir,writeFile,unlink,readdir,rmdir,stat}from'fs/promises';import {Mutex}from'async-mutex';import*as De from'path';import De__default,{dirname,join}from'path';import {createSpinner}from'nanospinner';import _e from'node-cache';import {EventEmitter}from'events';import Et from'pino';import et,{cristal}from'gradient-string';import b from'lodash';import {fileTypeFromBuffer}from'file-type';import K from'fluent-ffmpeg';import Dt from'node-webpmux';import {tmpdir}from'os';import Ne from'sharp';import Ft from'@ffmpeg-installer/ffmpeg';import zt from'@ffprobe-installer/ffprobe';import Yt from'figlet';import es from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import*as be from'fs';import {pathToFileURL}from'url';var Re=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=q(s);return this.cache.set(s,r),r}spinner=createSpinner("",{color:"green"});logger=Et({level:"silent",enabled:false});events=new EventEmitter;groupCache=new _e({stdTTL:300,useClones:false});collectors=new Map},a=new Re;var y=o=>o,Ye=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(o){throw o}},Xe=async o=>{try{let e=`.session/${o}/auth/creds.json`;await Le.unlink(e);}catch(e){throw a.spinner.error(`Failed to remove auth creds for session "${o}"!`),e}},E=(o="")=>o?.length?o.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var v=(o,e="lime")=>Array.isArray(e)?et(e)(o):et([e,e])(o),Ee=o=>{try{return JSON.parse(o)}catch{return b.attempt(()=>JSON.parse(JSON.stringify(o)||"{}"))}},ee=o=>{try{return JSON.stringify(o)}catch{let e=b.attempt(()=>JSON.stringify(Ee(o)||"{}"));return b.isError(e)?"{}":e}},Gs=(o="")=>b.shuffle(o).join(""),te=(o="",e="")=>o?b.includes(o.toLowerCase(),e.toLowerCase()):null,tt=(o="")=>o?b.castArray(o.match(URL_REGEX)||[]):[],Ks=o=>o[Math.floor(Math.random()*o.length)],A=(o,e)=>{for(let t of o||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},st=(o,e)=>{let t=b.castArray(e),s=(n,c)=>b.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>b.some(c,(p,l)=>n?.[l]===p),i=n=>b.isArray(n)?b.find(n,i)??n:b.isObject(n)?b.find(t,l=>s(n,l))||b.find(t,l=>r(n,l))?n:b.find(b.values(n),i)??n:null;return i(o)},Hs=(o,e,t)=>new Proxy(o,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var N=o=>{let e;Array.isArray(o)?e=o.join("|"):typeof o=="string"?e=o:e=String(o);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},it=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))e.add(t[1]);return b.toArray(e)},We=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return b.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ti=o=>b.isEmpty(o)?[]:b.map([...o],e=>`${e}@s.whatsapp.net`),rt=o=>b.omit(o,["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"]),G=o=>{if(!o)return {leaf:void 0,chain:[]};let e=extractMessageContent(o)||o,t=[];for(;e&&typeof e=="object";){let s=getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},W=o=>Number(o?.split("@")[0]);K.setFfmpegPath(Ft.path);K.setFfprobePath(zt.path);var h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return De__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Le.unlink(t)));}static async safeReadFile(e){try{return await Le.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Le.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},I=class{static async toBuffer(e){if(b.isBuffer(e))return e;if(b.isArrayBuffer(e))return Buffer.from(e);if(b.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},D=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,s)=>{let r=K(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{K.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},se=class{static async getWaAudio(e,t="opus"){let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);D.validate(r,h.MIME.AUDIO);let i=M.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",n);await M.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await H.process({input:i,output:c,options:l,onEnd:async()=>{p=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([i,c]);}}),await M.cleanup([i,c]),p}catch(l){throw await M.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},L=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);D.validate(s,h.MIME.VIDEO);let r=M.createTempPath("video","mp4"),i=M.createTempPath("thumb","jpg");await M.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{K(r).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:De__default.basename(i),folder:De__default.dirname(i),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await M.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await M.cleanup([r,i]),n}catch(c){throw await M.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return H.getDuration(e)}},ie=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===h.MIME.GIF?Ne(e,{animated:false}):Ne(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Ne(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},Z=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s||!D.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(h.MIME.VIDEO)?L.getThumbnail(e):ie.getThumbnail(t)}},re=class{static createExifMetadata(e){let t={"sticker-pack-id":N(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=M.createTempPath("sticker_in",r),n=M.createTempPath("sticker_out","webp");await M.safeWriteFile(i,e);let c=h.STICKER.MAX_DURATION;try{let x=await L.getDuration(i);c=y(Math.min(x,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let p=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),k;try{return await H.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await M.safeReadFile(n);},onError:async()=>{await M.cleanup([i,n]);}}),await M.cleanup([i,n]),k}catch(x){throw await M.cleanup([i,n]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||h.STICKER.DEFAULT_QUALITY,c=D.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await ie.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Dt.Image;await l.load(c),l.exif=p;let k=await l.save(null);return Buffer.isBuffer(k)?k:Buffer.from(k)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},ne=class{static async create(e){try{let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:N(Date.now().toString()),jpegThumbnail:await Z.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},oe=I.toBuffer.bind(I),nt=se.getWaAudio.bind(se),yi=L.getThumbnail.bind(L),hi=L.getDuration.bind(L),Oe=Z.getThumbnail.bind(Z),ot=re.create.bind(re),at=ne.create.bind(ne);var $e=class o{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new o)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new Mutex,this.kLocks.set(e,t);}return t}},je=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=$e.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await mkdir(dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return st(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,k=Math.min(l+this.size,r.length),x=r.subarray(l,k);c.push(writeFile(join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:x.toString("base64")})));}return c.push(writeFile(join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(readFile(join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(k=>Buffer.from(JSON.parse(k).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(unlink(join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(unlink(join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await readdir(this.chunkDir)).length===0&&await rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},q=(o,e)=>new je(o,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var mt=async o=>{a.spinner.start(" Initializing auth state...");let e=await stat(o).catch(()=>{});if(e){if(!e.isDirectory())throw a.spinner.error(` Failed to open credentials
2
- `),`found something that is not a directory at ${o}, either delete it or specify a different location`}else await mkdir(o,{recursive:true});let t=q(`${o}/auth/creds.json`,{BufferJSON:BufferJSON}),s=q(`${o}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||initAuthCreds();return a.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,k=await s.get(l);i==="app-state-sync-key"&&k&&(k=proto.Message.AppStateSyncKeyData.fromObject(k)),c[p]=k;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],k=`${c}:${p}`;l?n.push(s.set(k,l)):n.push(s.delete(k).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var Ht=new _e,dt=(o,e)=>({logger:a.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:o.options.autoOnline,syncFullHistory:o.options.syncFullHistory,msgRetryCounterCache:new _e,mediaCache:new _e({stdTTL:60}),cachedGroupMetadata:async t=>Ht.get(t),shouldIgnoreJid:t=>isJidBroadcast(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,a.logger)},getMessage:async t=>{if(t?.id)return await o.db("messages").get(t.id)}});var ft=async o=>{let e=`.session/${o.options.session}`;console.info=()=>{};let{state:t,saveCreds:s}=await mt(e),r=dt(o,t),i=Zt(r);i.ev.on("creds.update",s),a.set("socket",i);};var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=a.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),a.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=a.get("socket"),s={};return s.callId=e.id,s.callerId=jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=jidNormalizedUser(e.chatId),s.roomName=E(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var ce={version:"2.0.3",author:"zaadevofc"};var yt=o=>{es.generate(o,{small:true},e=>{console.log(e);});},ht=async()=>{console.clear(),a.spinner.start(" Checking for updates...");let o=await Ye(),e=ce.version===o;a.spinner.stop();let t="Zaileys",s=`
2
+ `),`found something that is not a directory at ${o}, either delete it or specify a different location`}else await mkdir(o,{recursive:true});let t=q(`${o}/auth/creds.json`,{BufferJSON:BufferJSON}),s=q(`${o}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||initAuthCreds();return a.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,k=await s.get(l);i==="app-state-sync-key"&&k&&(k=proto.Message.AppStateSyncKeyData.fromObject(k)),c[p]=k;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],k=`${c}:${p}`;l?n.push(s.set(k,l)):n.push(s.delete(k).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var Ht=new _e,dt=(o,e)=>({logger:a.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:o.options.autoOnline,syncFullHistory:o.options.syncFullHistory,msgRetryCounterCache:new _e,mediaCache:new _e({stdTTL:60}),cachedGroupMetadata:async t=>Ht.get(t),shouldIgnoreJid:t=>isJidBroadcast(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,a.logger)},getMessage:async t=>{if(t?.id)return await o.db("messages").get(t.id)}});var ft=async o=>{let e=`.session/${o.options.session}`;console.info=()=>{};let{state:t,saveCreds:s}=await mt(e),r=dt(o,t),i=Zt(r);i.ev.on("creds.update",s),a.set("socket",i);};var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=a.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),a.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=a.get("socket"),s={};return s.callId=e.id,s.callerId=jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=jidNormalizedUser(e.chatId),s.roomName=E(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var ce={version:"2.0.5",author:"zaadevofc"};var yt=o=>{es.generate(o,{small:true},e=>{console.log(e);});},ht=async()=>{console.clear(),a.spinner.start(" Checking for updates...");let o=await Ye(),e=ce.version===o;a.spinner.stop();let t="Zaileys",s=`
3
3
  by ${ce.author} \xB7 v${ce.version}`,r=`${e?"Already using latest version!":`Update available! (v${o})`}
4
4
  `,i=e?"lime":"orange",n=await Yt.text(t),c=cristal(n);console.log(c),console.log(v(s,"dimgray")),console.log(v(r,i));};var le=class{constructor(e){this.client=e;this.initialize();}async initialize(){a.spinner.start(" Initializing connection...");let e=a.get("socket"),t={},s=async()=>{t.status="reload",a.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await delay(3e3),a.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await Xe(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){a.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());a.spinner.warn(` Pairing expired at ${cristal(i)}`),a.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:p}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,a.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&p){t.authTimeout=Date.now()+6e4;let l=new Date(t.authTimeout).toLocaleTimeString();a.spinner.warn(" Please scan the QR code..."),a.spinner.warn(` Qr code expired at ${cristal(l)}`),yt(p),t.qr=p;return}if(n==="close"){let l=y(c?.error)?.output?.statusCode,k=c?.error?.message||"",x=typeof l=="number"&&l!==DisconnectReason.loggedOut;a.spinner.error(`[${l} - Closed] ${k}`),(l===401||l===405||l===500)&&(a.spinner.error(" Invalid session, please delete manually!"),a.spinner.error(` Session "${this.client.options.session}" has not valid, please delete it!
5
5
  `),await r()),x&&await s();}if(n==="open")if(e.user?.id){let l=jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;a.spinner.success(` Connected as ${cristal(k||l)}`);}else a.spinner.success(" Connected!");a.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,a.spinner.start(" Syncing messages history..."),i&&a.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(a.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),a.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",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"},Ve={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 ue=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 de=class{constructor(e){this.client=e;this.limiter=new ue(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=a.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),a.set("message",i),a.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=a.get("socket"),i={},n=G(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=G(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=kt[c],i.receiverId=jidNormalizedUser(r?.user?.id||""),i.receiverName=E(r?.user?.name||r?.user?.verifiedName),i.roomId=jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,k=p?.type===1,x=p?.type===2,X=i.roomId?.includes("@newsletter"),Ae=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ie=p?.key?.id;if(l||k||x){let S=(await this.client.db("messages").get(i.roomId))?.find(B=>B.key.id===Ie);if(!S)return;e=S,n=G(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=A([e?.key],["remoteJidAlt","participant"])||null,i.senderId=jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=E(e?.pushName||e?.verifiedBizName),i.senderDevice=getDevice(i.chatId),i.channelId=N([i.roomId,i.senderId]),i.uniqueId=N([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,X){let C=await r.newsletterMetadata("jid",i.roomId);i.roomName=y(C.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(z&&(i.senderLid=jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=Ee(p?.paramsJson)?.id),i.text=E(i.text),i.mentions=it(i.text),i.links=tt(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=z,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=X,i.isQuestion=Ae,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!te(ee(n),"editedMessage"),i.isDeleted=l,i.isPinned=k,i.isUnPinned=x,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!te(ee(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!te(ee(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let C=this.client.options.citation;for(let S of Object.keys(C)){let B=C[S];i.citation[S]=async()=>{let U=await B(),Pe=[W(i.roomId),W(i.senderLid),W(i.senderId)];return !!b.intersection(Pe,U).length};}}i.chatType!=="text"&&(i.media={...rt(p),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let $=p?.contextInfo?.quotedMessage,j=A([$],["viewOnceMessageV2Extension","viewOnceMessage"]),_=p?.contextInfo?.stanzaId;if($&&!this.maxReplies){this.maxReplies--;let S=(await this.client.db("messages").get(i.roomId))?.find(U=>U.key.id===_),B={...S,...G(j).leaf};j?(i.replied=await this.parse(B,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(S,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var fe=class{constructor(e){this.client=e;this.connection=new le(e),this.messages=new de(e),this.calls=new ae(e),this.initialize();}connection;messages;calls;async initialize(){let e=a.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").push(n.id,n);for(let n of r)await this.client.db("contacts").push(n.id,n);for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(n.key.remoteJid,n);}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(s.key.remoteJid,s);}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").push(s.id,s);}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").push(s.id,s);});}};var Q=(o,e)=>{let t=o.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()}),as=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),cs=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),ps=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),ls=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()}),us=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([os,as,cs,ps,ls]).array()}),ms=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),Mt=u.union([ms,us]);var Y=u.url().or(u.base64()).or(u.instanceof(Buffer)),vt=u.object({text:u.string()}).passthrough(),ds=u.object({image:Y,caption:u.string().optional()}).passthrough(),fs=u.object({audio:Y,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),gs=u.object({video:Y,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),ys=u.object({sticker:Y,caption:u.string().optional()}).passthrough(),hs=u.object({document:Y,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),ks=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(),ws=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),Ms=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),bt=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:Mt.optional()});u.enum(["forward","button","edit","delete"]);var vs=u.union([vt,ds,fs,gs,ys,hs,ks,ws,Ms]),Tt=u.string().or(u.intersection(vs,bt.omit({buttons:true}))),xt=u.intersection(vt,bt.omit({banner:true}));var ge=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=y(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=a.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var ye=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=Q(xt,t):t=Q(Tt,t));let i=a.get("socket"),n={},c={},p=b.isString(t),l=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,x=this.client.options?.autoPresence,X=b.has(t,"replied"),Ae=b.has(t,"banner"),z=b.has(t,"isViewOnce"),Ie=s=="button",$=b.has(t,"image"),j=b.has(t,"video"),_=b.has(t,"audio"),C=b.has(t,"sticker"),S=b.has(t,"document"),B=b.has(t,"location"),U=b.has(t,"contacts"),Pe=b.has(t,"poll"),Ze=$||j||_||C||S,V=p?t:A([t],["text","caption"]);if(x&&(_?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),k&&(n={...n,mentions:We(V),contextInfo:{mentionedJid:We(V)}}),X&&(c.quoted=y(t).replied,l&&(c.quoted.key.remoteJid=Ve[l],c.quoted.key.participant=Ve[l])),Ae&&(n={...n,contextInfo:{externalAdReply:y(t).banner}},n.contextInfo.externalAdReply.mediaType=1),z&&(n={...n,viewOnce:y(t)?.isViewOnce}),V&&(n={...n,text:V,caption:V},Ze&&delete y(n).text),Ze){let w=A([t],["image","video","audio","sticker","document"]),P=b.isString(w)?{url:w}:w;if($&&(n={...n,image:P,jpegThumbnail:await Oe(w)}),j){let R=y(t)?.ptv;n={...n,video:P,ptv:R,jpegThumbnail:await Oe(w)};}if(_){let R=y(t)?.ptt;n={...n,audio:await nt(w),ptt:R,mimetype:R?"audio/ogg; codecs=opus":"audio/mpeg"};}if(C&&(n={...n,sticker:await ot(w,this.client.options?.sticker)}),S){let R=await at(w);n={...n,fileName:y(t).fileName,...R};}}if(B){let w=y(t).location;n={...n,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(U){let w=y(t)?.contacts,Qe=w?.contacts.map(P=>{let R=["BEGIN:VCARD","VERSION:3.0",`FN:${P.fullname}`,`ORG:${P.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${P.phoneNumber}:${P.phoneNumber}`,"END:VCARD"].join(`
@@ -10,7 +10,7 @@ by ${ce.author} \xB7 v${ce.version}`,r=`${e?"Already using latest version!":`Upd
10
10
  `,p+="\u2014",console.log(p);}call(e){if(!this.logsReady)return;let t=y(this.getRoomColor(e)),s=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=v(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
11
11
  `;i+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${W(e?.callerId)})`,t)}
12
12
  `,i+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,i+="\u2014",console.log(i);}};var Me=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var ve=class{plugins=[];pluginsDir;constructor(e=De.join(process.cwd(),"plugins")){this.pluginsDir=e;}async load(){if(!be.existsSync(this.pluginsDir))return;let e=be.readdirSync(this.pluginsDir).filter(t=>(t.endsWith(".ts")||t.endsWith(".js"))&&!t.endsWith(".d.ts"));for(let t of e){let s=De.join(this.pluginsDir,t);try{let i=(await import(pathToFileURL(s).href)).default;i?.handler&&i?.config&&this.plugins.push(i);}catch{}}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Gn=(o,e)=>({handler:o,config:e});var Te=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Ge=class{constructor(e){this.client=e;}async block(e){return await a.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await a.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await a.get("socket").updateLastSeenPrivacy(e)}async online(e){return await a.get("socket").updateOnlinePrivacy(e)}async picture(e){return await a.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await a.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await a.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await a.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=a.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await a.get("socket").fetchBlocklist()}async getSettings(){return await a.get("socket").fetchPrivacySettings(true)}},xe=class{constructor(e){this.plient=e;this.privacy=new Ge(e);}privacy};var Ke=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").newsletterCreate(e,t)}async action(e,t){let s=a.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=a.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,oe(t))}}async metadata(e,t){return await a.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await a.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await a.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=a.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await a.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await a.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await a.get("socket").newsletterDemote(e,t)}async delete(e){return await a.get("socket").newsletterDelete(e)}async removePicture(e){return await a.get("socket").newsletterRemovePicture(e)}},Se=class{constructor(e){this.nlient=e;this.newsletter=new Ke(e);}newsletter};var He=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await a.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await a.get("socket").communityLeave(e)}async metadata(e){return await a.get("socket").communityMetadata(e)}async update(e,t,s){let r=a.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=a.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=a.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,y(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,y(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=a.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=a.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Ce=class{constructor(e){this.mlient=e;this.community=new He(e);}community};var At=class{constructor(e){this.options=e;return this.options=Q(Ct,e),this._ready=this.initialize(),new Te().classInjection(this,[new ye(this),new he(this),new xe(this),new Se(this),new Ce(this)])}listener;_ready;logs;collector=new ke;middleware=new Me;plugins=new ve;async initialize(){await ht(),await ft(this),await this.plugins.load(),this.listener=new fe(this),this.logs=new we(this);}ready(){return this._ready}db(e){return a.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){a.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=A(t,["name","verifiedName"]),i=A(s,["notify","name"]);return E(r||i)||null}};
13
+ `,i+="\u2014",console.log(i);}};var Me=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var ve=class{plugins=[];pluginsDir;constructor(e=De.join(process.cwd(),"plugins")){this.pluginsDir=e;}async load(){if(!be.existsSync(this.pluginsDir))return;let e=be.readdirSync(this.pluginsDir).filter(t=>(t.endsWith(".ts")||t.endsWith(".js"))&&!t.endsWith(".d.ts"));for(let t of e){let s=De.join(this.pluginsDir,t);try{let i=(await import(pathToFileURL(s).href)).default;i?.default&&(i=i.default),i?.handler&&i?.config&&this.plugins.push(i);}catch{}}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Gn=(o,e)=>({handler:o,config:e});var Te=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Ge=class{constructor(e){this.client=e;}async block(e){return await a.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await a.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await a.get("socket").updateLastSeenPrivacy(e)}async online(e){return await a.get("socket").updateOnlinePrivacy(e)}async picture(e){return await a.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await a.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await a.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await a.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=a.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await a.get("socket").fetchBlocklist()}async getSettings(){return await a.get("socket").fetchPrivacySettings(true)}},xe=class{constructor(e){this.plient=e;this.privacy=new Ge(e);}privacy};var Ke=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").newsletterCreate(e,t)}async action(e,t){let s=a.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=a.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,oe(t))}}async metadata(e,t){return await a.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await a.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await a.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=a.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await a.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await a.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await a.get("socket").newsletterDemote(e,t)}async delete(e){return await a.get("socket").newsletterDelete(e)}async removePicture(e){return await a.get("socket").newsletterRemovePicture(e)}},Se=class{constructor(e){this.nlient=e;this.newsletter=new Ke(e);}newsletter};var He=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await a.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await a.get("socket").communityLeave(e)}async metadata(e){return await a.get("socket").communityMetadata(e)}async update(e,t,s){let r=a.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=a.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=a.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,y(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,y(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=a.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=a.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Ce=class{constructor(e){this.mlient=e;this.community=new He(e);}community};var At=class{constructor(e){this.options=e;this.options=Q(Ct,e);let t=new Te().classInjection(this,[new ye(this),new he(this),new xe(this),new Se(this),new Ce(this)]);return this._ready=this.initialize(t),t}listener;_ready;logs;collector=new ke;middleware=new Me;plugins=new ve;async initialize(e){await ht(),await ft(this),await this.plugins.load(),this.listener=new fe(e||this),this.logs=new we(this);}ready(){return this._ready}db(e){return a.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){a.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=A(t,["name","verifiedName"]),i=A(s,["notify","name"]);return E(r||i)||null}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${ce.author} \xB7 v${ce.version}`,r=`${e?"Already using latest version!":`Upd
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/10/2025 4:03:19 PM
21
+ * Last build time: 12/10/2025 7:45:02 PM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
24
  */export{se as AudioProcessor,At as Client,ne as DocumentProcessor,ie as ImageProcessor,je as Lowdb,Z as MediaProcessor,ve as Plugins,re as StickerProcessor,L as VideoProcessor,W as cleanJid,rt as cleanMediaObject,q as createLowdb,Gn as definePlugins,We as extractJids,tt as extractUrls,te as findGlobalWord,st as findNestedByKeys,N as generateId,G as getDeepContent,Ye as getLatestLibVersion,Oe as getMediaThumbnail,it as getUsersMentions,hi as getVideoDuration,yi as getVideoThumbnail,nt as getWaAudio,at as getWaDocument,ot as getWaSticker,y as ignoreLint,v as logColor,Hs as modifyFn,E as normalizeText,ti as numbersToJids,A as pickKeysFromArray,Ks as randomize,ft as registerAuthCreds,Xe as removeAuthCreds,Gs as shuffleString,oe as toBuffer,Ee as toJson,ee as toString,mt as useAuthState};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zaileys",
3
3
  "description": "Zaileys - Simplified WhatsApp Node.js TypeScript/JavaScript API",
4
- "version": "2.0.4",
4
+ "version": "2.0.6",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",