zaileys 2.1.8 → 2.1.9
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 +102 -19
- package/dist/index.d.mts +146 -127
- package/dist/index.d.ts +146 -127
- package/dist/index.js +27 -15
- package/dist/index.mjs +27 -15
- package/package.json +6 -5
- package/tsconfig.json +1 -0
package/dist/index.mjs
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
|
-
import Vt,{BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,URL_REGEX,extractMessageContent,getContentType,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import _e,{stat,mkdir}from'fs/promises';import {createJetDB}from'jetdb';export{JetDB,createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import Ne from'node-cache';import {EventEmitter}from'events';import Nt from'pino';import*as $ from'fs';import {promises}from'fs';import rt from'unorm';import ct,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import X from'fluent-ffmpeg';import Ht from'node-webpmux';import {tmpdir}from'os';import*as je from'path';import je__default from'path';import ae from'sharp';import Qt from'figlet';import Xt from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z as z$1}from'zod';import Rs from'stream';import {pathToFileURL}from'url';var Oe=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=createSpinner("",{color:"green"});logger=Nt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Ne({stdTTL:300,useClones:false});collectors=new Map},i=new Oe;var Xe=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}`,b=await n.get(p);s==="app-state-sync-key"&&b&&(b=proto.Message.AppStateSyncKeyData.fromObject(b)),c[l]=b;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let b=s[l][p],x=`${l}:${p}`;b?r.push({key:x,value:b}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var zt=new Ne,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Ne,mediaCache:new Ne({stdTTL:60}),cachedGroupMetadata:async t=>zt.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},re=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(b=>c.startsWith(b))?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");}},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=Vt(s);r.ev.on("creds.update",o),i.set("socket",r);};var w=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}},P=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>rt.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>rt.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?ct(e)(a):ct([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},Z=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Fe(a)||"{}"));return S.isError(e)?"{}":e}},In=(a="")=>S.shuffle(a).join(""),Q=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],Rn=a=>a[Math.floor(Math.random()*a.length)],N=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,b,x]=p;r=r?.[b]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},En=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},Pn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var U=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)},$e=(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"]),ie=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},D=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;X.setFfmpegPath(e.path),X.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"}},k=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}`)}}},A=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}`)}}},F=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},z=class{static async process(e){return new Promise((t,n)=>{let o=X(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)=>{X.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ce=class{static async getWaAudio(e,t="opus"){let n=await A.toBuffer(e),o=await fileTypeFromBuffer(n);F.validate(o,h.MIME.AUDIO);let s=k.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=k.createTempPath("audio_out",r);await k.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 k.safeReadFile(c);},onError:async()=>{await k.cleanup([s,c]);}}),await k.cleanup([s,c]),l}catch(p){throw await k.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},E=class{static async getThumbnail(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);F.validate(n,h.MIME.VIDEO);let o=k.createTempPath("video","mp4"),s=k.createTempPath("thumb","jpg");await k.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{X(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:je__default.basename(s),folder:je__default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await k.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await k.cleanup([o,s]),r}catch(c){throw await k.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return z.getDuration(e)}static async getWaVideo(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);F.validate(n,h.MIME.VIDEO);let o=k.createTempPath("video_in","mp4"),s=k.createTempPath("video_out","mp4");await k.safeWriteFile(o,t);let r;try{let c=["-c:v","libx264","-preset","ultrafast","-crf","28","-c:a","aac","-b:a","128k","-movflags","+faststart","-pix_fmt","yuv420p","-f","mp4"];return await z.process({input:o,output:s,options:c,onEnd:async()=>{r=await k.safeReadFile(s);},onError:async()=>{await k.cleanup([o,s]);}}),await k.cleanup([o,s]),r}catch(c){throw await k.cleanup([o,s]),new Error(`Video re-encoding failed: ${c.message}`)}}},V=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===h.MIME.GIF?ae(e,{animated:false}):ae(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=ae(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()}static async getWaImage(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!n.mime.startsWith(h.MIME.IMAGE))throw new Error("Invalid image type");return n.mime==="image/webp"?await ae(t).jpeg().toBuffer():t}},ee=class{static async getThumbnail(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!F.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?E.getThumbnail(e):V.getThumbnail(t)}},le=class{static createExifMetadata(e){let t={"sticker-pack-id":U(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=k.createTempPath("sticker_in",o),r=k.createTempPath("sticker_out","webp");await k.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let x=await E.getDuration(s);c=w(Math.min(x,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)),b;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 ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{b=await k.safeReadFile(r);},onError:async()=>{await k.cleanup([s,r]);}}),await k.cleanup([s,r]),b}catch(x){throw await k.cleanup([s,r]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await A.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=F.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await V.resizeForSticker(n,s,c),p=this.createExifMetadata(t),b=new Ht.Image;await b.load(l),b.exif=p;let x=await b.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},pe=class{static async create(e){try{let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:U(Date.now().toString()),jpegThumbnail:await ee.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ue=A.toBuffer.bind(A),dt=ce.getWaAudio.bind(ce),ft=V.getWaImage.bind(V),gt=E.getWaVideo.bind(E),Zn=E.getThumbnail.bind(E),Qn=E.getDuration.bind(E),Ue=ee.getThumbnail.bind(ee),yt=le.create.bind(le),ht=pe.create.bind(pe);var me=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=P(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 kt=a=>{Xt.generate(a,{small:true},e=>{console.log(e);});},bt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a="2.1.7",e="zaadevofc",t=await it(),n=a===t;i.spinner.stop();let o="Zaileys",s=`
|
|
3
|
-
|
|
4
|
-
`,c=n?"lime":"orange",l=await Qt.text(o),p=cristal(l);console.log(p),console.log(M(s,"dimgray")),console.log(M(r,c));};var ge=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)}`),kt(l),t.qr=l;return}if(r==="close"){let p=w(c?.error)?.output?.statusCode,b=c?.error?.message||"",x=typeof p=="number"&&p!==DisconnectReason.loggedOut,_=p===515||b.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${b}`),_){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await re(this.client.options.session),await delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
|
|
5
|
-
`);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}x&&await n();}if(r==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],b=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${cristal(b||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 vt={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 ye=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var he=class{constructor(e){this.client=e;this.limiter=new ye(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=ie(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=ie(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=vt[c],!s.chatType)return;s.receiverLid=jidNormalizedUser(o?.user?.lid||""),s.receiverId=jidNormalizedUser(o?.user?.id||""),s.receiverName=P(o?.user?.name||o?.user?.verifiedName),s.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,b=l?.type===1,x=l?.type===2,_=s.roomId?.includes("@newsletter"),Pe=!!e?.message?.questionMessage,G=e?.key?.fromMe||false;if(G&&this.client.options.ignoreMe&&t!=="replied")return;let We=l?.key?.id;if(p||b||x){let C=await this.client.db("messages").query(s.roomId).where("key.id","=",We).first();if(!C)return;e=C,r=ie(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid)||null,s.senderId=jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt)||null,s.senderName=P(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId||""),s.channelId=U([s.roomId,s.senderId]),s.uniqueId=U([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,_){let C=await o.newsletterMetadata("jid",s.roomId);s.roomName=w(C.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(G&&(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=Fe(l?.paramsJson)?.id),s.text=P(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=G,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0])||s.mentions?.includes(s.receiverLid.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=_,s.isQuestion=Pe,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!Q(Z(r),"editedMessage"),s.isDeleted=p,s.isPinned=b,s.isUnPinned=x,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!Q(Z(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!Q(Z(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let C=this.client.options.citation;for(let W of Object.keys(C)){let De=C[W];s.citation[W]=async()=>{let Be=await De(),oe=[D(s.roomId),D(s.senderLid),D(s.senderId)];return !!S.intersection(oe,Be).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=l?.contextInfo?.quotedMessage,J=Q(Z(L),"viewOnce"),K=l?.contextInfo?.stanzaId,ne=l?.contextInfo?.participant;if(L&&this.maxReplies){this.maxReplies--;let C=await this.client.db("messages").query(J?ne:s.roomId).where("key.id","=",K).first(),W;J?W={...C,message:L}:W=C,s.replied=await this.parse(W,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var we=class{constructor(e){this.client=e;this.connection=new ge(e),this.messages=new he(e),this.calls=new me(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;if(Date.now()-o>1440*60*1e3)continue;N([n?.key],["participant","remoteJid"])||null;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 te=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var os=u.object({type:u.literal("quick_reply"),text:u.string()}),rs=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),is=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),as=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),cs=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),ls=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([os,rs,is,as,cs]).array()}),ps=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),St=u.union([ps,ls]);var us=z$1.object({maxMessages:z$1.number().default(20),durationMs:z$1.number().default(1e4)}).optional(),ms=z$1.record(z$1.string(),z$1.function({output:z$1.promise(z$1.array(z$1.number()))})).optional(),ds=z$1.object({provider:z$1.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z$1.number())}).optional(),Ve=z$1.enum(["default","rounded","circle","oval"]).default("default"),fs=z$1.object({packageName:z$1.string().optional(),authorName:z$1.string().optional(),quality:z$1.number().optional(),shape:Ve.optional()}).optional(),Tt=z$1.object({session:z$1.string().default("zaileys").optional(),prefix:z$1.string().optional(),ignoreMe:z$1.boolean().default(true).optional(),showLogs:z$1.boolean().default(true).optional(),syncFullHistory:z$1.boolean().default(true).optional(),disableFFmpeg:z$1.boolean().default(false).optional(),cleanupDays:z$1.number().default(7).optional(),autoMarkAI:z$1.boolean().default(true).optional(),autoMentions:z$1.boolean().default(true).optional(),autoOnline:z$1.boolean().default(true).optional(),autoRead:z$1.boolean().default(true).optional(),autoPresence:z$1.boolean().default(true).optional(),autoRejectCall:z$1.boolean().default(true).optional(),limiter:us,citation:ms,fakeReply:ds,sticker:fs}),gs=z$1.object({authType:z$1.literal("pairing"),phoneNumber:z$1.number()}),ys=z$1.object({authType:z$1.literal("qr")}),Ct=z$1.union([gs.extend(Tt.shape),ys.extend(Tt.shape)]),cr=z$1.enum(["connection","messages","calls"]);var se=u.url().or(u.base64()).or(u.instanceof(Buffer)),At=u.object({text:u.string()}).passthrough(),hs=u.object({image:se,caption:u.string().optional()}).passthrough(),ws=u.object({audio:se,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),ks=u.object({video:se,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),bs=u.object({sticker:se,shape:Ve.optional(),caption:u.string().optional()}).passthrough(),vs=u.object({document:se,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ms=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),xs=u.object({contacts:u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()})}).passthrough(),Ss=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),It=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:St.optional()});u.enum(["forward","button","edit","delete"]);var Ts=u.union([At,hs,ws,ks,bs,vs,Ms,xs,Ss]),Rt=u.string().or(u.intersection(Ts,It.omit({buttons:true}))),Et=u.intersection(At,It.omit({banner:true}));var ke=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=w(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:w(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 be=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=te(Et,t):t=te(Rt,t));let s=i.get("socket"),r={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,b=this.client.options?.autoMentions,x=this.client.options?.autoPresence,_=S.has(t,"replied"),Pe=S.has(t,"banner"),G=S.has(t,"isViewOnce"),We=n=="button",L=S.has(t,"image"),J=S.has(t,"video"),K=S.has(t,"audio"),ne=S.has(t,"sticker"),C=S.has(t,"document"),W=S.has(t,"location"),De=S.has(t,"contacts"),Be=S.has(t,"poll"),oe=L||J||K||ne||C,H=l?t:N([t],["text","caption"]);if(x&&(K?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),b&&(r={...r,mentions:$e(H),contextInfo:{mentionedJid:$e(H)}}),_&&(c.quoted=w(t).replied,p&&(c.quoted.key.remoteJid=ze[p],c.quoted.key.participant=ze[p])),Pe&&(r={...r,contextInfo:{externalAdReply:w(t).banner}},r.contextInfo.externalAdReply.mediaType=1),G&&(r={...r,viewOnce:w(t)?.isViewOnce}),H&&(r={...r,text:H,caption:H},oe&&delete w(r).text),oe){let v=N([t],["image","video","audio","sticker","document"]);S.isString(v)?{}:v;if(L&&(r={...r,image:await ft(v),jpegThumbnail:await Ue(v)}),J){let R=w(t)?.ptv;r={...r,video:await gt(v),ptv:R,jpegThumbnail:await Ue(v)};}if(K){let R=w(t)?.ptt;r={...r,audio:await dt(v),ptt:R,mimetype:R?"audio/ogg; codecs=opus":"audio/mpeg"};}if(ne){let R=w(t)?.shape;r={...r,sticker:await yt(v,{...this.client.options?.sticker,shape:R})};}if(C){let R=await ht(v);r={...r,fileName:w(t).fileName,...R};}}if(W){let v=w(t).location;r={...r,location:{degreesLatitude:v.latitude,degreesLongitude:v.longitude,url:v.url,address:v.footer,name:v.title}};}if(De){let v=w(t)?.contacts,Ze=v?.contacts.map(j=>{let R=["BEGIN:VCARD","VERSION:3.0",`FN:${j.fullname}`,`ORG:${j.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${j.phoneNumber}:${j.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
-
`);return {displayName:j.fullname,vcard:R}});r={...r,contacts:{displayName:v?.title,contacts:Ze}};}if(Be){let v=w(t)?.poll;r={...r,poll:{name:v.name,values:v.answers,selectableCount:v.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...w(r).contextInfo,isForwarded:true,forwardingScore:w(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),We?await new ke().send(e,t,c):await s.sendMessage(e,w(r),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return S.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var qe=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,w(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,w(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},ve=class{constructor(e){this.mlient=e;this.community=new qe(e);}community};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ue(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=i.get("socket"),n=i.groupCache.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&i.groupCache.set(e,o),o}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},Me=class{constructor(e){this.glient=e;this.group=new Ge(e);}group};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ue(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},xe=class{constructor(e){this.nlient=e;this.newsletter=new Je(e);}newsletter};var Ke=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},Se=class{constructor(e){this.plient=e;this.privacy=new Ke(e);}privacy};var Zr=u.object({status:u.enum(["connecting","open","close","reload","syncing"]),authType:u.enum(["pairing","qr"]),authTimeout:u.number().optional(),syncProgress:u.number().optional(),syncCompleted:u.boolean().default(false).optional(),qr:u.string().optional(),code:u.string().optional()});var Es=u.enum(["unknown","android","ios","desktop","web"]),Ps=u.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Pt=u.object({channelId:u.string(),uniqueId:u.string(),chatId:u.string(),chatType:Ps,receiverLid:u.string(),receiverId:u.string(),receiverName:u.string(),roomId:u.string(),roomName:u.string(),senderLid:u.string(),senderId:u.string(),senderName:u.string(),senderDevice:Es,timestamp:u.number(),text:u.string().nullable(),mentions:u.string().array(),links:u.string().array(),isBot:u.boolean(),isFromMe:u.boolean(),isPrefix:u.boolean(),isSpam:u.boolean(),isTagMe:u.boolean(),isStatusMention:u.boolean(),isGroupStatusMention:u.boolean(),isHideTags:u.boolean(),isGroup:u.boolean(),isNewsletter:u.boolean(),isQuestion:u.boolean(),isStory:u.boolean(),isViewOnce:u.boolean(),isEdited:u.boolean(),isDeleted:u.boolean(),isPinned:u.boolean(),isUnPinned:u.boolean(),isBroadcast:u.boolean(),isEphemeral:u.boolean(),isForwarded:u.boolean(),citation:u.record(u.string(),u.function({output:u.promise(u.boolean())})).nullable(),media:u.object({buffer:u.function({output:u.promise(u.instanceof(Buffer))}),stream:u.function({output:u.promise(u.instanceof(Rs))})}).loose().nullable(),message:u.function({input:[],output:u.custom()})}),ti=Pt.extend({replied:Pt.nullable()});var ri=u.object({callId:u.string(),callerId:u.string(),callerName:u.string(),roomId:u.string(),roomName:u.string(),date:u.date(),offline:u.boolean(),status:u.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u.boolean(),isGroup:u.boolean()});var Te=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ws={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Ce=class{constructor(e,t={}){this.client=e;this.options={...Ws,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await re(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};var Ae=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=w(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=M(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
|
|
7
|
-
`;
|
|
8
|
-
|
|
9
|
-
`,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
`,
|
|
13
|
-
|
|
1
|
+
import*as te from'path';import te__default from'path';import {pathToFileURL}from'url';import ye from'fluent-ffmpeg';import Ue from'fs/promises';import {tmpdir}from'os';import nn,{initAuthCreds,proto,makeCacheableSignalKeyStore,Browsers,extractMessageContent,getContentType,URL_REGEX,BufferJSON,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import {createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import ce from'node-cache';import Qt from'pino';import Zn,{EventEmitter}from'stream';import {Mutex}from'async-mutex';import {fileTypeFromBuffer}from'file-type';import {Jimp}from'jimp';import dn from'node-webpmux';import R from'lodash';import Ct from'unorm';import {fromError}from'zod-validation-error';import Pt,{cristal}from'gradient-string';import wn from'figlet';import bn from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import m,{z as z$1}from'zod';import*as De from'fs';var Gt=Object.defineProperty;var pt=(s,e)=>()=>(s&&(e=s(s=0)),e);var Jt=(s,e)=>{for(var t in e)Gt(s,t,{get:e[t],enumerable:true});};var c=pt(()=>{});var bt={};Jt(bt,{BufferConverter:()=>A,FFMPEG_CONSTANTS:()=>b,FFmpegProcessor:()=>L,FileManager:()=>w,MimeValidator:()=>F,initializeFFmpeg:()=>qe});var b,qe,w,A,F,L,G=pt(()=>{c();b={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"}},qe=async(s=false)=>{if(!s)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;ye.setFfmpegPath(e.path),ye.setFfprobePath(t.path);}catch{}},w=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return te__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Ue.unlink(t)));}static async safeReadFile(e){try{return await Ue.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Ue.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},A=class{static async toBuffer(e){if(Buffer.isBuffer(e))return e;if(e instanceof ArrayBuffer)return Buffer.from(e);if(typeof e=="string")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 r=await t.arrayBuffer();return Buffer.from(r)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},F=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(b.MIME.IMAGE)||e.startsWith(b.MIME.VIDEO)}static isAnimated(e){return e===b.MIME.GIF||e.startsWith(b.MIME.VIDEO)}},L=class{static async process(e){return new Promise((t,r)=>{let i=ye(e.input).output(e.output);for(let n=0;n<e.options.length;n++){let o=e.options[n];o.startsWith("-")&&n+1<e.options.length&&!e.options[n+1].startsWith("-")?(i.outputOptions(o,e.options[n+1]),n++):i.outputOptions(o);}i.on("end",async()=>{try{await e.onEnd(),t();}catch(n){r(n);}}).on("error",async n=>{try{await e.onError(n);}finally{r(n);}}).run();})}static async getDuration(e){return new Promise((t,r)=>{ye.ffprobe(e,(i,n)=>{if(i)return r(i);t(n.format.duration||0);});})}};});c();c();c();c();var lt=s=>createJetDB(`${s}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),ge=s=>createJetDB(`${s}/auth/keys.json`,{BufferJSON:BufferJSON,size:1024*1024,cacheSize:2e3,flushMode:"sync",compression:"deflate",enableIndexing:false,hotThreshold:5}),ut=(s,e)=>createJetDB(`.session/${s}/store/${e}.json`,{BufferJSON:BufferJSON,cacheSize:2e4,debounceMs:1e3,flushMode:"debounce",compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:2,size:5*1024*1024});c();c();var mt=new ce({stdTTL:600,checkperiod:120,useClones:false}),N=new ce({stdTTL:300,useClones:false}),dt=new ce({stdTTL:300}),ft=new ce({stdTTL:600,checkperiod:120,useClones:false,deleteOnExpire:true,maxKeys:100}),gt=new ce;c();var ne=class{classInjection(e,t){let r=t.length;return new Proxy(e,{get(i,n,o){if(n in i){let p=Reflect.get(i,n,o);return typeof p=="function"?p.bind(i):p}for(let p=0;p<r;p++){let l=t[p];if(n in l){let u=Reflect.get(l,n,o);return typeof u=="function"?u.bind(l):u}}},set(i,n,o,p){if(n in i)return Reflect.set(i,n,o,p);for(let l=0;l<r;l++){let u=t[l];if(n in u)return Reflect.set(u,n,o,p)}return Reflect.set(i,n,o,p)},has(i,n){if(n in e)return true;for(let o=0;o<r;o++)if(n in t[o])return true;return false},ownKeys(){let i=[];for(let n of Reflect.ownKeys(e))i.push(n);for(let n=0;n<r;n++)for(let o of Reflect.ownKeys(t[n]))i.includes(o)||i.push(o);return i},getOwnPropertyDescriptor(i,n){let o=Object.getOwnPropertyDescriptor(e,n);if(o)return o;for(let p=0;p<r;p++)if(o=Object.getOwnPropertyDescriptor(t[p],n),o)return o}})}};var Le=class extends ce{constructor(){return super({useClones:false}),new ne().classInjection(this,[mt])}spinner=createSpinner("",{color:"green"});logger=Qt({level:"silent",enabled:false});events=new EventEmitter},a=new Le;var yt=async s=>{a.spinner.start(" Initializing auth state...");let e=lt(s),t=ge(s),r=await e.get("creds")||initAuthCreds();return a.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let o={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,u=await t.get(l);i==="app-state-sync-key"&&u&&(u=proto.Message.AppStateSyncKeyData.fromObject(u)),o[p]=u;})),o},set:async i=>{let n=[],o=[];for(let p in i)for(let l in i[p]){let u=i[p][l],T=`${p}:${l}`;u?n.push({key:T,value:u}):o.push(T);}n.length&&await t.batchSet(n),o.length&&await t.batchDelete(o),await t.flush();}}},saveCreds:async()=>{await e.set("creds",r);}}};c();c();var wt=(s,e)=>({logger:s.health.logger,printQRInTerminal:false,enableRecentMessageCache:true,emitOwnEvents:true,keepAliveIntervalMs:3e4,browser:Browsers.ubuntu("Chrome"),markOnlineOnConnect:s.options.autoOnline,syncFullHistory:s.options.syncFullHistory,msgRetryCounterCache:gt,mediaCache:dt,auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,a.logger)},cachedGroupMetadata:async t=>N.get(t),shouldIgnoreJid:()=>false,shouldSyncHistoryMessage:()=>s.options.syncFullHistory,patchMessageBeforeSending:t=>t,getMessage:async t=>{if(!t?.remoteJid)return proto.Message.fromObject({});let r=await s.db("messages").getByIndex("messages","key.id",t.id);return proto.Message.fromObject(r[0])}});var kt=async s=>{let e=`.session/${s.options.session}`;console.info=()=>{};let{state:t,saveCreds:r}=await yt(e),i=wt(s,t),n=nn(i);n.ev.on("creds.update",r),a.set("socket",n);};c();c();c();var ze=class{store=ft;mutex=new Mutex;async inject(e,t){let r=await this.mutex.acquire();try{this.store.set(e,t);}finally{r();}}async get(e){let t=await this.mutex.acquire();try{return this.store.get(e)}finally{t();}}getSync(e){return this.store.get(e)}getAll(){let e=this.store.keys();return this.store.mget(e)}async remove(e){let t=await this.mutex.acquire();try{return this.store.del(e)>0}finally{t();}}async clear(){let e=await this.mutex.acquire();try{this.store.flushAll();}finally{e();}}has(e){return this.store.has(e)}get size(){return this.store.getStats().keys}keys(){return this.store.keys()}},X=new ze;c();G();c();G();var re=class{static async toOpus(e){return this.convert(e,"opus")}static async toMp3(e){return this.convert(e,"mp3")}static async convert(e,t="opus"){let r=await A.toBuffer(e),i=await fileTypeFromBuffer(r);F.validate(i,b.MIME.AUDIO);let n=w.createTempPath("audio_in","wav"),o=t==="opus"?"ogg":"mp3",p=w.createTempPath("audio_out",o);await w.safeWriteFile(n,r);let l;try{let u=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 L.process({input:n,output:p,options:u,onEnd:async()=>{l=await w.safeReadFile(p);},onError:async()=>{await w.cleanup([n,p]);}}),await w.cleanup([n,p]),l}catch(u){throw await w.cleanup([n,p]),new Error(`${t.toUpperCase()} conversion failed: ${u.message}`)}}};c();G();var z=class{static async toMp4(e){let t=await A.toBuffer(e),r=await fileTypeFromBuffer(t);F.validate(r,b.MIME.VIDEO);let i=w.createTempPath("video_in","mp4"),n=w.createTempPath("video_out","mp4");await w.safeWriteFile(i,t);let o;try{let p=["-c:v","libx264","-preset","ultrafast","-crf","28","-c:a","aac","-b:a","128k","-movflags","+faststart","-pix_fmt","yuv420p","-f","mp4"];return await L.process({input:i,output:n,options:p,onEnd:async()=>{o=await w.safeReadFile(n);},onError:async()=>{await w.cleanup([i,n]);}}),await w.cleanup([i,n]),o}catch(p){throw await w.cleanup([i,n]),new Error(`Video re-encoding failed: ${p.message}`)}}static async thumbnail(e){let t=await A.toBuffer(e),r=await fileTypeFromBuffer(t);F.validate(r,b.MIME.VIDEO);let i=w.createTempPath("video","mp4"),n=w.createTempPath("thumb","jpg");await w.safeWriteFile(i,t);let o;try{return await new Promise((p,l)=>{ye(i).screenshots({timestamps:[b.THUMBNAIL.TIMESTAMP],filename:te__default.basename(n),folder:te__default.dirname(n),size:`${b.THUMBNAIL.SIZE}x${b.THUMBNAIL.SIZE}`}).on("end",async()=>{try{o=(await w.safeReadFile(n)).toString("base64"),p();}catch(u){l(u);}}).on("error",l);}),await w.cleanup([i,n]),o}catch(p){throw await w.cleanup([i,n]),new Error(`Thumbnail generation failed: ${p.message}`)}}static async duration(e){return L.getDuration(e)}};c();G();var D=class{static async thumbnail(e){let t=await fileTypeFromBuffer(e),r=b.THUMBNAIL.SIZE,i=await Jimp.read(e);return i.cover({w:r,h:r}),t?.mime===b.MIME.GIF&&i.resize({w:r,h:r}),(await i.getBuffer("image/jpeg",{quality:b.THUMBNAIL.QUALITY})).toString("base64")}static async resize(e,t,r){let i=await Jimp.read(e);return i.cover({w:t,h:r}),await i.getBuffer("image/png")}static async toJpeg(e){let t=await A.toBuffer(e),r=await fileTypeFromBuffer(t);if(!r||!r.mime.startsWith(b.MIME.IMAGE))throw new Error("Invalid image type");return r.mime==="image/webp"?await(await Jimp.read(t)).getBuffer("image/jpeg"):t}static async resizeForSticker(e,t,r="default"){let i=b.STICKER.SIZE,n=await Jimp.read(e);if(n.contain({w:i,h:i}),r!=="default"){let C=new Jimp({width:i,height:i,color:0});for(let M=0;M<i;M++)for(let P=0;P<i;P++){let W=false,J=i/2,K=i/2;switch(r){case "circle":{let v=P-J,O=M-K;W=v*v+O*O<=J*J;break}case "rounded":{let v=i/10,O=P>=v&&P<i-v&&M>=0&&M<i,V=P>=0&&P<i&&M>=v&&M<i-v,S=false,_=[[v,v],[i-v,v],[v,i-v],[i-v,i-v]];for(let[oe,se]of _){let Y=P-oe,H=M-se;if(Y*Y+H*H<=v*v){S=true;break}}W=O||V||S;break}case "oval":{let v=i/2,O=i/3,V=(P-J)/v,S=(M-K)/O;W=V*V+S*S<=1;break}}W&&C.setPixelColor(4294967295,P,M);}n.mask(C);}let o=w.createTempPath("sticker_img","png"),p=w.createTempPath("sticker_out","webp"),l=await n.getBuffer("image/png");await w.safeWriteFile(o,l);let{FFmpegProcessor:u}=await Promise.resolve().then(()=>(G(),bt)),T;try{return await u.process({input:o,output:p,options:["-vf",`scale=${i}:${i}`,"-quality",String(t),"-f","webp"],onEnd:async()=>{T=await w.safeReadFile(p);},onError:async()=>{await w.cleanup([o,p]);}}),await w.cleanup([o,p]),T}catch(C){throw await w.cleanup([o,p]),new Error(`Sticker resize failed: ${C.message}`)}}};c();c();var ee=s=>{let e;Array.isArray(s)?e=s.join("|"):typeof s=="string"?e=s:e=String(s);let t=2166136261,r=e.length;for(let i=0;i<r;i++)t^=e.charCodeAt(i),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},Tt=(s="")=>{if(!s)return [];let e=new Set;for(let t of s.matchAll(/@(\d+)/g))e.add(t[1]);return R.toArray(e)},Ve=(s="")=>{if(!s)return [];let e=new Set;for(let t of s.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return R.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},vi=s=>R.isEmpty(s)?[]:R.map([...s],e=>`${e}@s.whatsapp.net`),St=s=>R.omit(s,["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"]),he=s=>{if(!s)return {leaf:void 0,chain:[]};let e=extractMessageContent(s)||s,t=[];for(;e&&typeof e=="object";){let r=getContentType(e);if(!r)break;t.push(r);let i=e[r];if(!i||typeof i!="object"){e=i;break}e=i;}return {leaf:e,chain:t}},U=s=>Number(s?.split("@")[0]);c();var x=s=>s,It=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(s){throw s}},At=async s=>{try{let e=`.session/${s}/auth/creds.json`;await Ue.unlink(e);}catch(e){throw a.spinner.error(`Failed to remove auth creds for session "${s}"!`),e}},Q=(s="")=>{if(!s?.length)return null;let e=s.replace(/\u202E(.*?)(\u202C|$)/gu,(t,r)=>[...r].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,r)=>[...r].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>Ct.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>Ct.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};G();var we=class{static async create(e,t){try{let r=await A.toBuffer(e),i=await fileTypeFromBuffer(r);if(!i)throw new Error("Unable to detect file type");let n=t?.quality||b.STICKER.DEFAULT_QUALITY,o=F.isAnimated(i.mime),p=t?.shape||"default",l=o?await this.processAnimated(r,i.mime,n):await D.resizeForSticker(r,n,p),u=this.createExifMetadata(t),T=new dn.Image;await T.load(l),T.exif=u;let C=await T.save(null);return Buffer.isBuffer(C)?C:Buffer.from(C)}catch(r){throw new Error(`Sticker creation failed: ${r.message||r}`)}}static createExifMetadata(e){let t={"sticker-pack-id":ee(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"},r=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),i=Buffer.from(JSON.stringify(t),"utf8"),n=Buffer.concat([r,i]);return n.writeUIntLE(i.length,14,4),n}static async processAnimated(e,t,r){let i=this.getExtension(t),n=w.createTempPath("sticker_in",i),o=w.createTempPath("sticker_out","webp");await w.safeWriteFile(n,e);let p=b.STICKER.MAX_DURATION;try{let P=await z.duration(n);p=x(Math.min(P,b.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",b.STICKER.MAX_DURATION);}let l=b.STICKER.SIZE,u=b.STICKER.FPS,T=`scale=${l}:${l}:force_original_aspect_ratio=increase,crop=${l}:${l},fps=${u},format=rgba`,C=Math.max(1,Math.min(100,100-r)),M;try{return await L.process({input:n,output:o,options:["-vcodec libwebp",`-vf ${T}`,`-q:v ${C}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${p}`,`-compression_level ${b.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{M=await w.safeReadFile(o);},onError:async()=>{await w.cleanup([n,o]);}}),await w.cleanup([n,o]),M}catch(P){throw await w.cleanup([n,o]),new Error(`Animated sticker processing failed: ${P.message}`)}}static getExtension(e){return e===b.MIME.GIF?"gif":e.startsWith(b.MIME.VIDEO)?"mp4":"tmp"}};c();G();G();var ke=class{static async create(e){try{let t=await A.toBuffer(e),r=await fileTypeFromBuffer(t);if(!r)throw new Error("Unable to detect file type");let i;return r.mime.startsWith(b.MIME.VIDEO)?i=await z.thumbnail(t):F.isMedia(r.mime)?i=await D.thumbnail(t):i="",{document:t,mimetype:r.mime,fileName:ee(Date.now().toString()),jpegThumbnail:i}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}};c();var ue=(s,e)=>{try{return s.parse(e)}catch(t){let r=fromError(t);throw new Error(r.toString())}};c();c();var Ge=class{concurrency;timeout;onError;queue;running;completed;failed;isClosing;closeResolve;constructor(e){this.concurrency=e?.concurrency||10,this.timeout=e?.timeout||3e4,this.onError=e?.onError||this._defaultErrorHandler,this.queue=[],this.running=new Set,this.completed=0,this.failed=0,this.isClosing=false,this.closeResolve=null;}add(e,t){if(this.isClosing)throw new Error("Queue is closing, cannot add new tasks");let r={id:this._generateId(),fn:e,priority:t?.priority||0,timeout:t?.timeout||this.timeout,retries:t?.retries||0,maxRetries:t?.maxRetries||0,createdAt:Date.now()},i=this.queue.findIndex(n=>n.priority<r.priority);return i===-1?this.queue.push(r):this.queue.splice(i,0,r),this._process(),r.id}addBulk(e){return e.map(({fn:t,options:r})=>this.add(t,r))}async _process(){for(;this.running.size<this.concurrency&&this.queue.length>0;){let e=this.queue.shift();this.running.add(e),this._executeTask(e);}this.isClosing&&this.running.size===0&&this.queue.length===0&&this.closeResolve?.();}async _executeTask(e){try{await this._withTimeout(e.fn(),e.timeout),this.completed++;}catch(t){e.retries<e.maxRetries?(e.retries++,this.queue.unshift(e)):(this.failed++,this.onError(t,e));}finally{this.running.delete(e),this._process();}}_withTimeout(e,t){return Promise.race([e,new Promise((r,i)=>setTimeout(()=>i(new Error("Task timeout")),t))])}async close(e=0){if(this.isClosing=true,this.running.size===0&&this.queue.length===0)return;let t=new Promise(r=>{this.closeResolve=r;});if(e>0){let r=new Promise(i=>setTimeout(i,e));await Promise.race([t,r]);}else await t;}forceClose(){this.queue=[],this.running.clear(),this.isClosing=true,this.closeResolve?.();}getStats(){return {queued:this.queue.length,running:this.running.size,completed:this.completed,failed:this.failed,total:this.completed+this.failed}}isIdle(){return this.queue.length===0&&this.running.size===0}async waitUntilIdle(e=100){for(;!this.isIdle();)await new Promise(t=>setTimeout(t,e));}_defaultErrorHandler(e,t){console.error(`[FireAndForget] Task ${t.id} failed:`,e);}_generateId(){return `${Date.now()}-${Math.random().toString(36).substr(2,9)}`}},E=new Ge;process.on("SIGTERM",()=>E.close());c();c();c();var h=(s,e="lime")=>Array.isArray(e)?Pt(e)(s):Pt([e,e])(s),Je=s=>{try{return JSON.parse(s)}catch{return R.attempt(()=>JSON.parse(JSON.stringify(s)||"{}"))}},me=s=>{try{return JSON.stringify(s)}catch{let e=R.attempt(()=>JSON.stringify(Je(s)||"{}"));return R.isError(e)?"{}":e}},lo=(s="")=>R.shuffle(s).join(""),de=(s="",e="")=>s?R.includes(s.toLowerCase(),e.toLowerCase()):null,Et=(s="")=>s?R.castArray(s.match(URL_REGEX)||[]):[],uo=s=>s[Math.floor(Math.random()*s.length)],Ke=(s,e)=>{let t=i=>!!(i==null||typeof i=="string"&&i.trim()===""||Array.isArray(i)&&i.length===0||typeof i=="object"&&Object.keys(i).length===0),r=(i,n)=>{if(!i||typeof i!="object")return;let o=i,p=n.split(".");for(let l of p){let u=l.match(/^(.+?)\[(\d+)\]$/);if(u){let[,T,C]=u;o=o?.[T]?.[parseInt(C,10)];}else o=o?.[l];if(t(o))return}return o};if(!(!Array.isArray(s)||s.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let i of s)if(!(!i||typeof i!="object"))for(let n of e){let o=r(i,n);if(!t(o))return o}}},mo=(s,e)=>{let t=R.castArray(e),r=(o,p)=>R.every(p,(l,u)=>o?.[u]===l),i=(o,p)=>R.some(p,(l,u)=>o?.[u]===l),n=o=>R.isArray(o)?R.find(o,n)??o:R.isObject(o)?R.find(t,u=>r(o,u))||R.find(t,u=>i(o,u))?o:R.find(R.values(o),n)??o:null;return n(s)},fo=(s,e,t)=>new Proxy(s,{apply(r,i,n){e?.(n);let o=Reflect.apply(r,i,n);return t?t(o,n):o}});c();var He=class{input;constructor(e){this.input=e;}async toOpus(){return re.toOpus(this.input)}async toMp3(){return re.toMp3(this.input)}async convert(e="opus"){return re.convert(this.input,e)}},Qe=class{input;constructor(e){this.input=e;}async toMp4(){return z.toMp4(this.input)}async thumbnail(){return z.thumbnail(this.input)}},Ze=class{input;constructor(e){this.input=e;}async toJpeg(){return D.toJpeg(this.input)}async thumbnail(){let e=await A.toBuffer(this.input);return D.thumbnail(e)}async resize(e,t){let r=await A.toBuffer(this.input);return D.resize(r,e,t)}},Ye=class{input;metadata;constructor(e,t){this.input=e,this.metadata=t;}async create(){return we.create(this.input,this.metadata)}},Xe=class{input;constructor(e){this.input=e;}async create(){return ke.create(this.input)}},et=class{input;constructor(e){this.input=e;}async get(){let e=await A.toBuffer(this.input),t=await fileTypeFromBuffer(e);if(!t||!F.isMedia(t.mime))throw new Error("Invalid media type: expected image or video");return t.mime.startsWith(b.MIME.VIDEO)?z.thumbnail(this.input):D.thumbnail(e)}},tt=class{audio(e){return new He(e)}video(e){return new Qe(e)}image(e){return new Ze(e)}sticker(e,t){return new Ye(e,t)}document(e){return new Xe(e)}thumbnail(e){return new et(e)}async toBuffer(e){return A.toBuffer(e)}},$=new tt;var be=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=a.get("socket");e.ev.on("call",async t=>{for(let r of t){let i=await this.parse(r);i&&(E.add(async()=>this.client.middleware.run({calls:i})),E.add(async()=>this.client.plugins.execute(this.client,{messages:i})),a.events.emit("calls",i),this.client.options?.autoRejectCall&&E.add(async()=>e.rejectCall(i.callId,i.callerId)));}});}async parse(e){let t=a.get("socket"),r={};return r.callId=e.id,r.callerId=jidNormalizedUser(e.from),r.roomId=jidNormalizedUser(e.chatId),r.roomName=Q(t?.user?.name||t?.user?.verifiedName),r.date=e.date,r.offline=e.offline,r.status=e.status,r.isVideo=!!e.isVideo,r.isGroup=!!e.isGroup,this.client.logs.call(r),r}};c();c();var Ft=s=>{bn.generate(s,{small:true},e=>{console.log(e);});},Bt=async()=>{console.clear(),a.spinner.start(" Checking for updates...");let s="2.1.8",e="zaadevofc",t=await It(),r=s===t;a.spinner.stop();let i="Zaileys",n=`
|
|
2
|
+
by ${e} \xB7 v${s}`,o=`${r?"Already using latest version!":`Update available! (v${t})`}
|
|
3
|
+
`,p=r?"lime":"orange",l=await wn.text(i),u=cristal(l);console.log(u),console.log(h(n,"dimgray")),console.log(h(o,p));};var xe=class{constructor(e){this.client=e;this.initialize();}async initialize(){a.spinner.start(" Initializing connection...");let e=a.get("socket"),t={},r=async()=>{t.status="reload",a.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},i=async()=>{await delay(3e3),a.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await At(this.client.options.session),await r();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){a.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let n=new Date(t.authTimeout).toLocaleTimeString(),o=await e.requestPairingCode(this.client.options.phoneNumber.toString());a.spinner.warn(` Pairing expired at ${cristal(n)}`),a.spinner.warn(` Pairing code: ${o}`),t.code=o;}catch{await i();}}e.ev.on("connection.update",async n=>{let{connection:o,lastDisconnect:p,qr:l}=n;if(t.status=o||"connecting",t.authType=this.client.options.authType,a.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let u=new Date(t.authTimeout).toLocaleTimeString();a.spinner.warn(" Please scan the QR code..."),a.spinner.warn(` Qr code expired at ${cristal(u)}`),Ft(l),t.qr=l;return}if(o==="close"){let u=x(p?.error)?.output?.statusCode,T=p?.error?.message||"",C=typeof u=="number"&&u!==DisconnectReason.loggedOut;if(a.spinner.error(` [${u} - Closed] ${T}`),u===401||u===405){a.spinner.warn(" Session may be used by another device/instance."),a.spinner.warn(" If you want to connect here, close the other connection first."),a.spinner.warn(` Or use a different session name in your Client options.
|
|
4
|
+
`);return}if(u===500){a.spinner.error(" Server error occurred, attempting reconnect..."),await r();return}C&&await r();}if(o==="open")if(e.user?.id){let u=jidNormalizedUser(e.user.id).split("@")[0],T=e.user.name||e.user.verifiedName;a.spinner.success(` Connected as ${cristal(T||u)}`);}else a.spinner.success(" Connected!");a.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:n})=>{t.status="syncing",t.syncProgress=n,a.spinner.start(" Syncing messages history..."),n&&a.spinner.update(` Syncing messages history ${n+"%"}`),n==100&&(a.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),a.events.emit("connection",t);});}};c();c();var Ot={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"},rt={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"};c();var ve=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 Se=class{constructor(e){this.client=e;this.limiter=new ve(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=a.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:r})=>{try{if(r!=="notify"&&r!=="append")return;for(let i of t)try{let n=await this.parse(i);n&&(E.add(async()=>this.client.middleware.run({messages:n})),E.add(async()=>this.client.plugins.execute(this.client,{messages:n})),a.set("message",n),a.events.emit("messages",n),this.client.options.autoRead&&E.add(async()=>e.readMessages([n.message().key])));}catch(n){console.error(`\u274C [Messages] Error processing message ${i.key?.id}:`,n);}}catch(i){console.error("\u274C [Messages] Critical error in upsert listener:",i);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let r=e,i=a.get("socket"),n={},o=he(e.message),p=o.chain.at(-1),l=o.leaf;if(l?.message&&(o=he(l.message),p=o.chain.at(-1),l=o.leaf),n.uniqueId=null,n.channelId=null,n.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,n.chatType=Ot[p],!n.chatType)return;n.receiverLid=jidNormalizedUser(i?.user?.lid||""),n.receiverId=jidNormalizedUser(i?.user?.id||""),n.receiverName=Q(i?.user?.name||i?.user?.verifiedName),n.roomId=jidNormalizedUser(e?.key?.remoteJid);let u=l?.type===0,T=l?.type===1,C=l?.type===2,M=n.roomId?.includes("@newsletter"),P=!!e?.message?.questionMessage,W=e?.key?.fromMe||false;if(W&&this.client.options.ignoreMe&&t!=="replied")return;let J=l?.key?.id;if(u||T||C){let S=await this.client.db("messages").query(n.roomId).where("key.id","=",J).first();if(!S)return;e=S,o=he(e.message),p=o.chain.at(-1),l=o.leaf;}if(n.roomName=await this.client.getRoomName(n.roomId),n.senderLid=jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid)||null,n.senderId=jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt)||null,n.senderName=Q(e?.pushName||e?.verifiedBizName),n.senderDevice=getDevice(n.chatId||""),n.channelId=ee([n.roomId,n.senderId]),n.uniqueId=ee([n.channelId,n.chatId]),n.timestamp=Number(e?.messageTimestamp)*1e3,M){let S=await i.newsletterMetadata("jid",n.roomId);n.roomName=x(S.thread_metadata.name)?.text,n.senderId=null,n.senderLid=null;}W&&(n.senderLid=jidNormalizedUser(i.user.lid),n.senderId=n.receiverId,n.senderName=n.receiverName),n.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(n.text=Je(l?.paramsJson)?.id),n.text=Q(n.text),n.mentions=Tt(n.text),n.links=Et(n.text||""),n.isBot=n.chatId.startsWith("BAE5")||n.chatId.startsWith("3EB0")||n.chatId.startsWith("Z4D3FC"),n.isFromMe=W;let K=R.castArray(this.client.options?.prefix);if(n.isPrefix=!!K.find(S=>n.text?.startsWith(S)),n.isTagMe=n.mentions?.includes(n.receiverId.split("@")[0])||n.mentions?.includes(n.receiverLid.split("@")[0]),n.isStatusMention=!!e?.message?.statusMentionMessage,n.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,n.isHideTags=false,R.isEmpty(n.text)&&l?.contextInfo?.mentionedJid?.length&&(n.isHideTags=true),n.isSpam=await this.limiter.isSpam(n.channelId),n.isPrefix&&(n.text=n.text.replace(new RegExp(`^${R.escapeRegExp(K.find(S=>n.text?.startsWith(S))||"")}`),"")),n.isGroup=n.roomId?.includes("@g.us"),n.isNewsletter=M,n.isQuestion=P,n.isStory=n.roomId?.includes("@broadcast"),!n.isGroup&&!n.roomName&&(n.roomName=n.senderName),n.isViewOnce=false,n.isEdited=!!de(me(o),"editedMessage"),n.isDeleted=u,n.isPinned=T,n.isUnPinned=C,n.isBroadcast=!!e?.broadcast,n.isEphemeral=!!de(me(l?.contextInfo),"ephemeralSettingTimestamp"),n.isForwarded=!!de(me(l?.contextInfo),"forwardingScore"),n.citation=null,this.client.options.citation){n.citation=n.citation||{};let S=this.client.options.citation;for(let _ of Object.keys(S)){let oe=S[_];n.citation[_]=async()=>{let se=await oe(),Y=[U(n.roomId),U(n.senderLid),U(n.senderId)];return !!R.intersection(Y,se).length};}}n.chatType!=="text"&&(n.media={...St(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),n.isStatusMention&&(n.chatType="statusMention"),n.isGroupStatusMention&&(n.chatType="groupStatusMention"),n.message=()=>r,n.replied=null;let v=l?.contextInfo?.quotedMessage,O=de(me(v),"viewOnce"),V=l?.contextInfo?.stanzaId;if(v&&this.maxReplies){this.maxReplies--;let S=await this.client.db("messages").getByIndex("messages","key.id",V),_;O?_={...S[0],message:v}:_=S[0],n.replied=await this.parse(_,"replied"),n.replied&&(n.replied.isViewOnce=true),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(n),n.injection=X.getAll(),n}};var Ce=class{constructor(e){this.client=e;this.connection=new xe(e),this.messages=new Se(e),this.calls=new be(e),this.initialize();}connection;messages;calls;async initialize(){let e=a.get("socket");e.ev.on("groups.update",async([t])=>{E.add(async()=>{let r=await e.groupMetadata(t.id);N.set(t.id,r);});}),e.ev.on("group-participants.update",async t=>{E.add(async()=>{let r=await e.groupMetadata(t.id);N.set(t.id,r);});}),e?.ev.on("messaging-history.set",async t=>{let{chats:r,contacts:i,messages:n}=t;E.add(async()=>{await this.client.db("chats").batchUpsert("chats",r,"id");}),E.add(async()=>{await this.client.db("contacts").batchUpsert("contacts",i,"id");}),E.add(async()=>{await this.client.db("messages").batchUpsert("messages",n,"key.id");});}),e?.ev.on("messages.upsert",async({messages:t})=>{E.add(async()=>{await this.client.db("messages").batchUpsert("messages",t,"key.id");});}),e?.ev.on("chats.upsert",async t=>{E.add(async()=>{await this.client.db("chats").batchUpsert("chats",t,"id");});}),e?.ev.on("contacts.upsert",async t=>{E.add(async()=>{await this.client.db("contacts").batchUpsert("contacts",t,"id");});}),await this.client.db("messages").createIndex("messages","key.remoteJid"),await this.client.db("messages").createIndex("messages","key.id"),await this.client.db("chats").createIndex("chats","id"),await this.client.db("contacts").createIndex("contacts","id");}};c();c();c();var Sn=m.object({type:m.literal("quick_reply"),text:m.string()}),Cn=m.object({type:m.literal("cta_url"),url:m.url(),text:m.string()}),In=m.object({type:m.literal("cta_copy"),copy:m.string(),text:m.string()}),An=m.object({type:m.literal("cta_call"),text:m.string(),phoneNumber:m.string()}),Pn=m.object({type:m.literal("single_select"),text:m.string(),section:m.object({title:m.string(),highlight_label:m.string().optional(),rows:m.object({id:m.string(),title:m.string(),header:m.string().optional(),description:m.string().optional()}).array()}).array()}),En=m.object({type:m.literal("interactive"),footer:m.string().optional(),data:m.union([Sn,Cn,In,An,Pn]).array()}),Rn=m.object({type:m.literal("simple"),footer:m.string().optional(),data:m.object({id:m.string(),text:m.string()}).array()}),Nt=m.union([Rn,En]);c();var Fn=z$1.object({maxMessages:z$1.number().default(20),durationMs:z$1.number().default(1e4)}).optional(),Bn=z$1.record(z$1.string(),z$1.function({output:z$1.promise(z$1.array(z$1.number()))})).optional(),On=z$1.object({provider:z$1.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z$1.number())}).optional(),it=z$1.enum(["default","rounded","circle","oval"]).default("default"),$n=z$1.object({packageName:z$1.string().optional(),authorName:z$1.string().optional(),quality:z$1.number().optional(),shape:it.optional()}).optional(),Nn=z$1.object({enabled:z$1.boolean().default(false).optional(),intervalMs:z$1.number().default(3600*1e3).optional(),maxAgeMs:z$1.number().default(1440*60*1e3).optional(),scopes:z$1.array(z$1.string()).default(["messages"]).optional()}).optional(),Dt=z$1.object({session:z$1.string().default("zaileys").optional(),prefix:z$1.union([z$1.string(),z$1.array(z$1.string())]).optional(),ignoreMe:z$1.boolean().default(true).optional(),showLogs:z$1.boolean().default(true).optional(),fancyLogs:z$1.boolean().default(false).optional(),syncFullHistory:z$1.boolean().default(true).optional(),disableFFmpeg:z$1.boolean().default(false).optional(),autoMarkAI:z$1.boolean().default(true).optional(),autoMentions:z$1.boolean().default(true).optional(),autoOnline:z$1.boolean().default(true).optional(),autoRead:z$1.boolean().default(true).optional(),autoPresence:z$1.boolean().default(true).optional(),autoRejectCall:z$1.boolean().default(true).optional(),autoCleanUp:Nn,limiter:Fn,citation:Bn,fakeReply:On,sticker:$n}),Dn=z$1.object({authType:z$1.literal("pairing"),phoneNumber:z$1.number()}),Wn=z$1.object({authType:z$1.literal("qr")}),Wt=z$1.union([Dn.extend(Dt.shape),Wn.extend(Dt.shape)]),Is=z$1.enum(["connection","messages","calls"]);var fe=m.url().or(m.base64()).or(m.instanceof(Buffer)),_t=m.object({text:m.string()}).passthrough(),_n=m.object({image:fe,caption:m.string().optional()}).passthrough(),jn=m.object({audio:fe,caption:m.string().optional(),ptt:m.boolean().optional()}).passthrough(),Ln=m.object({video:fe,caption:m.string().optional(),ptv:m.boolean().optional()}).passthrough(),zn=m.object({sticker:fe,shape:it.optional(),caption:m.string().optional()}).passthrough(),Un=m.object({document:fe,caption:m.string().optional(),fileName:m.string().optional()}).passthrough(),qn=m.object({location:m.object({latitude:m.number(),longitude:m.number(),url:m.url().optional(),title:m.string().optional(),footer:m.string().optional()}).optional()}).passthrough(),Vn=m.object({contacts:m.object({title:m.string().optional(),contacts:m.object({fullname:m.string(),phoneNumber:m.number(),organization:m.string().optional()}).array()})}).passthrough(),Gn=m.object({poll:m.object({name:m.string(),answers:m.string().array(),isMultiple:m.boolean().default(false).optional()})}),jt=m.object({replied:m.custom().optional(),isForwardedMany:m.boolean().optional(),isViewOnce:m.boolean().optional(),banner:m.custom().optional(),buttons:Nt.optional()});m.enum(["forward","button","edit","delete"]);var Jn=m.union([_t,_n,jn,Ln,zn,Un,qn,Vn,Gn]),Lt=m.string().or(m.intersection(Jn,jt.omit({buttons:true}))),zt=m.intersection(_t,jt.omit({banner:true}));c();var Ie=class{toNativeSimple(e){return e.map(({id:t,text:r})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:r,id:t})}))}toNativeInteractive(e){let t={quick_reply:r=>({display_text:r.text,id:r.id}),cta_url:r=>({display_text:r.text,url:r.url,merchant_url:r.url}),cta_copy:r=>({display_text:r.text,id:r.id,copy_code:r.copy}),cta_call:r=>({display_text:r.text,phone_number:r.phoneNumber}),single_select:r=>({title:r.text,sections:r.section})};return e.map(r=>({name:r.type,buttonParamsJson:JSON.stringify(t[r.type](r))}))}build(e){let t=x(e).buttons,r=t?.data||[],n=t?.type=="simple"?this.toNativeSimple(r):this.toNativeInteractive(r);return {body:{text:x(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:n}}}async send(e,t,r){let i=a.get("socket"),n=i?.authState?.creds?.me?.id||i?.user?.id,o=this.build(t),p=generateWAMessageFromContent(e,{interactiveMessage:o},{userJid:n,messageId:generateMessageIDV2(n),...r});return await i.relayMessage(e,p.message,{messageId:p.key.id,...r,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),i.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>i.upsertMessage?.(p,"append")),p}};var Ae=class{constructor(e){this.client=e;}async signal(e,t,r,i){r!="delete"&&(r=="button"?t=ue(zt,t):t=ue(Lt,t));let n=a.get("socket"),o={},p={},l=R.isString(t),u=this.client.options?.fakeReply?.provider,T=this.client.options?.autoMentions,C=this.client.options?.autoPresence,M=R.has(t,"replied"),P=R.has(t,"banner"),W=R.has(t,"isViewOnce"),J=r=="button",K=R.has(t,"image"),v=R.has(t,"video"),O=R.has(t,"audio"),V=R.has(t,"sticker"),S=R.has(t,"document"),_=R.has(t,"location"),oe=R.has(t,"contacts"),se=R.has(t,"poll"),Y=K||v||O||V||S,H=l?t:Ke([t],["text","caption"]);if(C&&(O?await n.sendPresenceUpdate("recording",e):await n.sendPresenceUpdate("composing",e)),T&&(o={...o,mentions:Ve(H),contextInfo:{mentionedJid:Ve(H)}}),M&&(p.quoted=x(t).replied,u&&(p.quoted.key.remoteJid=rt[u],p.quoted.key.participant=rt[u])),P&&(o={...o,contextInfo:{externalAdReply:x(t).banner}},o.contextInfo.externalAdReply.mediaType=1),W&&(o={...o,viewOnce:x(t)?.isViewOnce}),H&&(o={...o,text:H,caption:H},Y&&delete x(o).text),Y){let I=Ke([t],["image","video","audio","sticker","document"]);if(K&&(o={...o,image:await $.image(I).toJpeg(),jpegThumbnail:await $.thumbnail(I).get()}),v){let j=x(t)?.ptv;o={...o,video:await $.video(I).toMp4(),ptv:j,jpegThumbnail:await $.thumbnail(I).get()};}if(O){let j=x(t)?.ptt;o={...o,audio:await $.audio(I).toOpus(),ptt:j,mimetype:j?"audio/ogg; codecs=opus":"audio/mpeg"};}if(V){let j=x(t)?.shape;o={...o,sticker:await $.sticker(I,{...this.client.options?.sticker,shape:j}).create()};}if(S){let j=await $.document(I).create();o={...o,fileName:x(t).fileName,...j};}}if(_){let I=x(t).location;o={...o,location:{degreesLatitude:I.latitude,degreesLongitude:I.longitude,url:I.url,address:I.footer,name:I.title}};}if(oe){let I=x(t)?.contacts,j=I?.contacts.map(ae=>{let Vt=["BEGIN:VCARD","VERSION:3.0",`FN:${ae.fullname}`,`ORG:${ae.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${ae.phoneNumber}:${ae.phoneNumber}`,"END:VCARD"].join(`
|
|
5
|
+
`);return {displayName:ae.fullname,vcard:Vt}});o={...o,contacts:{displayName:I?.title,contacts:j}};}if(se){let I=x(t)?.poll;o={...o,poll:{name:I.name,values:I.answers,selectableCount:I.isMultiple?1:0,toAnnouncementGroup:true}};}return r=="forward"&&(o={...o,contextInfo:{...x(o).contextInfo,isForwarded:true,forwardingScore:x(t).isForwardedMany?9999:1}}),r=="edit"&&(o={...o,edit:i?.key},await n.sendPresenceUpdate("paused",e)),r=="delete"&&(o={...o,delete:i?.key},await n.sendPresenceUpdate("paused",e)),J?await new Ie().send(e,t,p):await n.sendMessage(e,x(o),p)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return R.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let r=a.get("socket"),i={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await r.sendPresenceUpdate(i[t],e)}async reaction(e,t){return await a.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await a.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};c();var ot=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").communityCreate(e,t)}async createGroup(e,t,r){return await a.get("socket").communityCreateGroup(e,t,r)}async leave(e){return await a.get("socket").communityLeave(e)}async metadata(e){return await a.get("socket").communityMetadata(e)}async update(e,t,r){let i=a.get("socket");switch(t){case "subject":return await i.communityUpdateSubject(e,r);case "description":return await i.communityUpdateDescription(e,r)}}async group(e,t,r){let i=a.get("socket");switch(t){case "link":if(!r)throw "Group JID is required for linking";return await i.communityLinkGroup(e,r);case "unlink":if(!r)throw "Group JID is required for unlinking";return await i.communityUnlinkGroup(e,r);case "linked":return await i.communityFetchLinkedGroups(e)}}async participants(e,t,r,i){let n=a.get("socket");switch(t){case "list":return await n.communityRequestParticipantsList(e);case "request-update":return await n.communityRequestParticipantsUpdate(e,i,x(r));case "update":if(!r||!i)throw "Action and participants are required for update";return await n.communityParticipantsUpdate(e,i,x(r));case "all":return await n.communityFetchAllParticipating()}}async invite(e,t,...r){let i=a.get("socket");switch(t){case "code":return await i.communityInviteCode(e);case "revoke":return await i.communityRevokeInvite(e);case "accept":return await i.communityAcceptInvite(e);case "info":return await i.communityGetInviteInfo(e);case "revokeV4":return await i.communityRevokeInviteV4(e,r[0]);case "acceptV4":return await i.communityAcceptInviteV4(e,r[0])}}async settings(e,t,r){let i=a.get("socket");switch(t){case "ephemeral":return await i.communityToggleEphemeral(e,r);case "update":return await i.communitySettingUpdate(e,r);case "memberAdd":return await i.communityMemberAddMode(e,r);case "approval":return await i.communityJoinApprovalMode(e,r)}}},Pe=class{constructor(e){this.mlient=e;this.community=new ot(e);}community};c();var st=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").groupCreate(e,t)}async participant(e,t,r){return await a.get("socket").groupParticipantsUpdate(e,t,r)}async profile(e,t,r){let i=a.get("socket"),n=Buffer.isBuffer(t);switch(r){case "subject":if(!n)return await i.groupUpdateSubject(e,t);case "description":if(!n)return await i.groupUpdateDescription(e,t);case "picture":return await i.updateProfilePicture(e,await $.toBuffer(t))}}async setting(e,t){let r=a.get("socket");switch(t){case "open":return await r.groupSettingUpdate(e,"not_announcement");case "close":return await r.groupSettingUpdate(e,"announcement");case "locked":return await r.groupSettingUpdate(e,t);case "unlocked":return await r.groupSettingUpdate(e,t);case "all_member_add":return await r.groupMemberAddMode(e,t);case "admin_add":return await r.groupMemberAddMode(e,t)}}async leave(e){return await a.get("socket").groupLeave(e)}async inviteCode(e,t){let r=a.get("socket");switch(t){case "code":return await r.groupInviteCode(e);case "revoke":return await r.groupRevokeInvite(e);case "accept":return await r.groupAcceptInvite(e);case "info":return await r.groupGetInviteInfo(e)}}async metadata(e){let t=a.get("socket"),r=N.get(e);if(r)return r;let i=await t.groupMetadata(e);return i&&N.set(e,i),i}async requestJoin(e,t,r){let i=a.get("socket");switch(r){case "approve":return await i.groupRequestParticipantsUpdate(e,t,r);case "reject":return await i.groupRequestParticipantsUpdate(e,t,r)}}async requestJoinList(e){return await a.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await a.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let r=a.get("socket"),i={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await r.groupToggleEphemeral(e,i[t])}},Ee=class{constructor(e){this.glient=e;this.group=new st(e);}group};c();var at=class{constructor(e){this.client=e;}async create(e,t){return await a.get("socket").newsletterCreate(e,t)}async action(e,t){let r=a.get("socket");switch(t){case "follow":return await r.newsletterFollow(e);case "unfollow":return await r.newsletterUnfollow(e);case "mute":return await r.newsletterMute(e);case "unmute":return await r.newsletterUnmute(e);}}async update(e,t,r){let i=a.get("socket"),n=Buffer.isBuffer(t);switch(r){case "name":if(!n)return await i.newsletterUpdateName(e,t);case "description":if(!n)return await i.newsletterUpdateDescription(e,t);case "picture":return await i.newsletterUpdatePicture(e,await $.toBuffer(t))}}async metadata(e,t){return await a.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await a.get("socket").newsletterSubscribers(e)}async reaction(e,t,r){return await a.get("socket").newsletterReactMessage(e,t,r)}async fetchMessages(e,t,r,i){let n=a.get("socket"),o=r.getTime()/1e3,p=i.getTime()/1e3;return await n.newsletterFetchMessages(e,t,o,p)}async adminCount(e){return await a.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await a.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await a.get("socket").newsletterDemote(e,t)}async delete(e){return await a.get("socket").newsletterDelete(e)}async removePicture(e){return await a.get("socket").newsletterRemovePicture(e)}},Re=class{constructor(e){this.nlient=e;this.newsletter=new at(e);}newsletter};c();var ct=class{constructor(e){this.client=e;}async block(e){return await a.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await a.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await a.get("socket").updateLastSeenPrivacy(e)}async online(e){return await a.get("socket").updateOnlinePrivacy(e)}async picture(e){return await a.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await a.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await a.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await a.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=a.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(r[e])}async blocklist(){return await a.get("socket").fetchBlocklist()}async getSettings(){return await a.get("socket").fetchPrivacySettings(true)}},Fe=class{constructor(e){this.plient=e;this.privacy=new ct(e);}privacy};c();c();var wa=m.object({status:m.enum(["connecting","open","close","reload","syncing"]),authType:m.enum(["pairing","qr"]),authTimeout:m.number().optional(),syncProgress:m.number().optional(),syncCompleted:m.boolean().default(false).optional(),qr:m.string().optional(),code:m.string().optional()});c();var Yn=m.enum(["unknown","android","ios","desktop","web"]),Xn=m.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Ut=m.object({channelId:m.string(),uniqueId:m.string(),chatId:m.string(),chatType:Xn,receiverLid:m.string(),receiverId:m.string(),receiverName:m.string(),roomId:m.string(),roomName:m.string(),senderLid:m.string(),senderId:m.string(),senderName:m.string(),senderDevice:Yn,timestamp:m.number(),text:m.string().nullable(),mentions:m.string().array(),links:m.string().array(),isBot:m.boolean(),isFromMe:m.boolean(),isPrefix:m.boolean(),isSpam:m.boolean(),isTagMe:m.boolean(),isStatusMention:m.boolean(),isGroupStatusMention:m.boolean(),isHideTags:m.boolean(),isGroup:m.boolean(),isNewsletter:m.boolean(),isQuestion:m.boolean(),isStory:m.boolean(),isViewOnce:m.boolean(),isEdited:m.boolean(),isDeleted:m.boolean(),isPinned:m.boolean(),isUnPinned:m.boolean(),isBroadcast:m.boolean(),isEphemeral:m.boolean(),isForwarded:m.boolean(),citation:m.record(m.string(),m.function({output:m.promise(m.boolean())})).nullable(),media:m.object({buffer:m.function({output:m.promise(m.instanceof(Buffer))}),stream:m.function({output:m.promise(m.instanceof(Zn))})}).loose().nullable(),injection:m.record(m.string(),m.any()).default({}),message:m.function({input:[],output:m.custom()})}),va=Ut.extend({replied:Ut.nullable()});c();var Ia=m.object({callId:m.string(),callerId:m.string(),roomId:m.string(),roomName:m.string(),date:m.date(),offline:m.boolean(),status:m.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:m.boolean(),isGroup:m.boolean()});c();var Be=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};a.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),a.spinner.info("Logs Indicator:"),console.log(h(" \u2022","orange")+" Private Chat"),console.log(h(" \u2022","lime")+" Group Chat"),console.log(h(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=x(this.getRoomColor(e)),r=e?.text?.toLowerCase()?.match("zaileys"),i=this.client.options?.fancyLogs,n=h(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),o=h(`${e?.roomName}`,t),p=e?.text?.slice(0,300)||"",l=p?.length>=300?"...":"";if(i){let u=h("\u2501".repeat(50),"dimgray"),T=h("\u2192","dimgray"),C=h("\u2022",t),M=`
|
|
6
|
+
${u}
|
|
7
|
+
`;M+=`${C} ${n} ${T} ${o}
|
|
8
|
+
`,e?.isNewsletter?(M+=` ${h("\u{1F4E2} Room:","dimgray")} ${h(`${e?.roomName}`,t)}
|
|
9
|
+
`,M+=` ${h("\u{1F194} ID:","dimgray")} ${h(`${U(e?.roomId)}`,"gray")}
|
|
10
|
+
`):(M+=` ${h("\u{1F464} Sender:","dimgray")} ${h(`${e?.senderName}`,t)}
|
|
11
|
+
`,M+=` ${h("\u{1F194} ID:","dimgray")} ${h(`${U(e?.senderId)}`,"gray")}
|
|
12
|
+
`,e?.isGroup&&(M+=` ${h("\u{1F3E0} Group:","dimgray")} ${h(`${e?.roomName}`,"lime")}
|
|
13
|
+
`)),M+=` ${h("\u{1F4DD} Type:","dimgray")} ${h(`${e?.chatType||"text"}`,"cyan")}
|
|
14
|
+
`,M+=` ${h("\u{1F4AC} Text:","dimgray")} ${h(p+l,r?["#ff5f6d","#ffc371"]:"brown")}
|
|
15
|
+
`,e?.isSpam&&(M+=` ${h("\u26A0\uFE0F Spam:","dimgray")} ${h("Yes","red")}
|
|
16
|
+
`),e?.isForwarded&&(M+=` ${h("\u21AA\uFE0F Forwarded:","dimgray")} ${h("Yes","yellow")}
|
|
17
|
+
`),e?.isEdited&&(M+=` ${h("\u270F\uFE0F Edited:","dimgray")} ${h("Yes","yellow")}
|
|
18
|
+
`),M+=`${u}`,console.log(M);}else {let u=`${n} \u2192 ${o}
|
|
19
|
+
`;e?.isNewsletter?u+=`${h("[room]","dimgray")} \u2192 ${h(`${e?.roomName} (${U(e?.roomId)})`,t)}
|
|
20
|
+
`:u+=`${h("[sender]","dimgray")} \u2192 ${h(`${e?.senderName} (${U(e?.senderId)})`,t)}
|
|
21
|
+
`,u+=`${h(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${h(p+l,r?["#ff5f6d","#ffc371"]:"brown")}
|
|
22
|
+
`,u+="\u2014",console.log(u);}}call(e){if(!this.isReady)return;let t=x(this.getRoomColor(e)),r=h(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),i=h(`${e?.roomName}`,t),n=`${r} \u2192 ${i}
|
|
23
|
+
`;n+=`${h("[caller]","dimgray")} \u2192 ${h(`${e?.callerId} (${U(e?.callerId)})`,t)}
|
|
24
|
+
`,n+=`${h(`[${e?.status}]`,"dimgray")} \u2192 ${h(e?.isVideo?"Video Call":"Voice Call","brown")}
|
|
25
|
+
`,n+="\u2014",console.log(n);}};c();var Oe=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,r=async i=>{if(i<=t)throw "next() called multiple times";t=i;let n=this.stack[i];if(n)try{await n(e,()=>r(i+1));}catch(o){throw console.error("Middleware error:",o),o}};await r(0);}};c();var $e=class{constructor(e){this.client=e;}interval=null;start(){let e=this.client.options.autoCleanUp;e?.enabled&&(this.interval=setInterval(()=>{this.run();},e.intervalMs),this.run());}stop(){this.interval&&(clearInterval(this.interval),this.interval=null);}async run(){let e=this.client.options.autoCleanUp;if(!e?.enabled)return;let t=Date.now()-e.maxAgeMs;for(let r of e.scopes)try{let i=this.client.db(r),n=await i.query(r).where("timestamp","<",t).get();if(n.length>0){let o=n.map(p=>p.key?.id||p.id);await i.batchDelete(o),a.spinner.info(` [CleanUpManager] Cleaned up ${n.length} items from ${r}`);}}catch{}}};c();var Ne=class{constructor(e){this.client=e;this.keysDb=ge(e.options.session),this.setupLogFilters();}keysDb;setupLogFilters(){let e=console.error,t=console.log,r=i=>{let n=i.join(" ");return ["Bad MAC","Session error:","Closing open session in favor of incoming prekey bundle","Error: Bad MAC"].some(p=>n.includes(p))};console.error=(...i)=>{r(i)||e.apply(console,i);},console.log=(...i)=>{r(i)||t.apply(console,i);};}async repair(e){if(!e)return;let t=[`session:${e}`,`sender-key:${e}`];try{await this.keysDb.batchDelete(t),await this.keysDb.flush(),a.spinner.warn(` [HealthManager] Repaired session for ${e} due to Bad MAC`);}catch{}}get logger(){return Qt({level:"debug"},{write:e=>{try{let t=JSON.parse(e);if(t.msg?.includes("Bad MAC")){let r=t.jid||t.remoteJid;r&&this.repair(r);}}catch{}}})}};c();var We=class{plugins=[];pluginsDir;globalEnabled=true;disabledPlugins=new Set;constructor(e=te.join(process.cwd(),"plugins")){this.pluginsDir=e;}async getAllFiles(e,t=e){try{await De.promises.access(e);}catch{return []}let r=await De.promises.readdir(e,{withFileTypes:true});return (await Promise.all(r.map(async n=>{let o=te.join(e,n.name);if(n.isDirectory())return this.getAllFiles(o,t);if((n.name.endsWith(".ts")||n.name.endsWith(".js"))&&!n.name.endsWith(".d.ts")){let l=te.relative(t,e),u=l===""?null:l.split(te.sep)[0];return [{filePath:o,parent:u}]}return []}))).flat()}async load(){try{await De.promises.access(this.pluginsDir);}catch{return}let e=await this.getAllFiles(this.pluginsDir),t=await Promise.all(e.map(async({filePath:r,parent:i})=>{try{let o=(await import(pathToFileURL(r).href)).default;if(o?.default&&(o=o.default),o?.handler&&o?.config){let p=this.getPluginId(o.config.matcher);return {...o,parent:i,enabled:!this.disabledPlugins.has(p)}}}catch{}return null}));this.plugins=t.filter(r=>r!==null);}getPluginId(e){return e.map(t=>t.toString()).join("|")}async execute(e,t){if(!this.globalEnabled)return;let r=t.messages.text||"";for(let i of this.plugins)if(i.enabled)try{this.match(r,i.config.matcher)&&await i.handler(e,t);}catch{}}match(e,t){return t.some(r=>r instanceof RegExp?r.test(e):e===r||e.startsWith(r+" "))}enableAll(){this.globalEnabled=true,this.plugins.forEach(e=>e.enabled=true),this.disabledPlugins.clear();}disableAll(){this.globalEnabled=false;}enable(e){let t=e.toString(),r=this.plugins.find(i=>i.config.matcher.some(n=>n.toString()===t));return r?(r.enabled=true,this.disabledPlugins.delete(this.getPluginId(r.config.matcher)),true):false}disable(e){let t=e.toString(),r=this.plugins.find(i=>i.config.matcher.some(n=>n.toString()===t));return r?(r.enabled=false,this.disabledPlugins.add(this.getPluginId(r.config.matcher)),true):false}enableByParent(e){let t=0;return this.plugins.forEach(r=>{r.parent===e&&(r.enabled=true,this.disabledPlugins.delete(this.getPluginId(r.config.matcher)),t++);}),t}disableByParent(e){let t=0;return this.plugins.forEach(r=>{r.parent===e&&(r.enabled=false,this.disabledPlugins.add(this.getPluginId(r.config.matcher)),t++);}),t}isEnabled(){return this.globalEnabled}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata,parent:e.parent,enabled:e.enabled}))}async reload(){this.plugins=[],await this.load();}},Ya=(s,e)=>({handler:s,config:e});var qt=class{constructor(e){this.options=e;this.options=ue(Wt,e);let t=new ne().classInjection(this,[new Ae(this),new Ee(this),new Fe(this),new Re(this),new Pe(this)]);return this._ready=this.initialize(t),t}_ready;logs;middleware=new Oe;plugins=new We;health;cleanup;async initialize(e){await Bt(),await qe(this.options.disableFFmpeg),this.health=new Ne(this),this.cleanup=new $e(this),this.options.autoCleanUp?.enabled&&this.cleanup.start(),await kt(this),await this.plugins.load(),new Ce(e||this),this.logs||(this.logs=new Be(this));}ready(){return this._ready}db(e){return ut(this.options.session,e)}on(e,t){a.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return a.get("socket")}async getRoomName(e){let t=a.get("socket"),r=e.endsWith("@g.us"),i=null;if(r){let n=N.get(e);if(n)i=n.subject;else {let o=await t.groupMetadata(e);o&&(N.set(e,o),i=o.subject);}}return Q(i)}inject(e,t){X.inject(e,t);}getInjection(e){return X.getSync(e)}removeInjection(e){X.remove(e);}clearInjections(){X.clear();}};
|
|
14
26
|
/*
|
|
15
27
|
* Copyright (c) 2025 zaadevofc.
|
|
16
28
|
* All rights reserved.
|
|
@@ -18,7 +30,7 @@ by ${e} \xB7 v${a}`,r=`${n?"Already using latest version!":`Update available! (v
|
|
|
18
30
|
* See LICENSE file for details.
|
|
19
31
|
|
|
20
32
|
* Author: zaadevofc
|
|
21
|
-
* Last build time: 12/
|
|
33
|
+
* Last build time: 12/23/2025 9:25:08 AM
|
|
22
34
|
*
|
|
23
35
|
* Repository: git+https://github.com/zeative/zaileys.git
|
|
24
|
-
*/export{
|
|
36
|
+
*/export{Ut as BaseMessagesType,An as ButtonInteractiveCallType,In as ButtonInteractiveCopyType,Sn as ButtonInteractiveReplyType,Pn as ButtonInteractiveSingleSelectType,En as ButtonInteractiveType,Cn as ButtonInteractiveUrlType,Rn as ButtonSimpleType,Nt as ButtonType,Bn as CitationType,qt as Client,Dn as ClientAuthPairingType,Wn as ClientAuthQRType,Dt as ClientBaseType,Wt as ClientOptionsType,Yn as DEVICE_ENUM_TYPES,Is as EventEnumType,On as FakeReplyType,Fn as LimiterType,Ia as ListenerCallsType,wa as ListenerConnectionType,va as ListenerMessagesType,Xn as MESSAGE_ENUM_TYPES,tt as MediaModifier,We as Plugins,$n as StickerMetadataType,it as StickerShapeType,Nn as autoCleanUp,U as cleanJid,St as cleanMediaObject,Ya as definePlugins,Ve as extractJids,Et as extractUrls,de as findGlobalWord,mo as findNestedByKeys,ee as generateId,he as getDeepContent,It as getLatestLibVersion,Tt as getUsersMentions,x as ignoreLint,h as logColor,$ as mediaModifier,fo as modifyFn,Q as normalizeText,vi as numbersToJids,Ke as pickKeysFromArray,uo as randomize,kt as registerAuthCreds,At as removeAuthCreds,lo as shuffleString,Je as toJson,me as toString,yt as useAuthState};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zaileys",
|
|
3
3
|
"description": "Zaileys - Simplified WhatsApp Node.js TypeScript/JavaScript API",
|
|
4
|
-
"version": "2.1.
|
|
4
|
+
"version": "2.1.9",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.mjs",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"javascript-typescript"
|
|
33
33
|
],
|
|
34
34
|
"scripts": {
|
|
35
|
-
"
|
|
35
|
+
"dev": "tsx --watch examples/test.ts",
|
|
36
36
|
"build": "tsup",
|
|
37
37
|
"r:patch": "npm run build && npm version patch && npm publish",
|
|
38
38
|
"r:minor": "npm run build && npm version minor && npm publish",
|
|
@@ -54,12 +54,13 @@
|
|
|
54
54
|
"@ffprobe-installer/ffprobe": "^2.1.2",
|
|
55
55
|
"async-mutex": "^0.5.0",
|
|
56
56
|
"audio-decode": "^2.2.3",
|
|
57
|
-
"baileys": "7.0.0-rc.9",
|
|
57
|
+
"baileys": "^7.0.0-rc.9",
|
|
58
58
|
"figlet": "^1.9.4",
|
|
59
59
|
"file-type": "^21.1.1",
|
|
60
60
|
"fluent-ffmpeg": "^2.1.3",
|
|
61
61
|
"gradient-string": "^3.0.0",
|
|
62
62
|
"jetdb": "^1.1.0",
|
|
63
|
+
"jimp": "^1.6.0",
|
|
63
64
|
"lodash": "^4.17.21",
|
|
64
65
|
"nanospinner": "^1.2.2",
|
|
65
66
|
"node-cache": "^5.1.2",
|
|
@@ -67,9 +68,9 @@
|
|
|
67
68
|
"pino": "^10.1.0",
|
|
68
69
|
"qrcode-terminal": "^0.12.0",
|
|
69
70
|
"rate-limiter-flexible": "^9.0.0",
|
|
70
|
-
"sharp": "^0.34.5",
|
|
71
71
|
"unorm": "^1.6.0",
|
|
72
|
-
"zod": "^4.1.13"
|
|
72
|
+
"zod": "^4.1.13",
|
|
73
|
+
"zod-validation-error": "^5.0.0"
|
|
73
74
|
},
|
|
74
75
|
"packageManager": "pnpm@10.24.0",
|
|
75
76
|
"engines": {
|