zaileys 2.1.1 → 2.1.2
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 +1 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
package/README.MD
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
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=`
|
|
2
|
+
`),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await Oe.mkdir(a,{recursive:true});let t=jetdb.createJetDB(`${a}/auth/creds.json`,{BufferJSON:jt.BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=jetdb.createJetDB(`${a}/auth/keys.json`,{BufferJSON:jt.BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||jt.initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,k=await n.get(p);s==="app-state-sync-key"&&k&&(k=jt.proto.Message.AppStateSyncKeyData.fromObject(k)),c[l]=k;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let k=s[l][p],v=`${l}:${p}`;k?r.push({key:v,value:k}):c.push(v);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var Lt=new Be__default.default,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Be__default.default,mediaCache:new Be__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Lt.get(t),auth:{creds:e.creds,keys:jt.makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ee=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await F.promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(k=>c.startsWith(k))?r=!0:s[c]=l;r&&(await F.promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},nt=()=>{let a=i.get("socket");return a?.end?a:null};var ot=async a=>{let e=nt();e&&st(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Xe(t),s=et(a,n),r=jt__default.default(s);r.ev.on("creds.update",o),i.set("socket",r);};var y=a=>a,rt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},it=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Oe__default.default.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},I=(a="")=>{if(!a?.length)return null;let e=a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,n)=>[...n].reverse().join("")).replace(/[\uFE00-\uFE0F]/gu,"").replace(/[\u200C\u200D]/gu,"").replace(/[\u2800\u180E]/gu,"").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+/gu," ").replace(/[\p{Cc}\p{Cf}\p{Co}\p{Cn}]/gu,"").trim().replace(/\s+/g," ");return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?at__default.default(e)(a):at__default.default([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return x__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},V=a=>{try{return JSON.stringify(a)}catch{let e=x__default.default.attempt(()=>JSON.stringify(Fe(a)||"{}"));return x__default.default.isError(e)?"{}":e}},Tn=(a="")=>x__default.default.shuffle(a).join(""),J=(a="",e="")=>a?x__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,ct=(a="")=>a?x__default.default.castArray(a.match(jt.URL_REGEX)||[]):[],Cn=a=>a[Math.floor(Math.random()*a.length)],B=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,k,v]=p;r=r?.[k]?.[parseInt(v,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},An=(a,e)=>{let t=x__default.default.castArray(e),n=(r,c)=>x__default.default.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>x__default.default.some(c,(l,p)=>r?.[p]===l),s=r=>x__default.default.isArray(r)?x__default.default.find(r,s)??r:x__default.default.isObject(r)?x__default.default.find(t,p=>n(r,p))||x__default.default.find(t,p=>o(r,p))?r:x__default.default.find(x__default.default.values(r),s)??r:null;return s(a)},In=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var $=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},lt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return x__default.default.toArray(e)},Ne=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return x__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Bn=a=>x__default.default.isEmpty(a)?[]:x__default.default.map([...a],e=>`${e}@s.whatsapp.net`),pt=a=>x__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),te=a=>{if(!a)return {leaf:void 0,chain:[]};let e=jt.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=jt.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},P=a=>Number(a?.split("@")[0]);var ut=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;K__default.default.setFfmpegPath(e.path),K__default.default.setFfprobePath(t.path);}catch{}},h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},b=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Le__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Oe__default.default.unlink(t)));}static async safeReadFile(e){try{return await Oe__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Oe__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},R=class{static async toBuffer(e){if(x__default.default.isBuffer(e))return e;if(x__default.default.isArrayBuffer(e))return Buffer.from(e);if(x__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},_=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},H=class{static async process(e){return new Promise((t,n)=>{let o=K__default.default(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{K__default.default.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},se=class{static async getWaAudio(e,t="opus"){let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);_.validate(o,h.MIME.AUDIO);let s=b.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=b.createTempPath("audio_out",r);await b.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await H.process({input:s,output:c,options:p,onEnd:async()=>{l=await b.safeReadFile(c);},onError:async()=>{await b.cleanup([s,c]);}}),await b.cleanup([s,c]),l}catch(p){throw await b.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},W=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);_.validate(n,h.MIME.VIDEO);let o=b.createTempPath("video","mp4"),s=b.createTempPath("thumb","jpg");await b.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{K__default.default(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:Le__namespace.default.basename(s),folder:Le__namespace.default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await b.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await b.cleanup([o,s]),r}catch(c){throw await b.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return H.getDuration(e)}},ne=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===h.MIME.GIF?_e__default.default(e,{animated:false}):_e__default.default(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=_e__default.default(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=h.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Z=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!_.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?W.getThumbnail(e):ne.getThumbnail(t)}},oe=class{static createExifMetadata(e){let t={"sticker-pack-id":$(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=b.createTempPath("sticker_in",o),r=b.createTempPath("sticker_out","webp");await b.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let v=await W.getDuration(s);c=y(Math.min(v,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let l=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),k;try{return await H.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await b.safeReadFile(r);},onError:async()=>{await b.cleanup([s,r]);}}),await b.cleanup([s,r]),k}catch(v){throw await b.cleanup([s,r]),new Error(`Animated sticker processing failed: ${v.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await R.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=_.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await ne.resizeForSticker(n,s,c),p=this.createExifMetadata(t),k=new Jt__default.default.Image;await k.load(l),k.exif=p;let v=await k.save(null);return Buffer.isBuffer(v)?v:Buffer.from(v)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},re=class{static async create(e){try{let t=await R.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:$(Date.now().toString()),jpegThumbnail:await Z.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ie=R.toBuffer.bind(R),mt=se.getWaAudio.bind(se),Gn=W.getThumbnail.bind(W),Kn=W.getDuration.bind(W),je=Z.getThumbnail.bind(Z),dt=oe.create.bind(oe),ft=re.create.bind(re);var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jt.jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jt.jidNormalizedUser(e.chatId),n.roomName=I(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ce={version:"2.1.1",author:"zaadevofc"};var yt=a=>{Qt__default.default.generate(a,{small:true},e=>{console.log(e);});},ht=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await rt(),e=ce.version===a;i.spinner.stop();let t="Zaileys",n=`
|
|
3
3
|
by ${ce.author} \xB7 v${ce.version}`,o=`${e?"Already using latest version!":`Update available! (v${a})`}
|
|
4
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
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(`
|
|
@@ -18,7 +18,7 @@ by ${ce.author} \xB7 v${ce.version}`,o=`${e?"Already using latest version!":`Upd
|
|
|
18
18
|
* See LICENSE file for details.
|
|
19
19
|
|
|
20
20
|
* Author: zaadevofc
|
|
21
|
-
* Last build time: 12/18/2025 3:
|
|
21
|
+
* Last build time: 12/18/2025 3:31:39 PM
|
|
22
22
|
*
|
|
23
23
|
* Repository: git+https://github.com/zeative/zaileys.git
|
|
24
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;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import zt,{BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,URL_REGEX,extractMessageContent,getContentType,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import $e,{stat,mkdir}from'fs/promises';import {createJetDB}from'jetdb';export{JetDB,createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import Fe from'node-cache';import {EventEmitter}from'events';import Bt from'pino';import*as N from'fs';import {promises}from'fs';import ct,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import H from'fluent-ffmpeg';import Gt from'node-webpmux';import {tmpdir}from'os';import*as je from'path';import je__default from'path';import Le from'sharp';import Zt from'figlet';import Yt from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import Is from'stream';import {pathToFileURL}from'url';var Be=class{data=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=createSpinner("",{color:"green"});logger=Bt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Fe({stdTTL:300,useClones:false});collectors=new Map},i=new Be;var et=async a=>{i.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.spinner.error(` Failed to open credentials
|
|
2
|
-
`),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await mkdir(a,{recursive:true});let t=createJetDB(`${a}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=createJetDB(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,w=await n.get(p);s==="app-state-sync-key"&&w&&(w=proto.Message.AppStateSyncKeyData.fromObject(w)),c[l]=w;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let w=s[l][p],x=`${l}:${p}`;w?r.push({key:x,value:w}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var jt=new Fe,tt=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Fe,mediaCache:new Fe({stdTTL:60}),cachedGroupMetadata:async t=>jt.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var nt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},te=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(w=>c.startsWith(w))?r=!0:s[c]=l;r&&(await promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},ot=()=>{let a=i.get("socket");return a?.end?a:null};var rt=async a=>{let e=ot();e&&nt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await et(t),s=tt(a,n),r=zt(s);r.ev.on("creds.update",o),i.set("socket",r);};var h=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},at=async a=>{try{let e=`.session/${a}/auth/creds.json`;await $e.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},R=(a="")=>{if(!a?.length)return null;let e=a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,n)=>[...n].reverse().join("")).replace(/[\uFE00-\uFE0F]/gu,"").replace(/[\u200C\u200D]/gu,"").replace(/[\u2800\u180E]/gu,"").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+/gu," ").replace(/[\p{Cc}\p{Cf}\p{Co}\p{Cn}]/gu,"").trim().replace(/\s+/g," ");return e.length?e:null};var v=(a,e="lime")=>Array.isArray(e)?ct(e)(a):ct([e,e])(a),Ne=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},J=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Ne(a)||"{}"));return S.isError(e)?"{}":e}},Cn=(a="")=>S.shuffle(a).join(""),G=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],An=a=>a[Math.floor(Math.random()*a.length)],F=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,w,x]=p;r=r?.[w]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},In=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},Rn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var _=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},pt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},Oe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Fn=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),ut=a=>S.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),se=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;H.setFfmpegPath(e.path),H.setFfprobePath(t.path);}catch{}},k={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>$e.unlink(t)));}static async safeReadFile(e){try{return await $e.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await $e.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},E=class{static async toBuffer(e){if(S.isBuffer(e))return e;if(S.isArrayBuffer(e))return Buffer.from(e);if(S.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},L=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(k.MIME.IMAGE)||e.startsWith(k.MIME.VIDEO)}static isAnimated(e){return e===k.MIME.GIF||e.startsWith(k.MIME.VIDEO)}},Z=class{static async process(e){return new Promise((t,n)=>{let o=H(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{H.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ne=class{static async getWaAudio(e,t="opus"){let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);L.validate(o,k.MIME.AUDIO);let s=M.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",r);await M.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Z.process({input:s,output:c,options:p,onEnd:async()=>{l=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([s,c]);}}),await M.cleanup([s,c]),l}catch(p){throw await M.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},D=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);L.validate(n,k.MIME.VIDEO);let o=M.createTempPath("video","mp4"),s=M.createTempPath("thumb","jpg");await M.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{H(o).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:je__default.basename(s),folder:je__default.dirname(s),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await M.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await M.cleanup([o,s]),r}catch(c){throw await M.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Z.getDuration(e)}},oe=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===k.MIME.GIF?Le(e,{animated:false}):Le(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=Le(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=k.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Q=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!L.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(k.MIME.VIDEO)?D.getThumbnail(e):oe.getThumbnail(t)}},re=class{static createExifMetadata(e){let t={"sticker-pack-id":_(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=M.createTempPath("sticker_in",o),r=M.createTempPath("sticker_out","webp");await M.safeWriteFile(s,e);let c=k.STICKER.MAX_DURATION;try{let x=await D.getDuration(s);c=h(Math.min(x,k.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",k.STICKER.MAX_DURATION);}let l=`scale=${k.STICKER.SIZE}:${k.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${k.STICKER.SIZE}:${k.STICKER.SIZE},fps=${k.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),w;try{return await Z.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${k.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{w=await M.safeReadFile(r);},onError:async()=>{await M.cleanup([s,r]);}}),await M.cleanup([s,r]),w}catch(x){throw await M.cleanup([s,r]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===k.MIME.GIF?"gif":e.startsWith(k.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||k.STICKER.DEFAULT_QUALITY,r=L.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await oe.resizeForSticker(n,s,c),p=this.createExifMetadata(t),w=new Gt.Image;await w.load(l),w.exif=p;let x=await w.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},ie=class{static async create(e){try{let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:_(Date.now().toString()),jpegThumbnail:await Q.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ae=E.toBuffer.bind(E),dt=ne.getWaAudio.bind(ne),Kn=D.getThumbnail.bind(D),Hn=D.getDuration.bind(D),ze=Q.getThumbnail.bind(Q),ft=re.create.bind(re),gt=ie.create.bind(ie);var ce=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jidNormalizedUser(e.chatId),n.roomName=R(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var le={version:"2.1.0",author:"zaadevofc"};var ht=a=>{Yt.generate(a,{small:true},e=>{console.log(e);});},kt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await it(),e=le.version===a;i.spinner.stop();let t="Zaileys",n=`
|
|
2
|
+
`),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await mkdir(a,{recursive:true});let t=createJetDB(`${a}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=createJetDB(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,w=await n.get(p);s==="app-state-sync-key"&&w&&(w=proto.Message.AppStateSyncKeyData.fromObject(w)),c[l]=w;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let w=s[l][p],x=`${l}:${p}`;w?r.push({key:x,value:w}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var jt=new Fe,tt=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Fe,mediaCache:new Fe({stdTTL:60}),cachedGroupMetadata:async t=>jt.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var nt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},te=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(w=>c.startsWith(w))?r=!0:s[c]=l;r&&(await promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},ot=()=>{let a=i.get("socket");return a?.end?a:null};var rt=async a=>{let e=ot();e&&nt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await et(t),s=tt(a,n),r=zt(s);r.ev.on("creds.update",o),i.set("socket",r);};var h=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},at=async a=>{try{let e=`.session/${a}/auth/creds.json`;await $e.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},R=(a="")=>{if(!a?.length)return null;let e=a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,n)=>[...n].reverse().join("")).replace(/[\uFE00-\uFE0F]/gu,"").replace(/[\u200C\u200D]/gu,"").replace(/[\u2800\u180E]/gu,"").replace(/[\s\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]+/gu," ").replace(/[\p{Cc}\p{Cf}\p{Co}\p{Cn}]/gu,"").trim().replace(/\s+/g," ");return e.length?e:null};var v=(a,e="lime")=>Array.isArray(e)?ct(e)(a):ct([e,e])(a),Ne=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},J=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Ne(a)||"{}"));return S.isError(e)?"{}":e}},Cn=(a="")=>S.shuffle(a).join(""),G=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],An=a=>a[Math.floor(Math.random()*a.length)],F=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,w,x]=p;r=r?.[w]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},In=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},Rn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var _=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},pt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},Oe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Fn=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),ut=a=>S.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),se=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;H.setFfmpegPath(e.path),H.setFfprobePath(t.path);}catch{}},k={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>$e.unlink(t)));}static async safeReadFile(e){try{return await $e.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await $e.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},E=class{static async toBuffer(e){if(S.isBuffer(e))return e;if(S.isArrayBuffer(e))return Buffer.from(e);if(S.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},L=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(k.MIME.IMAGE)||e.startsWith(k.MIME.VIDEO)}static isAnimated(e){return e===k.MIME.GIF||e.startsWith(k.MIME.VIDEO)}},Z=class{static async process(e){return new Promise((t,n)=>{let o=H(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{H.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ne=class{static async getWaAudio(e,t="opus"){let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);L.validate(o,k.MIME.AUDIO);let s=M.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",r);await M.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Z.process({input:s,output:c,options:p,onEnd:async()=>{l=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([s,c]);}}),await M.cleanup([s,c]),l}catch(p){throw await M.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},D=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);L.validate(n,k.MIME.VIDEO);let o=M.createTempPath("video","mp4"),s=M.createTempPath("thumb","jpg");await M.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{H(o).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:je__default.basename(s),folder:je__default.dirname(s),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await M.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await M.cleanup([o,s]),r}catch(c){throw await M.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Z.getDuration(e)}},oe=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===k.MIME.GIF?Le(e,{animated:false}):Le(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=Le(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=k.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}},Q=class{static async getThumbnail(e){let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!L.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(k.MIME.VIDEO)?D.getThumbnail(e):oe.getThumbnail(t)}},re=class{static createExifMetadata(e){let t={"sticker-pack-id":_(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=M.createTempPath("sticker_in",o),r=M.createTempPath("sticker_out","webp");await M.safeWriteFile(s,e);let c=k.STICKER.MAX_DURATION;try{let x=await D.getDuration(s);c=h(Math.min(x,k.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",k.STICKER.MAX_DURATION);}let l=`scale=${k.STICKER.SIZE}:${k.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${k.STICKER.SIZE}:${k.STICKER.SIZE},fps=${k.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),w;try{return await Z.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${k.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{w=await M.safeReadFile(r);},onError:async()=>{await M.cleanup([s,r]);}}),await M.cleanup([s,r]),w}catch(x){throw await M.cleanup([s,r]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===k.MIME.GIF?"gif":e.startsWith(k.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await E.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||k.STICKER.DEFAULT_QUALITY,r=L.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await oe.resizeForSticker(n,s,c),p=this.createExifMetadata(t),w=new Gt.Image;await w.load(l),w.exif=p;let x=await w.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},ie=class{static async create(e){try{let t=await E.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:_(Date.now().toString()),jpegThumbnail:await Q.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ae=E.toBuffer.bind(E),dt=ne.getWaAudio.bind(ne),Kn=D.getThumbnail.bind(D),Hn=D.getDuration.bind(D),ze=Q.getThumbnail.bind(Q),ft=re.create.bind(re),gt=ie.create.bind(ie);var ce=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jidNormalizedUser(e.chatId),n.roomName=R(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var le={version:"2.1.1",author:"zaadevofc"};var ht=a=>{Yt.generate(a,{small:true},e=>{console.log(e);});},kt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a=await it(),e=le.version===a;i.spinner.stop();let t="Zaileys",n=`
|
|
3
3
|
by ${le.author} \xB7 v${le.version}`,o=`${e?"Already using latest version!":`Update available! (v${a})`}
|
|
4
4
|
`,s=e?"lime":"orange",r=await Zt.text(t),c=cristal(r);console.log(c),console.log(v(n,"dimgray")),console.log(v(o,s));};var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await at(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${cristal(p)}`),ht(l),t.qr=l;return}if(r==="close"){let p=h(c?.error)?.output?.statusCode,w=c?.error?.message||"",x=typeof p=="number"&&p!==DisconnectReason.loggedOut,O=p===515||w.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${w}`),O){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await te(this.client.options.session),await delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
|
|
5
5
|
`);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}x&&await n();}if(r==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],w=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${cristal(w||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var wt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ue={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var de=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var ge=class{constructor(e){this.client=e;this.limiter=new de(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");e.ev.on("messages.upsert",async({messages:t,type:n})=>{if(n==="notify")for(let o of t){let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=se(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=se(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=wt[c],!s.chatType)return;s.receiverId=jidNormalizedUser(o?.user?.id||""),s.receiverName=R(o?.user?.name||o?.user?.verifiedName),s.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,w=l?.type===1,x=l?.type===2,O=s.roomId?.includes("@newsletter"),Re=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ee=l?.key?.id;if(p||w||x){let C=await this.client.db("messages").query(s.roomId).where("key.id","=",Ee).first();if(!C)return;e=C,r=se(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=F([e?.key],["participant","remoteJid","remoteJidAlt"])||null,s.senderId=jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt),s.senderName=R(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId),s.channelId=_([s.roomId,s.senderId]),s.uniqueId=_([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,O){let C=await o.newsletterMetadata("jid",s.roomId);s.roomName=h(C.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(z&&(s.senderLid=jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Ne(l?.paramsJson)?.id),s.text=R(s.text),s.mentions=pt(s.text),s.links=lt(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=z,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,S.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=O,s.isQuestion=Re,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!G(J(r),"editedMessage"),s.isDeleted=p,s.isPinned=w,s.isUnPinned=x,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!G(J(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!G(J(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let C=this.client.options.citation;for(let q of Object.keys(C)){let Pe=C[q];s.citation[q]=async()=>{let We=await Pe(),De=[W(s.roomId),W(s.senderLid),W(s.senderId)];return !!S.intersection(De,We).length};}}s.chatType!=="text"&&(s.media={...ut(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let $=l?.contextInfo?.quotedMessage,ee=G(J($),"viewOnce"),U=l?.contextInfo?.stanzaId;if($&&this.maxReplies){this.maxReplies--;let C=await this.client.getMessageByChatId(U,$);C&&(s.replied=C,ee&&(s.replied.isViewOnce=true)),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ye=class{constructor(e){this.client=e;this.connection=new me(e),this.messages=new ge(e),this.calls=new ce(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)return;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var Y=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ns=u.object({type:u.literal("quick_reply"),text:u.string()}),os=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),rs=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),is=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),as=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),cs=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([ns,os,rs,is,as]).array()}),ls=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),vt=u.union([ls,cs]);var ps=z.object({maxMessages:z.number().default(20),durationMs:z.number().default(1e4)}).optional(),us=z.record(z.string(),z.function({output:z.promise(z.array(z.number()))})).optional(),ms=z.object({provider:z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z.number())}).optional(),qe=z.enum(["default","rounded","circle","oval"]).default("default"),ds=z.object({packageName:z.string(),authorName:z.string(),quality:z.number(),shape:qe.optional()}).optional(),xt=z.object({session:z.string().default("zaileys").optional(),prefix:z.string().optional(),ignoreMe:z.boolean().default(true).optional(),showLogs:z.boolean().default(true).optional(),syncFullHistory:z.boolean().default(true).optional(),disableFFmpeg:z.boolean().default(false).optional(),autoMarkAI:z.boolean().default(true).optional(),autoMentions:z.boolean().default(true).optional(),autoOnline:z.boolean().default(true).optional(),autoRead:z.boolean().default(true).optional(),autoPresence:z.boolean().default(true).optional(),autoRejectCall:z.boolean().default(true).optional(),limiter:ps,citation:us,fakeReply:ms,sticker:ds}),fs=z.object({authType:z.literal("pairing"),phoneNumber:z.number()}),gs=z.object({authType:z.literal("qr")}),St=z.union([fs.extend(xt.shape),gs.extend(xt.shape)]),rr=z.enum(["connection","messages","calls"]);var X=u.url().or(u.base64()).or(u.instanceof(Buffer)),Tt=u.object({text:u.string()}).passthrough(),ys=u.object({image:X,caption:u.string().optional()}).passthrough(),hs=u.object({audio:X,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),ks=u.object({video:X,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),ws=u.object({sticker:X,shape:qe.optional(),caption:u.string().optional()}).passthrough(),bs=u.object({document:X,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ms=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),vs=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),xs=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),Ct=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:vt.optional()});u.enum(["forward","button","edit","delete"]);var Ss=u.union([Tt,ys,hs,ks,ws,bs,Ms,vs,xs]),At=u.string().or(u.intersection(Ss,Ct.omit({buttons:true}))),It=u.intersection(Tt,Ct.omit({banner:true}));var he=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=h(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var ke=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Y(It,t):t=Y(At,t));let s=i.get("socket"),r={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,w=this.client.options?.autoMentions,x=this.client.options?.autoPresence,O=S.has(t,"replied"),Re=S.has(t,"banner"),z=S.has(t,"isViewOnce"),Ee=n=="button",$=S.has(t,"image"),ee=S.has(t,"video"),U=S.has(t,"audio"),C=S.has(t,"sticker"),q=S.has(t,"document"),Pe=S.has(t,"location"),We=S.has(t,"contacts"),De=S.has(t,"poll"),Ze=$||ee||U||C||q,V=l?t:F([t],["text","caption"]);if(x&&(U?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),w&&(r={...r,mentions:Oe(V),contextInfo:{mentionedJid:Oe(V)}}),O&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=Ue[p],c.quoted.key.participant=Ue[p])),Re&&(r={...r,contextInfo:{externalAdReply:h(t).banner}},r.contextInfo.externalAdReply.mediaType=1),z&&(r={...r,viewOnce:h(t)?.isViewOnce}),V&&(r={...r,text:V,caption:V},Ze&&delete h(r).text),Ze){let b=F([t],["image","video","audio","sticker","document"]),P=S.isString(b)?{url:b}:b;if($&&(r={...r,image:P,jpegThumbnail:await ze(b)}),ee){let I=h(t)?.ptv;r={...r,video:P,ptv:I,jpegThumbnail:await ze(b)};}if(U){let I=h(t)?.ptt;r={...r,audio:await dt(b),ptt:I,mimetype:I?"audio/ogg; codecs=opus":"audio/mpeg"};}if(C){let I=h(t)?.shape;r={...r,sticker:await ft(b,{...this.client.options?.sticker,shape:I})};}if(q){let I=await gt(b);r={...r,fileName:h(t).fileName,...I};}}if(Pe){let b=h(t).location;r={...r,location:{degreesLatitude:b.latitude,degreesLongitude:b.longitude,url:b.url,address:b.footer,name:b.title}};}if(We){let b=h(t)?.contacts,Qe=b?.contacts.map(P=>{let I=["BEGIN:VCARD","VERSION:3.0",`FN:${P.fullname}`,`ORG:${P.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${P.phoneNumber}:${P.phoneNumber}`,"END:VCARD"].join(`
|
|
@@ -18,7 +18,7 @@ by ${le.author} \xB7 v${le.version}`,o=`${e?"Already using latest version!":`Upd
|
|
|
18
18
|
* See LICENSE file for details.
|
|
19
19
|
|
|
20
20
|
* Author: zaadevofc
|
|
21
|
-
* Last build time: 12/18/2025 3:
|
|
21
|
+
* Last build time: 12/18/2025 3:31:39 PM
|
|
22
22
|
*
|
|
23
23
|
* Repository: git+https://github.com/zeative/zaileys.git
|
|
24
24
|
*/export{ne as AudioProcessor,Rt as BaseMessagesType,is as ButtonInteractiveCallType,rs as ButtonInteractiveCopyType,ns as ButtonInteractiveReplyType,as as ButtonInteractiveSingleSelectType,cs as ButtonInteractiveType,os as ButtonInteractiveUrlType,ls as ButtonSimpleType,vt as ButtonType,us as CitationType,Et as Client,fs as ClientAuthPairingType,gs as ClientAuthQRType,xt as ClientBaseType,St as ClientOptionsType,Rs as DEVICE_ENUM_TYPES,ie as DocumentProcessor,rr as EventEnumType,ms as FakeReplyType,oe as ImageProcessor,ps as LimiterType,si as ListenerCallsType,Gr as ListenerConnectionType,Yr as ListenerMessagesType,Es as MESSAGE_ENUM_TYPES,Q as MediaProcessor,Ae as Plugins,ds as StickerMetadataType,re as StickerProcessor,qe as StickerShapeType,D as VideoProcessor,W as cleanJid,ut as cleanMediaObject,nt as cleanupSocket,mt as configureFFmpeg,Ci as definePlugins,Oe as extractJids,lt as extractUrls,G as findGlobalWord,In as findNestedByKeys,_ as generateId,se as getDeepContent,ot as getExistingSocket,it as getLatestLibVersion,ze as getMediaThumbnail,pt as getUsersMentions,Hn as getVideoDuration,Kn as getVideoThumbnail,dt as getWaAudio,gt as getWaDocument,ft as getWaSticker,h as ignoreLint,v as logColor,Rn as modifyFn,R as normalizeText,Fn as numbersToJids,F as pickKeysFromArray,An as randomize,rt as registerAuthCreds,at as removeAuthCreds,te as repairSessionKeys,Cn as shuffleString,ae as toBuffer,Ne as toJson,J as toString,et as useAuthState};
|