zaileys 2.0.16 → 2.1.1
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 +103 -24
- package/dist/index.d.mts +96 -79
- package/dist/index.d.ts +96 -79
- package/dist/index.js +15 -15
- package/dist/index.mjs +15 -15
- package/package.json +77 -77
- package/tsconfig.json +1 -1
- package/.github/workflows/gsearch.yml +0 -56
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
'use strict';var ls=require('baileys'),Be=require('fs/promises'),asyncMutex=require('async-mutex'),$e=require('path'),nanospinner=require('nanospinner'),Ke=require('node-cache'),events=require('events'),Ut=require('pino'),it=require('gradient-string'),M=require('lodash'),fileType=require('file-type'),X=require('fluent-ffmpeg'),Kt=require('node-webpmux'),os=require('os'),je=require('sharp'),_=require('fs'),us=require('figlet'),ds=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),qs=require('stream'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ls__default=/*#__PURE__*/_interopDefault(ls);var Be__default=/*#__PURE__*/_interopDefault(Be);var $e__namespace=/*#__PURE__*/_interopNamespace($e);var Ke__default=/*#__PURE__*/_interopDefault(Ke);var Ut__default=/*#__PURE__*/_interopDefault(Ut);var it__default=/*#__PURE__*/_interopDefault(it);var M__default=/*#__PURE__*/_interopDefault(M);var X__default=/*#__PURE__*/_interopDefault(X);var Kt__default=/*#__PURE__*/_interopDefault(Kt);var je__default=/*#__PURE__*/_interopDefault(je);var ___namespace=/*#__PURE__*/_interopNamespace(_);var us__default=/*#__PURE__*/_interopDefault(us);var ds__default=/*#__PURE__*/_interopDefault(ds);var u__default=/*#__PURE__*/_interopDefault(u);var qs__default=/*#__PURE__*/_interopDefault(qs);var Fe=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 o=H(s);return this.cache.set(s,o),o}spinner=nanospinner.createSpinner("",{color:"green"});logger=Ut__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Ke__default.default({stdTTL:300,useClones:false});collectors=new Map},r=new Fe;var h=a=>a,nt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},ot=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Be__default.default.unlink(e);}catch(e){throw r.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},R=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var b=(a,e="lime")=>Array.isArray(e)?it__default.default(e)(a):it__default.default([e,e])(a),Oe=a=>{try{return JSON.parse(a)}catch{return M__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},Z=a=>{try{return JSON.stringify(a)}catch{let e=M__default.default.attempt(()=>JSON.stringify(Oe(a)||"{}"));return M__default.default.isError(e)?"{}":e}},pn=(a="")=>M__default.default.shuffle(a).join(""),Q=(a="",e="")=>a?M__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,rt=(a="")=>a?M__default.default.castArray(a.match(ls.URL_REGEX)||[]):[],un=a=>a[Math.floor(Math.random()*a.length)],A=(a,e)=>{let t=(s,o)=>{if(!s||typeof s!="object")return;let n=s;for(let i of o.split("."))if(n=n?.[i],n==null)return;return n};for(let s of a||[])if(s&&typeof s=="object")for(let o of e){let n=t(s,o);if(n!=null)return n}},at=(a,e)=>{let t=M__default.default.castArray(e),s=(i,c)=>M__default.default.every(c,(l,p)=>i?.[p]===l),o=(i,c)=>M__default.default.some(c,(l,p)=>i?.[p]===l),n=i=>M__default.default.isArray(i)?M__default.default.find(i,n)??i:M__default.default.isObject(i)?M__default.default.find(t,p=>s(i,p))||M__default.default.find(t,p=>o(i,p))?i:M__default.default.find(M__default.default.values(i),n)??i:null;return n(a)},mn=(a,e,t)=>new Proxy(a,{apply(s,o,n){e?.(n);let i=Reflect.apply(s,o,n);return t?t(i,n):i}});var $=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let o=0;o<s;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},ct=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return M__default.default.toArray(e)},Le=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return M__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},kn=a=>M__default.default.isEmpty(a)?[]:M__default.default.map([...a],e=>`${e}@s.whatsapp.net`),lt=a=>M__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),ie=a=>{if(!a)return {leaf:void 0,chain:[]};let e=ls.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=ls.getContentType(e);if(!s)break;t.push(s);let o=e[s];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},D=a=>Number(a?.split("@")[0]);var pt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;X__default.default.setFfmpegPath(e.path),X__default.default.setFfprobePath(t.path);}catch{}},k={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},v=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return $e__namespace.default.join(os.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Be__default.default.unlink(t)));}static async safeReadFile(e){try{return await Be__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Be__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},P=class{static async toBuffer(e){if(M__default.default.isBuffer(e))return e;if(M__default.default.isArrayBuffer(e))return Buffer.from(e);if(M__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},z=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(k.MIME.IMAGE)||e.startsWith(k.MIME.VIDEO)}static isAnimated(e){return e===k.MIME.GIF||e.startsWith(k.MIME.VIDEO)}},ee=class{static async process(e){return new Promise((t,s)=>{let o=X__default.default(e.input).output(e.output);for(let n=0;n<e.options.length;n++){let i=e.options[n];i.startsWith("-")&&n+1<e.options.length&&!e.options[n+1].startsWith("-")?(o.outputOptions(i,e.options[n+1]),n++):o.outputOptions(i);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(n){s(n);}}).on("error",async n=>{try{await e.onError(n);}finally{s(n);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{X__default.default.ffprobe(e,(o,n)=>{if(o)return s(o);t(n.format.duration||0);});})}},re=class{static async getWaAudio(e,t="opus"){let s=await P.toBuffer(e),o=await fileType.fileTypeFromBuffer(s);z.validate(o,k.MIME.AUDIO);let n=v.createTempPath("audio_in","wav"),i=t==="opus"?"ogg":"mp3",c=v.createTempPath("audio_out",i);await v.safeWriteFile(n,s);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await ee.process({input:n,output:c,options:p,onEnd:async()=>{l=await v.safeReadFile(c);},onError:async()=>{await v.cleanup([n,c]);}}),await v.cleanup([n,c]),l}catch(p){throw await v.cleanup([n,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},N=class{static async getThumbnail(e){let t=await P.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);z.validate(s,k.MIME.VIDEO);let o=v.createTempPath("video","mp4"),n=v.createTempPath("thumb","jpg");await v.safeWriteFile(o,t);let i;try{return await new Promise((c,l)=>{X__default.default(o).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:$e__namespace.default.basename(n),folder:$e__namespace.default.dirname(n),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{i=(await v.safeReadFile(n)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await v.cleanup([o,n]),i}catch(c){throw await v.cleanup([o,n]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return ee.getDuration(e)}},ae=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===k.MIME.GIF?je__default.default(e,{animated:false}):je__default.default(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return je__default.default(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},te=class{static async getThumbnail(e){let t=await P.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s||!z.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(k.MIME.VIDEO)?N.getThumbnail(e):ae.getThumbnail(t)}},ce=class{static createExifMetadata(e){let t={"sticker-pack-id":$(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),n=Buffer.concat([s,o]);return n.writeUIntLE(o.length,14,4),n}static async processAnimated(e,t,s){let o=this.getExtension(t),n=v.createTempPath("sticker_in",o),i=v.createTempPath("sticker_out","webp");await v.safeWriteFile(n,e);let c=k.STICKER.MAX_DURATION;try{let S=await N.getDuration(n);c=h(Math.min(S,k.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",k.STICKER.MAX_DURATION);}let l=`scale=${k.STICKER.SIZE}:${k.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${k.STICKER.SIZE}:${k.STICKER.SIZE},fps=${k.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-s)),y;try{return await ee.process({input:n,output:i,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${k.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{y=await v.safeReadFile(i);},onError:async()=>{await v.cleanup([n,i]);}}),await v.cleanup([n,i]),y}catch(S){throw await v.cleanup([n,i]),new Error(`Animated sticker processing failed: ${S.message}`)}}static getExtension(e){return e===k.MIME.GIF?"gif":e.startsWith(k.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await P.toBuffer(e),o=await fileType.fileTypeFromBuffer(s);if(!o)throw new Error("Unable to detect file type");let n=t?.quality||k.STICKER.DEFAULT_QUALITY,c=z.isAnimated(o.mime)?await this.processAnimated(s,o.mime,n):await ae.resizeForSticker(s,n),l=this.createExifMetadata(t),p=new Kt__default.default.Image;await p.load(c),p.exif=l;let y=await p.save(null);return Buffer.isBuffer(y)?y:Buffer.from(y)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},le=class{static async create(e){try{let t=await P.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:$(Date.now().toString()),jpegThumbnail:await te.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},pe=P.toBuffer.bind(P),ut=re.getWaAudio.bind(re),En=N.getThumbnail.bind(N),Wn=N.getDuration.bind(N),ze=te.getThumbnail.bind(te),mt=ce.create.bind(ce),dt=le.create.bind(le);var gt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ue=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await _.promises.readFile(e,"utf-8"),s=JSON.parse(t),o=["sender-key:","session:"],n={},i=!1;for(let[c,l]of Object.entries(s))o.some(y=>c.startsWith(y))?i=!0:n[c]=l;i&&(await _.promises.writeFile(e,JSON.stringify(n,null,2)),r.spinner.success(" Session keys repaired successfully"));}catch{r.spinner.warn(" Could not repair session keys, will re-negotiate");}},yt=()=>{let a=r.get("socket");return a?.end?a:null};var Zt=6e4,Qt=12e4,Yt=6e4,Xt=3,Ue=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Zt,staleThresholdMs:Qt,cooldownMs:Yt,maxRetries:Xt,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),r.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=r.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){r.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){r.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{r.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=r.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),r.spinner.success(" Session health check passed");return}catch{}await ue(this.options.session),r.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{r.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){r.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},se=null,ht=a=>(se&&se.stop(),se=new Ue(a),se),$n=()=>se;var Je=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new asyncMutex.Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new asyncMutex.Mutex,this.kLocks.set(e,t);}return t}},Ge=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,o="debounce",n=200){this.data=new Map,this.path=e,this.pool=Je.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=o,this.debounceMs=n;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await Be.readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let o=[];for(let[n,i]of Object.entries(s))this.isMeta(i)?o.push(this.loadChunk(n,i)):this.data.set(n,i);return await Promise.all(o),this.loaded=!0,this.data}catch{return await Be.mkdir($e.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[n,i]of this.data){if(this.isMeta(i)){t[n]=i;continue}JSON.stringify(i,this.replacer).length>this.size?s.push(this.saveChunk(n,i).then(l=>{t[n]=l;})):t[n]=i;}await Promise.all(s);let o=JSON.stringify(t,this.replacer,2);await Be.writeFile(this.path,o,"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 o=this.data.get(e),n;Array.isArray(o)?n=o:o===void 0?n=[]:n=[o],n.push(t),this.data.set(e,n),this.scheduleFlush();});}async upsert(e,t,s="key.id"){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let n=this.data.get(e),i;Array.isArray(n)?i=n:n===void 0?i=[]:i=[n];let c=M__default.default.get(t,s);if(c){let l=i.findIndex(p=>M__default.default.get(p,s)===c);l>=0?i[l]=t:i.push(t);}else 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 at(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let o=this.data.delete(e);return this.scheduleFlush(),o})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),o=Buffer.from(s,"utf-8"),n=Math.ceil(o.length/this.size);await Be.mkdir(this.chunkDir,{recursive:true});let i={v:1,k:e,t:n,s:this.size,c:o.length,m:Date.now().toString(36)},c=[];for(let l=0;l<n;l++){let p=l*this.size,y=Math.min(p+this.size,o.length),S=o.subarray(p,y);c.push(Be.writeFile($e.join(this.chunkDir,`${e}.${l}.json`),JSON.stringify({i:l,d:S.toString("base64")})));}return c.push(Be.writeFile($e.join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(i))),await Promise.all(c),{t:n,s:this.size,k:e}}async loadChunk(e,t){let s=$e.join(this.chunkDir,`${e}.manifest.json`),o=JSON.parse(await Be.readFile(s,"utf-8")),n=[];for(let p=0;p<o.t;p++)n.push(Be.readFile($e.join(this.chunkDir,`${e}.${p}.json`),"utf-8").then(y=>Buffer.from(JSON.parse(y).d,"base64")));let i=await Promise.all(n),c=Buffer.concat(i),l=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,l);}async delChunk(e,t){let s=[];for(let o=0;o<t.t;o++)s.push(Be.unlink($e.join(this.chunkDir,`${e}.${o}.json`)).catch(()=>{}));s.push(Be.unlink($e.join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await Be.readdir(this.chunkDir)).length===0&&await Be.rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},H=(a,e)=>new Ge(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var xt=async a=>{r.spinner.start(" Initializing auth state...");let e=await Be.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw r.spinner.error(` Failed to open credentials
|
|
2
|
-
`),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await Be.mkdir(a,{recursive:true});let t=H(`${a}/auth/creds.json`,{BufferJSON:ls.BufferJSON}),s=H(`${a}/auth/keys.json`,{BufferJSON:ls.BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let o=await t.get("creds")||ls.initAuthCreds();return r.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(n,i)=>{let c={};return await Promise.all(i.map(async l=>{let p=`${n}:${l}`,y=await s.get(p);n==="app-state-sync-key"&&y&&(y=ls.proto.Message.AppStateSyncKeyData.fromObject(y)),c[l]=y;})),c},set:async n=>{let i=[];for(let c in n)for(let l in n[c]){let p=n[c][l],y=`${c}:${l}`;p?i.push(s.set(y,p)):i.push(s.delete(y).then(()=>{}));}await Promise.all(i),await s.write();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var cs=new Ke__default.default,St=(a,e)=>({logger:r.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Ke__default.default,mediaCache:new Ke__default.default({stdTTL:60}),cachedGroupMetadata:async t=>cs.get(t),auth:{creds:e.creds,keys:ls.makeCacheableSignalKeyStore(e.keys,r.logger)},getMessage:async t=>t?.remoteJid?(await a.db("messages").get(t.remoteJid))?.find(n=>n?.key?.id===t.id):void 0});var Tt=async a=>{let e=yt();e&>(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:o}=await xt(t),n=St(a,s),i=ls__default.default(n);i.ev.on("creds.update",o),r.set("socket",i);};var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=r.get("socket");e.ev.on("call",async t=>{for(let s of t){let o=await this.parse(s);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),r.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=r.get("socket"),s={};return s.callId=e.id,s.callerId=ls.jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=ls.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 de={version:"2.0.15",author:"zaadevofc"};var At=a=>{ds__default.default.generate(a,{small:true},e=>{console.log(e);});},It=async()=>{console.clear(),r.spinner.start(" Checking for updates...");let a=await nt(),e=de.version===a;r.spinner.stop();let t="Zaileys",s=`
|
|
3
|
-
by ${
|
|
4
|
-
`,
|
|
5
|
-
`);return}if(p===500){r.spinner.error(" Server error occurred, attempting reconnect..."),await s();return}S&&await s();}if(i==="open")if(e.user?.id){let p=ls.jidNormalizedUser(e.user.id).split("@")[0],y=e.user.name||e.user.verifiedName;r.spinner.success(` Connected as ${it.cristal(y||p)}`);}else r.spinner.success(" Connected!");r.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:n})=>{t.status="syncing",t.syncProgress=n,r.spinner.start(" Syncing messages history..."),n&&r.spinner.update(` Syncing messages history ${n+"%"}`),n==100&&(r.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),r.events.emit("connection",t);});}};var Rt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},He={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var he=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var we=class{constructor(e){this.client=e;this.limiter=new he(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=r.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let o of t){let n=await this.parse(o);n&&(this.client.collector.push(n)||(await this.client.middleware.run({messages:n}),await this.client.plugins.execute(this.client,{messages:n}),r.set("message",n),r.events.emit("messages",n)),this.client.options.autoRead&&await e.readMessages([n.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,o=r.get("socket"),n={},i=ie(e.message),c=i.chain.at(-1),l=i.leaf;l?.message&&(i=ie(l.message),c=i.chain.at(-1),l=i.leaf),n.uniqueId=null,n.channelId=null,n.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,n.chatType=Rt[c],n.receiverId=ls.jidNormalizedUser(o?.user?.id||""),n.receiverName=R(o?.user?.name||o?.user?.verifiedName),n.roomId=ls.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,y=l?.type===1,S=l?.type===2,j=n.roomId?.includes("@newsletter"),We=!!e?.message?.questionMessage,V=e?.key?.fromMe||false;if(V&&this.client.options.ignoreMe&&t!=="replied")return;let De=l?.key?.id;if(p||y||S){let T=(await this.client.db("messages").get(n.roomId))?.find(B=>B.key.id===De);if(!T)return;e=T,i=ie(e.message),c=i.chain.at(-1),l=i.leaf;}if(n.roomName=await this.client.getRoomName(n.roomId),n.senderLid=A([e?.key],["remoteJidAlt","participant"])||null,n.senderId=ls.jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),n.senderName=R(e?.pushName||e?.verifiedBizName),n.senderDevice=ls.getDevice(n.chatId),n.channelId=$([n.roomId,n.senderId]),n.uniqueId=$([n.channelId,n.chatId]),n.timestamp=Number(e?.messageTimestamp)*1e3,j){let I=await o.newsletterMetadata("jid",n.roomId);n.roomName=h(I.thread_metadata.name)?.text,n.senderId=null,n.senderLid=null;}if(V&&(n.senderLid=ls.jidNormalizedUser(o.user.lid),n.senderId=n.receiverId,n.senderName=n.receiverName),n.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(n.text=Oe(l?.paramsJson)?.id),n.text=R(n.text),n.mentions=ct(n.text),n.links=rt(n.text||""),n.isBot=n.chatId.startsWith("BAE5")||n.chatId.startsWith("3EB0")||n.chatId.startsWith("Z4D3FC"),n.isFromMe=V,n.isTagMe=n.mentions?.includes(n.receiverId.split("@")[0]),n.isPrefix=n.text?.startsWith(this.client.options?.prefix)||false,n.isSpam=await this.limiter.isSpam(n.channelId),n.isPrefix&&(n.text=n.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),n.isGroup=n.roomId?.includes("@g.us"),n.isNewsletter=j,n.isQuestion=We,n.isStory=n.roomId?.includes("@broadcast"),!n.isGroup&&!n.roomName&&(n.roomName=n.senderName),n.isViewOnce=false,n.isEdited=!!Q(Z(i),"editedMessage"),n.isDeleted=p,n.isPinned=y,n.isUnPinned=S,n.isBroadcast=!!e?.broadcast,n.isEphemeral=!!Q(Z(l?.contextInfo),"ephemeralSettingTimestamp"),n.isForwarded=!!Q(Z(l?.contextInfo),"forwardingScore"),n.citation=null,this.client.options.citation){n.citation=n.citation||{};let I=this.client.options.citation;for(let T of Object.keys(I)){let B=I[T];n.citation[T]=async()=>{let G=await B(),Ne=[D(n.roomId),D(n.senderLid),D(n.senderId)];return !!M__default.default.intersection(Ne,G).length};}}n.chatType!=="text"&&(n.media={...lt(l),buffer:()=>ls.downloadMediaMessage(e,"buffer",{}),stream:()=>ls.downloadMediaMessage(e,"stream",{})}),n.message=()=>s,n.replied=null;let O=l?.contextInfo?.quotedMessage,L=A([O],["viewOnceMessageV2Extension","viewOnceMessage"]);L=Q(Z(O),"viewOnce")?O:L;let J=l?.contextInfo?.stanzaId;if(O&&this.maxReplies){this.maxReplies--;let T=(await this.client.db("messages").get(n.roomId))?.find(G=>G.key.id===J),B={...T,message:L};L?(n.replied=await this.parse(B,"replied"),n.replied.isViewOnce=true):n.replied=await this.parse(T,"replied"),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(n),n}};var ve=class{constructor(e){this.client=e;this.connection=new ye(e),this.messages=new we(e),this.calls=new me(e),this.initialize();}connection;messages;calls;async initialize(){let e=r.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);r.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);r.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:o,messages:n}=t;for(let i of s)await this.client.db("chats").upsert(i.id,i,"id");for(let i of o)await this.client.db("contacts").upsert(i.id,i,"id");for(let i of n){if(!i.message&&!i.key.isViewOnce||i?.category==="peer"||i.message?.protocolMessage&&!i.message?.protocolMessage?.memberLabel||i.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(i.key.remoteJid,i,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage&&!s.message?.protocolMessage?.memberLabel||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").upsert(s.key.remoteJid,s,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").upsert(s.id,s,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").upsert(s.id,s,"id");});}};var ne=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ws=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),vs=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),bs=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),Ms=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),xs=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),Ss=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ws,vs,bs,Ms,xs]).array()}),Ts=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()}),Et=u__default.default.union([Ts,Ss]);var oe=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Wt=u__default.default.object({text:u__default.default.string()}).passthrough(),Cs=u__default.default.object({image:oe,caption:u__default.default.string().optional()}).passthrough(),As=u__default.default.object({audio:oe,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),Is=u__default.default.object({video:oe,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),Rs=u__default.default.object({sticker:oe,caption:u__default.default.string().optional()}).passthrough(),Ps=u__default.default.object({document:oe,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),Es=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(),Ws=u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()}),Ds=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),Dt=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:Et.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Ns=u__default.default.union([Wt,Cs,As,Is,Rs,Ps,Es,Ws,Ds]),Nt=u__default.default.string().or(u__default.default.intersection(Ns,Dt.omit({buttons:true}))),Ft=u__default.default.intersection(Wt,Dt.omit({banner:true}));var be=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=h(e).buttons,s=t?.data||[],n=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:n}}}async send(e,t,s){let o=r.get("socket"),n=o.authState?.creds?.me?.id||o.user?.id,i=this.build(t),c=ls.generateWAMessageFromContent(e,{interactiveMessage:i},{userJid:n,messageId:ls.generateMessageIDV2(n),...s});return await o.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"}}]}]}]}),o.config?.emitOwnEvents&&!ls.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var Me=class{constructor(e){this.client=e;}async signal(e,t,s,o){s!="delete"&&(s=="button"?t=ne(Ft,t):t=ne(Nt,t));let n=r.get("socket"),i={},c={},l=M__default.default.isString(t),p=this.client.options?.fakeReply?.provider,y=this.client.options?.autoMentions,S=this.client.options?.autoPresence,j=M__default.default.has(t,"replied"),We=M__default.default.has(t,"banner"),V=M__default.default.has(t,"isViewOnce"),De=s=="button",O=M__default.default.has(t,"image"),L=M__default.default.has(t,"video"),J=M__default.default.has(t,"audio"),I=M__default.default.has(t,"sticker"),T=M__default.default.has(t,"document"),B=M__default.default.has(t,"location"),G=M__default.default.has(t,"contacts"),Ne=M__default.default.has(t,"poll"),tt=O||L||J||I||T,K=l?t:A([t],["text","caption"]);if(S&&(J?await n.sendPresenceUpdate("recording",e):await n.sendPresenceUpdate("composing",e)),y&&(i={...i,mentions:Le(K),contextInfo:{mentionedJid:Le(K)}}),j&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=He[p],c.quoted.key.participant=He[p])),We&&(i={...i,contextInfo:{externalAdReply:h(t).banner}},i.contextInfo.externalAdReply.mediaType=1),V&&(i={...i,viewOnce:h(t)?.isViewOnce}),K&&(i={...i,text:K,caption:K},tt&&delete h(i).text),tt){let w=A([t],["image","video","audio","sticker","document"]),E=M__default.default.isString(w)?{url:w}:w;if(O&&(i={...i,image:E,jpegThumbnail:await ze(w)}),L){let W=h(t)?.ptv;i={...i,video:E,ptv:W,jpegThumbnail:await ze(w)};}if(J){let W=h(t)?.ptt;i={...i,audio:await ut(w),ptt:W,mimetype:W?"audio/ogg; codecs=opus":"audio/mpeg"};}if(I&&(i={...i,sticker:await mt(w,this.client.options?.sticker)}),T){let W=await dt(w);i={...i,fileName:h(t).fileName,...W};}}if(B){let w=h(t).location;i={...i,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(G){let w=h(t)?.contacts,st=w?.contacts.map(E=>{let W=["BEGIN:VCARD","VERSION:3.0",`FN:${E.fullname}`,`ORG:${E.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${E.phoneNumber}:${E.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
-
`);return {displayName:E.fullname,vcard:W}});i={...i,contacts:{displayName:w?.title,contacts:st}};}if(Ne){let w=h(t)?.poll;i={...i,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(i={...i,contextInfo:{...h(i).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),s=="edit"&&(i={...i,edit:o?.key},await n.sendPresenceUpdate("paused",e)),s=="delete"&&(i={...i,delete:o?.key},await n.sendPresenceUpdate("paused",e)),De?await new be().send(e,t,c):await n.sendMessage(e,h(i),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return M__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let s=r.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await r.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await r.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ze=class{constructor(e){this.client=e;}async create(e,t){return await r.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await r.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await r.get("socket").communityLeave(e)}async metadata(e){return await r.get("socket").communityMetadata(e)}async update(e,t,s){let o=r.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,s);case "description":return await o.communityUpdateDescription(e,s)}}async group(e,t,s){let o=r.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await o.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,s);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,s,o){let n=r.get("socket");switch(t){case "list":return await n.communityRequestParticipantsList(e);case "request-update":return await n.communityRequestParticipantsUpdate(e,o,h(s));case "update":if(!s||!o)throw "Action and participants are required for update";return await n.communityParticipantsUpdate(e,o,h(s));case "all":return await n.communityFetchAllParticipating()}}async invite(e,t,...s){let o=r.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let o=r.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,s);case "update":return await o.communitySettingUpdate(e,s);case "memberAdd":return await o.communityMemberAddMode(e,s);case "approval":return await o.communityJoinApprovalMode(e,s)}}},xe=class{constructor(e){this.mlient=e;this.community=new Ze(e);}community};var Qe=class{constructor(e){this.client=e;}async create(e,t){return await r.get("socket").groupCreate(e,t)}async participant(e,t,s){return await r.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let o=r.get("socket"),n=Buffer.isBuffer(t);switch(s){case "subject":if(!n)return await o.groupUpdateSubject(e,t);case "description":if(!n)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,pe(t))}}async setting(e,t){let s=r.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await r.get("socket").groupLeave(e)}async inviteCode(e,t){let s=r.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await r.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let o=r.get("socket");switch(s){case "approve":return await o.groupRequestParticipantsUpdate(e,t,s);case "reject":return await o.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await r.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await r.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=r.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,o[t])}},Se=class{constructor(e){this.glient=e;this.group=new Qe(e);}group};var Ye=class{constructor(e){this.client=e;}async create(e,t){return await r.get("socket").newsletterCreate(e,t)}async action(e,t){let s=r.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 o=r.get("socket"),n=Buffer.isBuffer(t);switch(s){case "name":if(!n)return await o.newsletterUpdateName(e,t);case "description":if(!n)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,pe(t))}}async metadata(e,t){return await r.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await r.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await r.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,o){let n=r.get("socket"),i=s.getTime()/1e3,c=o.getTime()/1e3;return await n.newsletterFetchMessages(e,t,i,c)}async adminCount(e){return await r.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await r.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await r.get("socket").newsletterDemote(e,t)}async delete(e){return await r.get("socket").newsletterDelete(e)}async removePicture(e){return await r.get("socket").newsletterRemovePicture(e)}},Te=class{constructor(e){this.nlient=e;this.newsletter=new Ye(e);}newsletter};var Xe=class{constructor(e){this.client=e;}async block(e){return await r.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await r.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await r.get("socket").updateLastSeenPrivacy(e)}async online(e){return await r.get("socket").updateOnlinePrivacy(e)}async picture(e){return await r.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await r.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await r.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await r.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=r.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await r.get("socket").fetchBlocklist()}async getSettings(){return await r.get("socket").fetchPrivacySettings(true)}},Ce=class{constructor(e){this.plient=e;this.privacy=new Xe(e);}privacy};var Bs=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),_s=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),js=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),$s=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number()}).optional(),Ot=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),disableFFmpeg:u.z.boolean().default(false).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:Bs,citation:_s,fakeReply:js,sticker:$s}),zs=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),Us=u.z.object({authType:u.z.literal("qr")}),Lt=u.z.union([zs.extend(Ot.shape),Us.extend(Ot.shape)]),gr=u.z.enum(["connection","messages","calls"]);var wr=u__default.default.object({status:u__default.default.enum(["connecting","open","close","reload","syncing"]),authType:u__default.default.enum(["pairing","qr"]),authTimeout:u__default.default.number().optional(),syncProgress:u__default.default.number().optional(),syncCompleted:u__default.default.boolean().default(false).optional(),qr:u__default.default.string().optional(),code:u__default.default.string().optional()});var Vs=u__default.default.enum(["unknown","android","ios","desktop","web"]),Js=u__default.default.enum(["text","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Bt=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Js,receiverId:u__default.default.string(),receiverName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),senderLid:u__default.default.string(),senderId:u__default.default.string(),senderName:u__default.default.string(),senderDevice:Vs,timestamp:u__default.default.number(),text:u__default.default.string().nullable(),mentions:u__default.default.string().array(),links:u__default.default.string().array(),isBot:u__default.default.boolean(),isFromMe:u__default.default.boolean(),isPrefix:u__default.default.boolean(),isSpam:u__default.default.boolean(),isTagMe:u__default.default.boolean(),isGroup:u__default.default.boolean(),isNewsletter:u__default.default.boolean(),isQuestion:u__default.default.boolean(),isStory:u__default.default.boolean(),isViewOnce:u__default.default.boolean(),isEdited:u__default.default.boolean(),isDeleted:u__default.default.boolean(),isPinned:u__default.default.boolean(),isUnPinned:u__default.default.boolean(),isBroadcast:u__default.default.boolean(),isEphemeral:u__default.default.boolean(),isForwarded:u__default.default.boolean(),citation:u__default.default.record(u__default.default.string(),u__default.default.function({output:u__default.default.promise(u__default.default.boolean())})).nullable(),media:u__default.default.object({buffer:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(Buffer))}),stream:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(qs__default.default))})}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()})}),Sr=Bt.extend({replied:Bt.nullable()});var Ir=u__default.default.object({callId:u__default.default.string(),callerId:u__default.default.string(),callerName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),date:u__default.default.date(),offline:u__default.default.boolean(),status:u__default.default.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u__default.default.boolean(),isGroup:u__default.default.boolean()});var Ae=class{collect(e,t,s){let o=t.max??1/0;if(o<=0){s([]);return}let n=r.collectors.get(e);n&&(clearTimeout(n.timeoutId),n.callback(n.messages),r.collectors.delete(e));let i=setTimeout(()=>{let c=r.collectors.get(e);c&&(c.callback(c.messages),r.collectors.delete(e));},t.timeout);r.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:s,timeoutId:i});}push(e){let t=r.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),r.collectors.delete(e.channelId)),true)}has(e){return r.collectors.has(e)}cancel(e){let t=r.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),r.collectors.delete(e),t.messages):[]}};var Ie=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,r.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),r.spinner.info("Logs Indicator:"),console.log(b(" \u2022","orange")+" Private Chat"),console.log(b(" \u2022","lime")+" Group Chat"),console.log(b(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=h(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),o=b(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),n=b(`${e?.roomName}`,t),i=e?.text?.slice(0,300)||"",c=i?.length>=300?"...":"",l=`${o} \u2192 ${n}
|
|
7
|
-
`;e?.isNewsletter?l+=`${
|
|
8
|
-
`:l+=`${
|
|
9
|
-
`,l+=`${
|
|
10
|
-
`,l+="\u2014",console.log(l);}call(e){if(!
|
|
11
|
-
`;
|
|
12
|
-
`,
|
|
13
|
-
`,
|
|
1
|
+
'use strict';var jt=require('baileys'),Oe=require('fs/promises'),jetdb=require('jetdb'),nanospinner=require('nanospinner'),Be=require('node-cache'),events=require('events'),Dt=require('pino'),F=require('fs'),at=require('gradient-string'),x=require('lodash'),fileType=require('file-type'),K=require('fluent-ffmpeg'),Jt=require('node-webpmux'),os$1=require('os'),Le=require('path'),_e=require('sharp'),Ht=require('figlet'),Qt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),As=require('stream'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var jt__default=/*#__PURE__*/_interopDefault(jt);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var Be__default=/*#__PURE__*/_interopDefault(Be);var Dt__default=/*#__PURE__*/_interopDefault(Dt);var F__namespace=/*#__PURE__*/_interopNamespace(F);var at__default=/*#__PURE__*/_interopDefault(at);var x__default=/*#__PURE__*/_interopDefault(x);var K__default=/*#__PURE__*/_interopDefault(K);var Jt__default=/*#__PURE__*/_interopDefault(Jt);var Le__namespace=/*#__PURE__*/_interopNamespace(Le);var _e__default=/*#__PURE__*/_interopDefault(_e);var Ht__default=/*#__PURE__*/_interopDefault(Ht);var Qt__default=/*#__PURE__*/_interopDefault(Qt);var u__default=/*#__PURE__*/_interopDefault(u);var As__default=/*#__PURE__*/_interopDefault(As);var De=class{data=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return jetdb.createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=nanospinner.createSpinner("",{color:"green"});logger=Dt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Be__default.default({stdTTL:300,useClones:false});collectors=new Map},i=new De;var Xe=async a=>{i.spinner.start(" Initializing auth state...");let e=await Oe.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.spinner.error(` Failed to open credentials
|
|
2
|
+
`),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await Oe.mkdir(a,{recursive:true});let t=jetdb.createJetDB(`${a}/auth/creds.json`,{BufferJSON:jt.BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=jetdb.createJetDB(`${a}/auth/keys.json`,{BufferJSON:jt.BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||jt.initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,k=await n.get(p);s==="app-state-sync-key"&&k&&(k=jt.proto.Message.AppStateSyncKeyData.fromObject(k)),c[l]=k;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let k=s[l][p],v=`${l}:${p}`;k?r.push({key:v,value:k}):c.push(v);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var Lt=new Be__default.default,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Be__default.default,mediaCache:new Be__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Lt.get(t),auth:{creds:e.creds,keys:jt.makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ee=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await F.promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(k=>c.startsWith(k))?r=!0:s[c]=l;r&&(await F.promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},nt=()=>{let a=i.get("socket");return a?.end?a:null};var ot=async a=>{let e=nt();e&&st(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Xe(t),s=et(a,n),r=jt__default.default(s);r.ev.on("creds.update",o),i.set("socket",r);};var y=a=>a,rt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},it=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Oe__default.default.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},I=(a="")=>{if(!a?.length)return null;let e=a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,n)=>[...n].reverse().join("")).replace(/[\uFE00-\uFE0F]/gu,"").replace(/[\u200C\u200D]/gu,"").replace(/[\u2800\u180E]/gu,"").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+/gu," ").replace(/[\p{Cc}\p{Cf}\p{Co}\p{Cn}]/gu,"").trim().replace(/\s+/g," ");return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?at__default.default(e)(a):at__default.default([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return x__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},V=a=>{try{return JSON.stringify(a)}catch{let e=x__default.default.attempt(()=>JSON.stringify(Fe(a)||"{}"));return x__default.default.isError(e)?"{}":e}},Tn=(a="")=>x__default.default.shuffle(a).join(""),J=(a="",e="")=>a?x__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,ct=(a="")=>a?x__default.default.castArray(a.match(jt.URL_REGEX)||[]):[],Cn=a=>a[Math.floor(Math.random()*a.length)],B=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,k,v]=p;r=r?.[k]?.[parseInt(v,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},An=(a,e)=>{let t=x__default.default.castArray(e),n=(r,c)=>x__default.default.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>x__default.default.some(c,(l,p)=>r?.[p]===l),s=r=>x__default.default.isArray(r)?x__default.default.find(r,s)??r:x__default.default.isObject(r)?x__default.default.find(t,p=>n(r,p))||x__default.default.find(t,p=>o(r,p))?r:x__default.default.find(x__default.default.values(r),s)??r:null;return s(a)},In=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var $=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},lt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return x__default.default.toArray(e)},Ne=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return x__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Bn=a=>x__default.default.isEmpty(a)?[]:x__default.default.map([...a],e=>`${e}@s.whatsapp.net`),pt=a=>x__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),te=a=>{if(!a)return {leaf:void 0,chain:[]};let e=jt.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=jt.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},P=a=>Number(a?.split("@")[0]);var ut=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;K__default.default.setFfmpegPath(e.path),K__default.default.setFfprobePath(t.path);}catch{}},h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},b=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Le__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Oe__default.default.unlink(t)));}static async safeReadFile(e){try{return await Oe__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Oe__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},R=class{static async toBuffer(e){if(x__default.default.isBuffer(e))return e;if(x__default.default.isArrayBuffer(e))return Buffer.from(e);if(x__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},_=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},H=class{static async process(e){return new Promise((t,n)=>{let o=K__default.default(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{K__default.default.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},se=class{static async getWaAudio(e,t="opus"){let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);_.validate(o,h.MIME.AUDIO);let s=b.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=b.createTempPath("audio_out",r);await b.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await H.process({input:s,output:c,options:p,onEnd:async()=>{l=await b.safeReadFile(c);},onError:async()=>{await b.cleanup([s,c]);}}),await b.cleanup([s,c]),l}catch(p){throw await b.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},W=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);_.validate(n,h.MIME.VIDEO);let o=b.createTempPath("video","mp4"),s=b.createTempPath("thumb","jpg");await b.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{K__default.default(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:Le__namespace.default.basename(s),folder:Le__namespace.default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await b.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await b.cleanup([o,s]),r}catch(c){throw await b.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return H.getDuration(e)}},ne=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===h.MIME.GIF?_e__default.default(e,{animated:false}):_e__default.default(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=_e__default.default(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=h.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Z=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!_.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?W.getThumbnail(e):ne.getThumbnail(t)}},oe=class{static createExifMetadata(e){let t={"sticker-pack-id":$(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=b.createTempPath("sticker_in",o),r=b.createTempPath("sticker_out","webp");await b.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let v=await W.getDuration(s);c=y(Math.min(v,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let l=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),k;try{return await H.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await b.safeReadFile(r);},onError:async()=>{await b.cleanup([s,r]);}}),await b.cleanup([s,r]),k}catch(v){throw await b.cleanup([s,r]),new Error(`Animated sticker processing failed: ${v.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=_.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await ne.resizeForSticker(n,s,c),p=this.createExifMetadata(t),k=new Jt__default.default.Image;await k.load(l),k.exif=p;let v=await k.save(null);return Buffer.isBuffer(v)?v:Buffer.from(v)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},re=class{static async create(e){try{let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:$(Date.now().toString()),jpegThumbnail:await Z.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ie=R.toBuffer.bind(R),mt=se.getWaAudio.bind(se),Gn=W.getThumbnail.bind(W),Kn=W.getDuration.bind(W),je=Z.getThumbnail.bind(Z),dt=oe.create.bind(oe),ft=re.create.bind(re);var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jt.jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jt.jidNormalizedUser(e.chatId),n.roomName=I(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ce={version:"2.1.0",author:"zaadevofc"};var yt=a=>{Qt__default.default.generate(a,{small:true},e=>{console.log(e);});},ht=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await rt(),e=ce.version===a;i.spinner.stop();let t="Zaileys",n=`
|
|
3
|
+
by ${ce.author} \xB7 v${ce.version}`,o=`${e?"Already using latest version!":`Update available! (v${a})`}
|
|
4
|
+
`,s=e?"lime":"orange",r=await Ht__default.default.text(t),c=at.cristal(r);console.log(c),console.log(M(n,"dimgray")),console.log(M(o,s));};var ue=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await jt.delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await jt.delay(3e3),await it(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await jt.delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${at.cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+at.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${at.cristal(p)}`),yt(l),t.qr=l;return}if(r==="close"){let p=y(c?.error)?.output?.statusCode,k=c?.error?.message||"",v=typeof p=="number"&&p!==jt.DisconnectReason.loggedOut,N=p===515||k.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${k}`),N){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await ee(this.client.options.session),await jt.delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
|
|
5
|
+
`);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}v&&await n();}if(r==="open")if(e.user?.id){let p=jt.jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${at.cristal(k||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var kt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},ze={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var me=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var fe=class{constructor(e){this.client=e;this.limiter=new me(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");e.ev.on("messages.upsert",async({messages:t,type:n})=>{if(n==="notify")for(let o of t){let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=te(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=te(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=kt[c],!s.chatType)return;s.receiverId=jt.jidNormalizedUser(o?.user?.id||""),s.receiverName=I(o?.user?.name||o?.user?.verifiedName),s.roomId=jt.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,k=l?.type===1,v=l?.type===2,N=s.roomId?.includes("@newsletter"),Ie=!!e?.message?.questionMessage,j=e?.key?.fromMe||false;if(j&&this.client.options.ignoreMe&&t!=="replied")return;let Re=l?.key?.id;if(p||k||v){let T=await this.client.db("messages").query(s.roomId).where("key.id","=",Re).first();if(!T)return;e=T,r=te(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=B([e?.key],["participant","remoteJid","remoteJidAlt"])||null,s.senderId=jt.jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt),s.senderName=I(e?.pushName||e?.verifiedBizName),s.senderDevice=jt.getDevice(s.chatId),s.channelId=$([s.roomId,s.senderId]),s.uniqueId=$([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,N){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=y(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(j&&(s.senderLid=jt.jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Fe(l?.paramsJson)?.id),s.text=I(s.text),s.mentions=lt(s.text),s.links=ct(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=j,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,x__default.default.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=N,s.isQuestion=Ie,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!J(V(r),"editedMessage"),s.isDeleted=p,s.isPinned=k,s.isUnPinned=v,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!J(V(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!J(V(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let U of Object.keys(T)){let Ee=T[U];s.citation[U]=async()=>{let Pe=await Ee(),We=[P(s.roomId),P(s.senderLid),P(s.senderId)];return !!x__default.default.intersection(We,Pe).length};}}s.chatType!=="text"&&(s.media={...pt(l),buffer:()=>jt.downloadMediaMessage(e,"buffer",{}),stream:()=>jt.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let O=l?.contextInfo?.quotedMessage,X=J(V(O),"viewOnce"),z=l?.contextInfo?.stanzaId;if(O&&this.maxReplies){this.maxReplies--;let T=await this.client.getMessageByChatId(z,O);T&&(s.replied=T,X&&(s.replied.isViewOnce=true)),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ge=class{constructor(e){this.client=e;this.connection=new ue(e),this.messages=new fe(e),this.calls=new ae(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var Q=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ss=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),ns=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),os=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),rs=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),is=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),as=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ss,ns,os,rs,is]).array()}),cs=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),Mt=u__default.default.union([cs,as]);var ls=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),ps=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),us=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),Ue=u.z.enum(["default","rounded","circle","oval"]).default("default"),ms=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number(),shape:Ue.optional()}).optional(),vt=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),disableFFmpeg:u.z.boolean().default(false).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:ls,citation:ps,fakeReply:us,sticker:ms}),ds=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),fs=u.z.object({authType:u.z.literal("qr")}),xt=u.z.union([ds.extend(vt.shape),fs.extend(vt.shape)]),or=u.z.enum(["connection","messages","calls"]);var Y=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),St=u__default.default.object({text:u__default.default.string()}).passthrough(),gs=u__default.default.object({image:Y,caption:u__default.default.string().optional()}).passthrough(),ys=u__default.default.object({audio:Y,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),hs=u__default.default.object({video:Y,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),ks=u__default.default.object({sticker:Y,shape:Ue.optional(),caption:u__default.default.string().optional()}).passthrough(),ws=u__default.default.object({document:Y,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),bs=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),Ms=u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()}),vs=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),Tt=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:Mt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var xs=u__default.default.union([St,gs,ys,hs,ks,ws,bs,Ms,vs]),Ct=u__default.default.string().or(u__default.default.intersection(xs,Tt.omit({buttons:true}))),At=u__default.default.intersection(St,Tt.omit({banner:true}));var ye=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=y(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=jt.generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:jt.generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!jt.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var he=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Q(At,t):t=Q(Ct,t));let s=i.get("socket"),r={},c={},l=x__default.default.isString(t),p=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,v=this.client.options?.autoPresence,N=x__default.default.has(t,"replied"),Ie=x__default.default.has(t,"banner"),j=x__default.default.has(t,"isViewOnce"),Re=n=="button",O=x__default.default.has(t,"image"),X=x__default.default.has(t,"video"),z=x__default.default.has(t,"audio"),T=x__default.default.has(t,"sticker"),U=x__default.default.has(t,"document"),Ee=x__default.default.has(t,"location"),Pe=x__default.default.has(t,"contacts"),We=x__default.default.has(t,"poll"),He=O||X||z||T||U,q=l?t:B([t],["text","caption"]);if(v&&(z?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),k&&(r={...r,mentions:Ne(q),contextInfo:{mentionedJid:Ne(q)}}),N&&(c.quoted=y(t).replied,p&&(c.quoted.key.remoteJid=ze[p],c.quoted.key.participant=ze[p])),Ie&&(r={...r,contextInfo:{externalAdReply:y(t).banner}},r.contextInfo.externalAdReply.mediaType=1),j&&(r={...r,viewOnce:y(t)?.isViewOnce}),q&&(r={...r,text:q,caption:q},He&&delete y(r).text),He){let w=B([t],["image","video","audio","sticker","document"]),E=x__default.default.isString(w)?{url:w}:w;if(O&&(r={...r,image:E,jpegThumbnail:await je(w)}),X){let A=y(t)?.ptv;r={...r,video:E,ptv:A,jpegThumbnail:await je(w)};}if(z){let A=y(t)?.ptt;r={...r,audio:await mt(w),ptt:A,mimetype:A?"audio/ogg; codecs=opus":"audio/mpeg"};}if(T){let A=y(t)?.shape;r={...r,sticker:await dt(w,{...this.client.options?.sticker,shape:A})};}if(U){let A=await ft(w);r={...r,fileName:y(t).fileName,...A};}}if(Ee){let w=y(t).location;r={...r,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(Pe){let w=y(t)?.contacts,Ze=w?.contacts.map(E=>{let A=["BEGIN:VCARD","VERSION:3.0",`FN:${E.fullname}`,`ORG:${E.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${E.phoneNumber}:${E.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
+
`);return {displayName:E.fullname,vcard:A}});r={...r,contacts:{displayName:w?.title,contacts:Ze}};}if(We){let w=y(t)?.poll;r={...r,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...y(r).contextInfo,isForwarded:true,forwardingScore:y(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Re?await new ye().send(e,t,c):await s.sendMessage(e,y(r),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return x__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var qe=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,y(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,y(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},ke=class{constructor(e){this.mlient=e;this.community=new qe(e);}community};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ie(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){return await i.get("socket").groupMetadata(e)}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},we=class{constructor(e){this.glient=e;this.group=new Ve(e);}group};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ie(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},be=class{constructor(e){this.nlient=e;this.newsletter=new Je(e);}newsletter};var Ge=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},Me=class{constructor(e){this.plient=e;this.privacy=new Ge(e);}privacy};var Jr=u__default.default.object({status:u__default.default.enum(["connecting","open","close","reload","syncing"]),authType:u__default.default.enum(["pairing","qr"]),authTimeout:u__default.default.number().optional(),syncProgress:u__default.default.number().optional(),syncCompleted:u__default.default.boolean().default(false).optional(),qr:u__default.default.string().optional(),code:u__default.default.string().optional()});var Is=u__default.default.enum(["unknown","android","ios","desktop","web"]),Rs=u__default.default.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),It=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Rs,receiverId:u__default.default.string(),receiverName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),senderLid:u__default.default.string(),senderId:u__default.default.string(),senderName:u__default.default.string(),senderDevice:Is,timestamp:u__default.default.number(),text:u__default.default.string().nullable(),mentions:u__default.default.string().array(),links:u__default.default.string().array(),isBot:u__default.default.boolean(),isFromMe:u__default.default.boolean(),isPrefix:u__default.default.boolean(),isSpam:u__default.default.boolean(),isTagMe:u__default.default.boolean(),isStatusMention:u__default.default.boolean(),isGroupStatusMention:u__default.default.boolean(),isHideTags:u__default.default.boolean(),isGroup:u__default.default.boolean(),isNewsletter:u__default.default.boolean(),isQuestion:u__default.default.boolean(),isStory:u__default.default.boolean(),isViewOnce:u__default.default.boolean(),isEdited:u__default.default.boolean(),isDeleted:u__default.default.boolean(),isPinned:u__default.default.boolean(),isUnPinned:u__default.default.boolean(),isBroadcast:u__default.default.boolean(),isEphemeral:u__default.default.boolean(),isForwarded:u__default.default.boolean(),citation:u__default.default.record(u__default.default.string(),u__default.default.function({output:u__default.default.promise(u__default.default.boolean())})).nullable(),media:u__default.default.object({buffer:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(Buffer))}),stream:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(As__default.default))})}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()})}),Qr=It.extend({replied:It.nullable()});var ti=u__default.default.object({callId:u__default.default.string(),callerId:u__default.default.string(),callerName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),date:u__default.default.date(),offline:u__default.default.boolean(),status:u__default.default.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u__default.default.boolean(),isGroup:u__default.default.boolean()});var ve=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Es={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},xe=class{constructor(e,t={}){this.client=e;this.options={...Es,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),i.spinner.success(" Health manager monitoring started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await ee(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};var Se=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,i.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),i.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=y(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=M(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
|
|
7
|
+
`;e?.isNewsletter?l+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${P(e?.roomId)})`,t)}
|
|
8
|
+
`:l+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${P(e?.senderId)})`,t)}
|
|
9
|
+
`,l+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
|
|
10
|
+
`,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=y(this.getRoomColor(e)),n=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=M(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
|
|
11
|
+
`;s+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${P(e?.callerId)})`,t)}
|
|
12
|
+
`,s+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
|
|
13
|
+
`,s+="\u2014",console.log(s);}};var Te=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ce=class{plugins=[];pluginsDir;constructor(e=Le__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!F__namespace.existsSync(e))return t;let n=F__namespace.readdirSync(e);for(let o of n){let s=Le__namespace.join(e,o);F__namespace.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!F__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(url.pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Ti=(a,e)=>({handler:a,config:e});var Ae=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Rt=class{constructor(e){this.options=e;this.options=Q(xt,e);let t=new Ae().classInjection(this,[new he(this),new we(this),new Me(this),new be(this),new ke(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new ve;middleware=new Te;plugins=new Ce;async initialize(e){await ht(),await ut(this.options.disableFFmpeg),await ot(this),await this.plugins.load(),this.listener=new ge(e||this),this.logs=new Se(this),this.health=new xe(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getMessageByChatId(e,t){let n=await this.db("messages").all();for(let[o]of n){let s=await this.db("messages").query(o).where("key.id","=",e).first();if(s)return s={...s,message:t},await this.listener.messages.parse(s)}return null}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;return n&&(o=(await t.groupMetadata(e))?.subject||null),I(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=B(t,["message.protocolMessage.memberLabel"]);return I(n?.label)||null}};
|
|
14
14
|
/*
|
|
15
15
|
* Copyright (c) 2025 zaadevofc.
|
|
16
16
|
* All rights reserved.
|
|
@@ -18,7 +18,7 @@ by ${de.author} \xB7 v${de.version}`,o=`${e?"Already using latest version!":`Upd
|
|
|
18
18
|
* See LICENSE file for details.
|
|
19
19
|
|
|
20
20
|
* Author: zaadevofc
|
|
21
|
-
* Last build time: 12/
|
|
21
|
+
* Last build time: 12/18/2025 3:30:20 PM
|
|
22
22
|
*
|
|
23
23
|
* Repository: git+https://github.com/zeative/zaileys.git
|
|
24
|
-
*/exports.AudioProcessor=
|
|
24
|
+
*/Object.defineProperty(exports,"JetDB",{enumerable:true,get:function(){return jetdb.JetDB}});Object.defineProperty(exports,"createJetDB",{enumerable:true,get:function(){return jetdb.createJetDB}});exports.AudioProcessor=se;exports.BaseMessagesType=It;exports.ButtonInteractiveCallType=rs;exports.ButtonInteractiveCopyType=os;exports.ButtonInteractiveReplyType=ss;exports.ButtonInteractiveSingleSelectType=is;exports.ButtonInteractiveType=as;exports.ButtonInteractiveUrlType=ns;exports.ButtonSimpleType=cs;exports.ButtonType=Mt;exports.CitationType=ps;exports.Client=Rt;exports.ClientAuthPairingType=ds;exports.ClientAuthQRType=fs;exports.ClientBaseType=vt;exports.ClientOptionsType=xt;exports.DEVICE_ENUM_TYPES=Is;exports.DocumentProcessor=re;exports.EventEnumType=or;exports.FakeReplyType=us;exports.ImageProcessor=ne;exports.LimiterType=ls;exports.ListenerCallsType=ti;exports.ListenerConnectionType=Jr;exports.ListenerMessagesType=Qr;exports.MESSAGE_ENUM_TYPES=Rs;exports.MediaProcessor=Z;exports.Plugins=Ce;exports.StickerMetadataType=ms;exports.StickerProcessor=oe;exports.StickerShapeType=Ue;exports.VideoProcessor=W;exports.cleanJid=P;exports.cleanMediaObject=pt;exports.cleanupSocket=st;exports.configureFFmpeg=ut;exports.definePlugins=Ti;exports.extractJids=Ne;exports.extractUrls=ct;exports.findGlobalWord=J;exports.findNestedByKeys=An;exports.generateId=$;exports.getDeepContent=te;exports.getExistingSocket=nt;exports.getLatestLibVersion=rt;exports.getMediaThumbnail=je;exports.getUsersMentions=lt;exports.getVideoDuration=Kn;exports.getVideoThumbnail=Gn;exports.getWaAudio=mt;exports.getWaDocument=ft;exports.getWaSticker=dt;exports.ignoreLint=y;exports.logColor=M;exports.modifyFn=In;exports.normalizeText=I;exports.numbersToJids=Bn;exports.pickKeysFromArray=B;exports.randomize=Cn;exports.registerAuthCreds=ot;exports.removeAuthCreds=it;exports.repairSessionKeys=ee;exports.shuffleString=Tn;exports.toBuffer=ie;exports.toJson=Fe;exports.toString=V;exports.useAuthState=Xe;
|