zaileys 2.0.6 â 2.0.8
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 +10 -2
- package/dist/index.d.mts +48 -2
- package/dist/index.d.ts +48 -2
- package/dist/index.js +15 -15
- package/dist/index.mjs +15 -15
- package/package.json +1 -1
package/README.MD
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
<a href="https://github.com/zeative/zaileys"><img src="https://img.shields.io/github/stars/zeative/zaileys" alt="GitHub Stars"></a>
|
|
16
16
|
<a href="https://github.com/zeative/zaileys"><img src="https://img.shields.io/github/forks/zeative/zaileys" alt="GitHub Forks"></a>
|
|
17
17
|
<a href="https://github.com/zeative/zaileys"><img src="https://img.shields.io/github/watchers/zeative/zaileys" alt="GitHub Watchers"></a>
|
|
18
|
+
[](https://deepwiki.com/zeative/zaileys)
|
|
18
19
|
|
|
19
20
|
</div>
|
|
20
21
|
|
|
@@ -31,6 +32,7 @@
|
|
|
31
32
|
[ð Overview](#-overview) âĒ
|
|
32
33
|
[ðŠķ Features](#-features) âĒ
|
|
33
34
|
[ðĶ Installation](#-installation) âĒ
|
|
35
|
+
[ð Starter Kit](#-starter-kit) âĒ
|
|
34
36
|
[⥠Quick Start](#-quick-start) âĒ
|
|
35
37
|
[ð§Đ Plugins](#-plugins) âĒ
|
|
36
38
|
[ðĻ Sending Messages](#-sending-messages) âĒ
|
|
@@ -95,6 +97,12 @@ yarn add zaileys
|
|
|
95
97
|
|
|
96
98
|
> **FFmpeg**: No need to install FFmpeg separately! It's already bundled with Zaileys for seamless media processing (audio, video, stickers).
|
|
97
99
|
|
|
100
|
+
## ð Starter Kit
|
|
101
|
+
|
|
102
|
+
Prefer a ready-to-run setup? We provide an official **Starter Kit** that includes a fully configured environment, example commands, and best practices.
|
|
103
|
+
|
|
104
|
+
ð [**Zaileys Example**](https://github.com/zeative/starter-zaileys)
|
|
105
|
+
|
|
98
106
|
## ⥠Quick Start
|
|
99
107
|
|
|
100
108
|
Here is a minimal example to get your bot running with QR code authentication:
|
|
@@ -982,7 +990,7 @@ Contributions are welcome! Please follow these steps:
|
|
|
982
990
|
4. Push to the branch: `git push origin feature/my-feature`.
|
|
983
991
|
5. Open Pull Request.
|
|
984
992
|
|
|
985
|
-
|
|
993
|
+
## ðŊ Issues & Feedback
|
|
986
994
|
|
|
987
995
|
**If you encounter any problems or have feature requests, please open an [issue](https://github.com/zeative/zaileys/issues)**
|
|
988
996
|
|
|
@@ -991,6 +999,6 @@ Contributions are welcome! Please follow these steps:
|
|
|
991
999
|
- [Trakteer](https://trakteer.id/zaadevofc)
|
|
992
1000
|
- â Star the repo on GitHub
|
|
993
1001
|
|
|
994
|
-
|
|
1002
|
+
## ð License
|
|
995
1003
|
|
|
996
1004
|
Distributed under the **MIT License**. See [`LICENSE`](https://github.com/zeative/zaileys/blob/main/LICENSE) for details.
|
package/dist/index.d.mts
CHANGED
|
@@ -397,7 +397,8 @@ declare class MessageCollector {
|
|
|
397
397
|
declare class Logs {
|
|
398
398
|
private client;
|
|
399
399
|
private logsInitialized;
|
|
400
|
-
private
|
|
400
|
+
private logsDisplayed;
|
|
401
|
+
private isReady;
|
|
401
402
|
constructor(client: Client);
|
|
402
403
|
getRoomColor(validator: any): "lime" | "orange" | "dimgray" | "blue";
|
|
403
404
|
initialize(): void;
|
|
@@ -431,6 +432,10 @@ declare class Plugins {
|
|
|
431
432
|
private plugins;
|
|
432
433
|
private pluginsDir;
|
|
433
434
|
constructor(pluginsDir?: string);
|
|
435
|
+
/**
|
|
436
|
+
* Rekursif membaca semua file di direktori dan subdirektori
|
|
437
|
+
*/
|
|
438
|
+
private getAllFiles;
|
|
434
439
|
load(): Promise<void>;
|
|
435
440
|
execute(wa: Client, ctx: MiddlewareContextType): Promise<void>;
|
|
436
441
|
private match;
|
|
@@ -532,12 +537,15 @@ declare class Client {
|
|
|
532
537
|
options: z.infer<typeof ClientOptionsType>;
|
|
533
538
|
private listener;
|
|
534
539
|
private _ready;
|
|
540
|
+
private watchdog;
|
|
535
541
|
logs: Logs;
|
|
536
542
|
collector: MessageCollector;
|
|
537
543
|
middleware: Middleware<any>;
|
|
538
544
|
plugins: Plugins;
|
|
539
545
|
constructor(options: z.infer<typeof ClientOptionsType>);
|
|
540
546
|
initialize(client?: Client): Promise<void>;
|
|
547
|
+
private prekeyDetected;
|
|
548
|
+
private setupPrekeyErrorDetection;
|
|
541
549
|
ready(): Promise<void>;
|
|
542
550
|
db(path: string): Lowdb;
|
|
543
551
|
on<T extends z.infer<typeof EventEnumType>>(event: T, handler: EventCallbackType[T]): void;
|
|
@@ -733,4 +741,42 @@ declare const getMediaThumbnail: any;
|
|
|
733
741
|
declare const getWaSticker: any;
|
|
734
742
|
declare const getWaDocument: any;
|
|
735
743
|
|
|
736
|
-
|
|
744
|
+
type WASocket = {
|
|
745
|
+
ev?: {
|
|
746
|
+
removeAllListeners: () => void;
|
|
747
|
+
};
|
|
748
|
+
end?: (reason?: Error) => void;
|
|
749
|
+
};
|
|
750
|
+
declare const cleanupSocket: (socket: WASocket) => void;
|
|
751
|
+
declare const repairSessionKeys: (session: string) => Promise<void>;
|
|
752
|
+
declare const getExistingSocket: () => WASocket | null;
|
|
753
|
+
|
|
754
|
+
type WatchdogOptions = {
|
|
755
|
+
session: string;
|
|
756
|
+
checkIntervalMs?: number;
|
|
757
|
+
staleThresholdMs?: number;
|
|
758
|
+
cooldownMs?: number;
|
|
759
|
+
maxRetries?: number;
|
|
760
|
+
onRecovery?: () => Promise<void>;
|
|
761
|
+
};
|
|
762
|
+
declare class SessionWatchdog {
|
|
763
|
+
private lastActivityTime;
|
|
764
|
+
private lastRecoveryTime;
|
|
765
|
+
private checkInterval;
|
|
766
|
+
private isRecovering;
|
|
767
|
+
private retryCount;
|
|
768
|
+
private options;
|
|
769
|
+
constructor(options: WatchdogOptions);
|
|
770
|
+
start(): void;
|
|
771
|
+
stop(): void;
|
|
772
|
+
touch(): void;
|
|
773
|
+
private setupActivityListeners;
|
|
774
|
+
private check;
|
|
775
|
+
private isInCooldown;
|
|
776
|
+
private recover;
|
|
777
|
+
forceRecovery(): Promise<void>;
|
|
778
|
+
}
|
|
779
|
+
declare const createWatchdog: (options: WatchdogOptions) => SessionWatchdog;
|
|
780
|
+
declare const getWatchdog: () => SessionWatchdog | null;
|
|
781
|
+
|
|
782
|
+
export { AudioProcessor, type AudioType, Client, DocumentProcessor, ImageProcessor, Lowdb, MediaProcessor, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, SessionWatchdog, StickerProcessor, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, createLowdb, createWatchdog, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaSticker, getWatchdog, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
|
package/dist/index.d.ts
CHANGED
|
@@ -397,7 +397,8 @@ declare class MessageCollector {
|
|
|
397
397
|
declare class Logs {
|
|
398
398
|
private client;
|
|
399
399
|
private logsInitialized;
|
|
400
|
-
private
|
|
400
|
+
private logsDisplayed;
|
|
401
|
+
private isReady;
|
|
401
402
|
constructor(client: Client);
|
|
402
403
|
getRoomColor(validator: any): "lime" | "orange" | "dimgray" | "blue";
|
|
403
404
|
initialize(): void;
|
|
@@ -431,6 +432,10 @@ declare class Plugins {
|
|
|
431
432
|
private plugins;
|
|
432
433
|
private pluginsDir;
|
|
433
434
|
constructor(pluginsDir?: string);
|
|
435
|
+
/**
|
|
436
|
+
* Rekursif membaca semua file di direktori dan subdirektori
|
|
437
|
+
*/
|
|
438
|
+
private getAllFiles;
|
|
434
439
|
load(): Promise<void>;
|
|
435
440
|
execute(wa: Client, ctx: MiddlewareContextType): Promise<void>;
|
|
436
441
|
private match;
|
|
@@ -532,12 +537,15 @@ declare class Client {
|
|
|
532
537
|
options: z.infer<typeof ClientOptionsType>;
|
|
533
538
|
private listener;
|
|
534
539
|
private _ready;
|
|
540
|
+
private watchdog;
|
|
535
541
|
logs: Logs;
|
|
536
542
|
collector: MessageCollector;
|
|
537
543
|
middleware: Middleware<any>;
|
|
538
544
|
plugins: Plugins;
|
|
539
545
|
constructor(options: z.infer<typeof ClientOptionsType>);
|
|
540
546
|
initialize(client?: Client): Promise<void>;
|
|
547
|
+
private prekeyDetected;
|
|
548
|
+
private setupPrekeyErrorDetection;
|
|
541
549
|
ready(): Promise<void>;
|
|
542
550
|
db(path: string): Lowdb;
|
|
543
551
|
on<T extends z.infer<typeof EventEnumType>>(event: T, handler: EventCallbackType[T]): void;
|
|
@@ -733,4 +741,42 @@ declare const getMediaThumbnail: any;
|
|
|
733
741
|
declare const getWaSticker: any;
|
|
734
742
|
declare const getWaDocument: any;
|
|
735
743
|
|
|
736
|
-
|
|
744
|
+
type WASocket = {
|
|
745
|
+
ev?: {
|
|
746
|
+
removeAllListeners: () => void;
|
|
747
|
+
};
|
|
748
|
+
end?: (reason?: Error) => void;
|
|
749
|
+
};
|
|
750
|
+
declare const cleanupSocket: (socket: WASocket) => void;
|
|
751
|
+
declare const repairSessionKeys: (session: string) => Promise<void>;
|
|
752
|
+
declare const getExistingSocket: () => WASocket | null;
|
|
753
|
+
|
|
754
|
+
type WatchdogOptions = {
|
|
755
|
+
session: string;
|
|
756
|
+
checkIntervalMs?: number;
|
|
757
|
+
staleThresholdMs?: number;
|
|
758
|
+
cooldownMs?: number;
|
|
759
|
+
maxRetries?: number;
|
|
760
|
+
onRecovery?: () => Promise<void>;
|
|
761
|
+
};
|
|
762
|
+
declare class SessionWatchdog {
|
|
763
|
+
private lastActivityTime;
|
|
764
|
+
private lastRecoveryTime;
|
|
765
|
+
private checkInterval;
|
|
766
|
+
private isRecovering;
|
|
767
|
+
private retryCount;
|
|
768
|
+
private options;
|
|
769
|
+
constructor(options: WatchdogOptions);
|
|
770
|
+
start(): void;
|
|
771
|
+
stop(): void;
|
|
772
|
+
touch(): void;
|
|
773
|
+
private setupActivityListeners;
|
|
774
|
+
private check;
|
|
775
|
+
private isInCooldown;
|
|
776
|
+
private recover;
|
|
777
|
+
forceRecovery(): Promise<void>;
|
|
778
|
+
}
|
|
779
|
+
declare const createWatchdog: (options: WatchdogOptions) => SessionWatchdog;
|
|
780
|
+
declare const getWatchdog: () => SessionWatchdog | null;
|
|
781
|
+
|
|
782
|
+
export { AudioProcessor, type AudioType, Client, DocumentProcessor, ImageProcessor, Lowdb, MediaProcessor, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, SessionWatchdog, StickerProcessor, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, createLowdb, createWatchdog, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaSticker, getWatchdog, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
'use strict';var Ht=require('baileys'),We=require('fs/promises'),asyncMutex=require('async-mutex'),Ne=require('path'),nanospinner=require('nanospinner'),je=require('node-cache'),events=require('events'),Rt=require('pino'),Xe=require('gradient-string'),v=require('lodash'),fileType=require('file-type'),G=require('fluent-ffmpeg'),Nt=require('node-webpmux'),os$1=require('os'),Be=require('sharp'),Ot=require('@ffmpeg-installer/ffmpeg'),Ft=require('@ffprobe-installer/ffprobe'),Qt=require('figlet'),Xt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),ve=require('fs'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ht__default=/*#__PURE__*/_interopDefault(Ht);var We__default=/*#__PURE__*/_interopDefault(We);var Ne__namespace=/*#__PURE__*/_interopNamespace(Ne);var je__default=/*#__PURE__*/_interopDefault(je);var Rt__default=/*#__PURE__*/_interopDefault(Rt);var Xe__default=/*#__PURE__*/_interopDefault(Xe);var v__default=/*#__PURE__*/_interopDefault(v);var G__default=/*#__PURE__*/_interopDefault(G);var Nt__default=/*#__PURE__*/_interopDefault(Nt);var Be__default=/*#__PURE__*/_interopDefault(Be);var Ot__default=/*#__PURE__*/_interopDefault(Ot);var Ft__default=/*#__PURE__*/_interopDefault(Ft);var Qt__default=/*#__PURE__*/_interopDefault(Qt);var Xt__default=/*#__PURE__*/_interopDefault(Xt);var u__default=/*#__PURE__*/_interopDefault(u);var ve__namespace=/*#__PURE__*/_interopNamespace(ve);var Pe=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=V(s);return this.cache.set(s,r),r}spinner=nanospinner.createSpinner("",{color:"green"});logger=Rt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new je__default.default({stdTTL:300,useClones:false});collectors=new Map},a=new Pe;var g=o=>o,Qe=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(o){throw o}},Ye=async o=>{try{let e=`.session/${o}/auth/creds.json`;await We__default.default.unlink(e);}catch(e){throw a.spinner.error(`Failed to remove auth creds for session "${o}"!`),e}},R=(o="")=>o?.length?o.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var M=(o,e="lime")=>Array.isArray(e)?Xe__default.default(e)(o):Xe__default.default([e,e])(o),Re=o=>{try{return JSON.parse(o)}catch{return v__default.default.attempt(()=>JSON.parse(JSON.stringify(o)||"{}"))}},X=o=>{try{return JSON.stringify(o)}catch{let e=v__default.default.attempt(()=>JSON.stringify(Re(o)||"{}"));return v__default.default.isError(e)?"{}":e}},Js=(o="")=>v__default.default.shuffle(o).join(""),ee=(o="",e="")=>o?v__default.default.includes(o.toLowerCase(),e.toLowerCase()):null,et=(o="")=>o?v__default.default.castArray(o.match(Ht.URL_REGEX)||[]):[],Gs=o=>o[Math.floor(Math.random()*o.length)],C=(o,e)=>{for(let t of o||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},tt=(o,e)=>{let t=v__default.default.castArray(e),s=(n,c)=>v__default.default.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>v__default.default.some(c,(p,l)=>n?.[l]===p),i=n=>v__default.default.isArray(n)?v__default.default.find(n,i)??n:v__default.default.isObject(n)?v__default.default.find(t,l=>s(n,l))||v__default.default.find(t,l=>r(n,l))?n:v__default.default.find(v__default.default.values(n),i)??n:null;return i(o)},Ks=(o,e,t)=>new Proxy(o,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var B=o=>{let e;Array.isArray(o)?e=o.join("|"):typeof o=="string"?e=o:e=String(o);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},st=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))e.add(t[1]);return v__default.default.toArray(e)},Ee=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return v__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ei=o=>v__default.default.isEmpty(o)?[]:v__default.default.map([...o],e=>`${e}@s.whatsapp.net`),it=o=>v__default.default.omit(o,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),J=o=>{if(!o)return {leaf:void 0,chain:[]};let e=Ht.extractMessageContent(o)||o,t=[];for(;e&&typeof e=="object";){let s=Ht.getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},E=o=>Number(o?.split("@")[0]);G__default.default.setFfmpegPath(Ot__default.default.path);G__default.default.setFfprobePath(Ft__default.default.path);var y={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},w=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Ne__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>We__default.default.unlink(t)));}static async safeReadFile(e){try{return await We__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await We__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},A=class{static async toBuffer(e){if(v__default.default.isBuffer(e))return e;if(v__default.default.isArrayBuffer(e))return Buffer.from(e);if(v__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},N=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(y.MIME.IMAGE)||e.startsWith(y.MIME.VIDEO)}static isAnimated(e){return e===y.MIME.GIF||e.startsWith(y.MIME.VIDEO)}},K=class{static async process(e){return new Promise((t,s)=>{let r=G__default.default(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{G__default.default.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},te=class{static async getWaAudio(e,t="opus"){let s=await A.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);N.validate(r,y.MIME.AUDIO);let i=w.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=w.createTempPath("audio_out",n);await w.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await K.process({input:i,output:c,options:l,onEnd:async()=>{p=await w.safeReadFile(c);},onError:async()=>{await w.cleanup([i,c]);}}),await w.cleanup([i,c]),p}catch(l){throw await w.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},W=class{static async getThumbnail(e){let t=await A.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);N.validate(s,y.MIME.VIDEO);let r=w.createTempPath("video","mp4"),i=w.createTempPath("thumb","jpg");await w.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{G__default.default(r).screenshots({timestamps:[y.THUMBNAIL.TIMESTAMP],filename:Ne__namespace.default.basename(i),folder:Ne__namespace.default.dirname(i),size:`${y.THUMBNAIL.SIZE}x${y.THUMBNAIL.SIZE}`,quality:y.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await w.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await w.cleanup([r,i]),n}catch(c){throw await w.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return K.getDuration(e)}},se=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===y.MIME.GIF?Be__default.default(e,{animated:false}):Be__default.default(e)).resize(y.THUMBNAIL.SIZE,y.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:y.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Be__default.default(e).resize(y.STICKER.SIZE,y.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},H=class{static async getThumbnail(e){let t=await A.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s||!N.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(y.MIME.VIDEO)?W.getThumbnail(e):se.getThumbnail(t)}},ie=class{static createExifMetadata(e){let t={"sticker-pack-id":B(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=w.createTempPath("sticker_in",r),n=w.createTempPath("sticker_out","webp");await w.safeWriteFile(i,e);let c=y.STICKER.MAX_DURATION;try{let T=await W.getDuration(i);c=g(Math.min(T,y.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",y.STICKER.MAX_DURATION);}let p=`scale=${y.STICKER.SIZE}:${y.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${y.STICKER.SIZE}:${y.STICKER.SIZE},fps=${y.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),h;try{return await K.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${y.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{h=await w.safeReadFile(n);},onError:async()=>{await w.cleanup([i,n]);}}),await w.cleanup([i,n]),h}catch(T){throw await w.cleanup([i,n]),new Error(`Animated sticker processing failed: ${T.message}`)}}static getExtension(e){return e===y.MIME.GIF?"gif":e.startsWith(y.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await A.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||y.STICKER.DEFAULT_QUALITY,c=N.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await se.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Nt__default.default.Image;await l.load(c),l.exif=p;let h=await l.save(null);return Buffer.isBuffer(h)?h:Buffer.from(h)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},re=class{static async create(e){try{let t=await A.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:B(Date.now().toString()),jpegThumbnail:await H.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ne=A.toBuffer.bind(A),rt=te.getWaAudio.bind(te),gi=W.getThumbnail.bind(W),yi=W.getDuration.bind(W),De=H.getThumbnail.bind(H),nt=ie.create.bind(ie),ot=re.create.bind(re);var ze=class o{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new o)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new asyncMutex.Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new asyncMutex.Mutex,this.kLocks.set(e,t);}return t}},$e=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=ze.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await We.readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await We.mkdir(Ne.dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await We.writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return tt(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await We.mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,h=Math.min(l+this.size,r.length),T=r.subarray(l,h);c.push(We.writeFile(Ne.join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:T.toString("base64")})));}return c.push(We.writeFile(Ne.join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=Ne.join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await We.readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(We.readFile(Ne.join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(h=>Buffer.from(JSON.parse(h).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(We.unlink(Ne.join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(We.unlink(Ne.join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await We.readdir(this.chunkDir)).length===0&&await We.rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},V=(o,e)=>new $e(o,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var ut=async o=>{a.spinner.start(" Initializing auth state...");let e=await We.stat(o).catch(()=>{});if(e){if(!e.isDirectory())throw a.spinner.error(` Failed to open credentials
|
|
2
|
-
`),`found something that is not a directory at ${
|
|
3
|
-
by ${
|
|
4
|
-
`,i=e?"lime":"orange",n=await
|
|
5
|
-
`),await r()),T&&await s();}if(n==="open")if(e.user?.id){let l=Ht.jidNormalizedUser(e.user.id).split("@")[0],h=e.user.name||e.user.verifiedName;a.spinner.success(` Connected as ${Xe.cristal(h||l)}`);}else a.spinner.success(" Connected!");a.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,a.spinner.start(" Syncing messages history..."),i&&a.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(a.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),a.events.emit("connection",t);});}};var ht={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ue={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var le=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var me=class{constructor(e){this.client=e;this.limiter=new le(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=a.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),a.set("message",i),a.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=a.get("socket"),i={},n=J(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=J(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=ht[c],i.receiverId=Ht.jidNormalizedUser(r?.user?.id||""),i.receiverName=R(r?.user?.name||r?.user?.verifiedName),i.roomId=Ht.jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,h=p?.type===1,T=p?.type===2,Y=i.roomId?.includes("@newsletter"),Ce=!!e?.message?.questionMessage,F=e?.key?.fromMe||false;if(F&&this.client.options.ignoreMe&&t!=="replied")return;let Ae=p?.key?.id;if(l||h||T){let x=(await this.client.db("messages").get(i.roomId))?.find(L=>L.key.id===Ae);if(!x)return;e=x,n=J(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=C([e?.key],["remoteJidAlt","participant"])||null,i.senderId=Ht.jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=R(e?.pushName||e?.verifiedBizName),i.senderDevice=Ht.getDevice(i.chatId),i.channelId=B([i.roomId,i.senderId]),i.uniqueId=B([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,Y){let S=await r.newsletterMetadata("jid",i.roomId);i.roomName=g(S.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(F&&(i.senderLid=Ht.jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=Re(p?.paramsJson)?.id),i.text=R(i.text),i.mentions=st(i.text),i.links=et(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=F,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=Y,i.isQuestion=Ce,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!ee(X(n),"editedMessage"),i.isDeleted=l,i.isPinned=h,i.isUnPinned=T,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!ee(X(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!ee(X(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let S=this.client.options.citation;for(let x of Object.keys(S)){let L=S[x];i.citation[x]=async()=>{let _=await L(),Ie=[E(i.roomId),E(i.senderLid),E(i.senderId)];return !!v__default.default.intersection(Ie,_).length};}}i.chatType!=="text"&&(i.media={...it(p),buffer:()=>Ht.downloadMediaMessage(e,"buffer",{}),stream:()=>Ht.downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let z=p?.contextInfo?.quotedMessage,$=C([z],["viewOnceMessageV2Extension","viewOnceMessage"]),j=p?.contextInfo?.stanzaId;if(z&&!this.maxReplies){this.maxReplies--;let x=(await this.client.db("messages").get(i.roomId))?.find(_=>_.key.id===j),L={...x,...J($).leaf};$?(i.replied=await this.parse(L,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(x,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var de=class{constructor(e){this.client=e;this.connection=new pe(e),this.messages=new me(e),this.calls=new oe(e),this.initialize();}connection;messages;calls;async initialize(){let e=a.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").push(n.id,n);for(let n of r)await this.client.db("contacts").push(n.id,n);for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(n.key.remoteJid,n);}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(s.key.remoteJid,s);}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").push(s.id,s);}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").push(s.id,s);});}};var Z=(o,e)=>{let t=o.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ns=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),os=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),as=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),cs=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),ps=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),ls=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ns,os,as,cs,ps]).array()}),us=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),wt=u__default.default.union([us,ls]);var Q=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Mt=u__default.default.object({text:u__default.default.string()}).passthrough(),ms=u__default.default.object({image:Q,caption:u__default.default.string().optional()}).passthrough(),ds=u__default.default.object({audio:Q,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),fs=u__default.default.object({video:Q,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),gs=u__default.default.object({sticker:Q,caption:u__default.default.string().optional()}).passthrough(),ys=u__default.default.object({document:Q,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),hs=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),ks=u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()}),ws=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),vt=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:wt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Ms=u__default.default.union([Mt,ms,ds,fs,gs,ys,hs,ks,ws]),bt=u__default.default.string().or(u__default.default.intersection(Ms,vt.omit({buttons:true}))),Tt=u__default.default.intersection(Mt,vt.omit({banner:true}));var fe=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=g(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:g(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=a.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=Ht.generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:Ht.generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!Ht.isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var ge=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=Z(Tt,t):t=Z(bt,t));let i=a.get("socket"),n={},c={},p=v__default.default.isString(t),l=this.client.options?.fakeReply?.provider,h=this.client.options?.autoMentions,T=this.client.options?.autoPresence,Y=v__default.default.has(t,"replied"),Ce=v__default.default.has(t,"banner"),F=v__default.default.has(t,"isViewOnce"),Ae=s=="button",z=v__default.default.has(t,"image"),$=v__default.default.has(t,"video"),j=v__default.default.has(t,"audio"),S=v__default.default.has(t,"sticker"),x=v__default.default.has(t,"document"),L=v__default.default.has(t,"location"),_=v__default.default.has(t,"contacts"),Ie=v__default.default.has(t,"poll"),He=z||$||j||S||x,U=p?t:C([t],["text","caption"]);if(T&&(j?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),h&&(n={...n,mentions:Ee(U),contextInfo:{mentionedJid:Ee(U)}}),Y&&(c.quoted=g(t).replied,l&&(c.quoted.key.remoteJid=Ue[l],c.quoted.key.participant=Ue[l])),Ce&&(n={...n,contextInfo:{externalAdReply:g(t).banner}},n.contextInfo.externalAdReply.mediaType=1),F&&(n={...n,viewOnce:g(t)?.isViewOnce}),U&&(n={...n,text:U,caption:U},He&&delete g(n).text),He){let k=C([t],["image","video","audio","sticker","document"]),I=v__default.default.isString(k)?{url:k}:k;if(z&&(n={...n,image:I,jpegThumbnail:await De(k)}),$){let P=g(t)?.ptv;n={...n,video:I,ptv:P,jpegThumbnail:await De(k)};}if(j){let P=g(t)?.ptt;n={...n,audio:await rt(k),ptt:P,mimetype:P?"audio/ogg; codecs=opus":"audio/mpeg"};}if(S&&(n={...n,sticker:await nt(k,this.client.options?.sticker)}),x){let P=await ot(k);n={...n,fileName:g(t).fileName,...P};}}if(L){let k=g(t).location;n={...n,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(_){let k=g(t)?.contacts,Ze=k?.contacts.map(I=>{let P=["BEGIN:VCARD","VERSION:3.0",`FN:${I.fullname}`,`ORG:${I.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${I.phoneNumber}:${I.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
-
`);return {displayName:I.fullname,vcard:
|
|
7
|
-
`;e?.isNewsletter?p+=`${
|
|
8
|
-
`:p+=`${
|
|
9
|
-
`,p+=`${
|
|
10
|
-
`,p+="\u2014",console.log(p);}call(e){if(!
|
|
11
|
-
`;i+=`${
|
|
12
|
-
`,i+=`${
|
|
13
|
-
`,i+="\u2014",console.log(i);}};var
|
|
1
|
+
'use strict';var os$1=require('baileys'),Oe=require('fs/promises'),asyncMutex=require('async-mutex'),Be=require('path'),nanospinner=require('nanospinner'),qe=require('node-cache'),events=require('events'),Nt=require('pino'),st=require('gradient-string'),M=require('lodash'),fileType=require('file-type'),H=require('fluent-ffmpeg'),jt=require('node-webpmux'),os=require('os'),Ne=require('sharp'),Vt=require('@ffmpeg-installer/ffmpeg'),qt=require('@ffprobe-installer/ffprobe'),L=require('fs'),cs=require('figlet'),ls=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var os__default=/*#__PURE__*/_interopDefault(os$1);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var Be__namespace=/*#__PURE__*/_interopNamespace(Be);var qe__default=/*#__PURE__*/_interopDefault(qe);var Nt__default=/*#__PURE__*/_interopDefault(Nt);var st__default=/*#__PURE__*/_interopDefault(st);var M__default=/*#__PURE__*/_interopDefault(M);var H__default=/*#__PURE__*/_interopDefault(H);var jt__default=/*#__PURE__*/_interopDefault(jt);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var Vt__default=/*#__PURE__*/_interopDefault(Vt);var qt__default=/*#__PURE__*/_interopDefault(qt);var L__namespace=/*#__PURE__*/_interopNamespace(L);var cs__default=/*#__PURE__*/_interopDefault(cs);var ls__default=/*#__PURE__*/_interopDefault(ls);var u__default=/*#__PURE__*/_interopDefault(u);var We=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=J(s);return this.cache.set(s,r),r}spinner=nanospinner.createSpinner("",{color:"green"});logger=Nt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new qe__default.default({stdTTL:300,useClones:false});collectors=new Map},o=new We;var y=a=>a,et=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},tt=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Oe__default.default.unlink(e);}catch(e){throw o.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},P=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var v=(a,e="lime")=>Array.isArray(e)?st__default.default(e)(a):st__default.default([e,e])(a),De=a=>{try{return JSON.parse(a)}catch{return M__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},te=a=>{try{return JSON.stringify(a)}catch{let e=M__default.default.attempt(()=>JSON.stringify(De(a)||"{}"));return M__default.default.isError(e)?"{}":e}},ii=(a="")=>M__default.default.shuffle(a).join(""),se=(a="",e="")=>a?M__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,it=(a="")=>a?M__default.default.castArray(a.match(os$1.URL_REGEX)||[]):[],ri=a=>a[Math.floor(Math.random()*a.length)],A=(a,e)=>{for(let t of a||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},rt=(a,e)=>{let t=M__default.default.castArray(e),s=(n,c)=>M__default.default.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>M__default.default.some(c,(p,l)=>n?.[l]===p),i=n=>M__default.default.isArray(n)?M__default.default.find(n,i)??n:M__default.default.isObject(n)?M__default.default.find(t,l=>s(n,l))||M__default.default.find(t,l=>r(n,l))?n:M__default.default.find(M__default.default.values(n),i)??n:null;return i(a)},ni=(a,e,t)=>new Proxy(a,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var F=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},nt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return M__default.default.toArray(e)},Le=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return M__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ui=a=>M__default.default.isEmpty(a)?[]:M__default.default.map([...a],e=>`${e}@s.whatsapp.net`),ot=a=>M__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),K=a=>{if(!a)return {leaf:void 0,chain:[]};let e=os$1.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=os$1.getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},E=a=>Number(a?.split("@")[0]);H__default.default.setFfmpegPath(Vt__default.default.path);H__default.default.setFfprobePath(qt__default.default.path);var h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},w=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Be__namespace.default.join(os.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Oe__default.default.unlink(t)));}static async safeReadFile(e){try{return await Oe__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Oe__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},C=class{static async toBuffer(e){if(M__default.default.isBuffer(e))return e;if(M__default.default.isArrayBuffer(e))return Buffer.from(e);if(M__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},N=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(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,s)=>{let r=H__default.default(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{H__default.default.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},ie=class{static async getWaAudio(e,t="opus"){let s=await C.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);N.validate(r,h.MIME.AUDIO);let i=w.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=w.createTempPath("audio_out",n);await w.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Z.process({input:i,output:c,options:l,onEnd:async()=>{p=await w.safeReadFile(c);},onError:async()=>{await w.cleanup([i,c]);}}),await w.cleanup([i,c]),p}catch(l){throw await w.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},W=class{static async getThumbnail(e){let t=await C.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);N.validate(s,h.MIME.VIDEO);let r=w.createTempPath("video","mp4"),i=w.createTempPath("thumb","jpg");await w.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{H__default.default(r).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:Be__namespace.default.basename(i),folder:Be__namespace.default.dirname(i),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await w.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await w.cleanup([r,i]),n}catch(c){throw await w.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Z.getDuration(e)}},re=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===h.MIME.GIF?Ne__default.default(e,{animated:false}):Ne__default.default(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Ne__default.default(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},Q=class{static async getThumbnail(e){let t=await C.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s||!N.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(h.MIME.VIDEO)?W.getThumbnail(e):re.getThumbnail(t)}},ne=class{static createExifMetadata(e){let t={"sticker-pack-id":F(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=w.createTempPath("sticker_in",r),n=w.createTempPath("sticker_out","webp");await w.safeWriteFile(i,e);let c=h.STICKER.MAX_DURATION;try{let T=await W.getDuration(i);c=y(Math.min(T,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let p=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),g;try{return await Z.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{g=await w.safeReadFile(n);},onError:async()=>{await w.cleanup([i,n]);}}),await w.cleanup([i,n]),g}catch(T){throw await w.cleanup([i,n]),new Error(`Animated sticker processing failed: ${T.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await C.toBuffer(e),r=await fileType.fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||h.STICKER.DEFAULT_QUALITY,c=N.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await re.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new jt__default.default.Image;await l.load(c),l.exif=p;let g=await l.save(null);return Buffer.isBuffer(g)?g:Buffer.from(g)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},oe=class{static async create(e){try{let t=await C.toBuffer(e),s=await fileType.fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:F(Date.now().toString()),jpegThumbnail:await Q.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ae=C.toBuffer.bind(C),at=ie.getWaAudio.bind(ie),Ai=W.getThumbnail.bind(W),Ci=W.getDuration.bind(W),_e=Q.getThumbnail.bind(Q),ct=ne.create.bind(ne),pt=oe.create.bind(oe);var ut=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},ce=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await L.promises.readFile(e,"utf-8"),s=JSON.parse(t),r=["sender-key:","session:"],i={},n=!1;for(let[c,p]of Object.entries(s))r.some(g=>c.startsWith(g))?n=!0:i[c]=p;n&&(await L.promises.writeFile(e,JSON.stringify(i,null,2)),o.spinner.success(" Session keys repaired successfully"));}catch{o.spinner.warn(" Could not repair session keys, will re-negotiate");}},mt=()=>{let a=o.get("socket");return a?.end?a:null};var Jt=6e4,Gt=12e4,Kt=6e4,Ht=3,$e=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Jt,staleThresholdMs:Gt,cooldownMs:Kt,maxRetries:Ht,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),o.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=o.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){o.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){o.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{o.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=o.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),o.spinner.success(" Session health check passed");return}catch{}await ce(this.options.session),o.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{o.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){o.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},Y=null,dt=a=>(Y&&Y.stop(),Y=new $e(a),Y),Fi=()=>Y;var Ue=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new asyncMutex.Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new asyncMutex.Mutex,this.kLocks.set(e,t);}return t}},Ve=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=Ue.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await Oe.readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await Oe.mkdir(Be.dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await Oe.writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return rt(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await Oe.mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,g=Math.min(l+this.size,r.length),T=r.subarray(l,g);c.push(Oe.writeFile(Be.join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:T.toString("base64")})));}return c.push(Oe.writeFile(Be.join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=Be.join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await Oe.readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(Oe.readFile(Be.join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(g=>Buffer.from(JSON.parse(g).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(Oe.unlink(Be.join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(Oe.unlink(Be.join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await Oe.readdir(this.chunkDir)).length===0&&await Oe.rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},J=(a,e)=>new Ve(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var kt=async a=>{o.spinner.start(" Initializing auth state...");let e=await Oe.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw o.spinner.error(` Failed to open credentials
|
|
2
|
+
`),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await Oe.mkdir(a,{recursive:true});let t=J(`${a}/auth/creds.json`,{BufferJSON:os$1.BufferJSON}),s=J(`${a}/auth/keys.json`,{BufferJSON:os$1.BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||os$1.initAuthCreds();return o.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,g=await s.get(l);i==="app-state-sync-key"&&g&&(g=os$1.proto.Message.AppStateSyncKeyData.fromObject(g)),c[p]=g;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],g=`${c}:${p}`;l?n.push(s.set(g,l)):n.push(s.delete(g).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var ns=new qe__default.default,wt=(a,e)=>({logger:o.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new qe__default.default,mediaCache:new qe__default.default({stdTTL:60}),cachedGroupMetadata:async t=>ns.get(t),shouldIgnoreJid:t=>os$1.isJidBroadcast(t),auth:{creds:e.creds,keys:os$1.makeCacheableSignalKeyStore(e.keys,o.logger)},getMessage:async t=>{if(t?.id)return await a.db("messages").get(t.id)}});var vt=async a=>{let e=mt();e&&ut(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:r}=await kt(t),i=wt(a,s),n=os__default.default(i);n.ev.on("creds.update",r),o.set("socket",n);};var pe=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=o.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),o.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=o.get("socket"),s={};return s.callId=e.id,s.callerId=os$1.jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=os$1.jidNormalizedUser(e.chatId),s.roomName=P(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var le={version:"2.0.7",author:"zaadevofc"};var St=a=>{ls__default.default.generate(a,{small:true},e=>{console.log(e);});},Tt=async()=>{console.clear(),o.spinner.start(" Checking for updates...");let a=await et(),e=le.version===a;o.spinner.stop();let t="Zaileys",s=`
|
|
3
|
+
by ${le.author} \xB7 v${le.version}`,r=`${e?"Already using latest version!":`Update available! (v${a})`}
|
|
4
|
+
`,i=e?"lime":"orange",n=await cs__default.default.text(t),c=st.cristal(n);console.log(c),console.log(v(s,"dimgray")),console.log(v(r,i));};var de=class{constructor(e){this.client=e;this.initialize();}async initialize(){o.spinner.start(" Initializing connection...");let e=o.get("socket"),t={},s=async()=>{t.status="reload",o.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await os$1.delay(3e3),o.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await os$1.delay(3e3),await tt(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){o.spinner.update(" Generating pairing code..."),await os$1.delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());o.spinner.warn(` Pairing expired at ${st.cristal(i)}`),o.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:p}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,o.spinner.update(" Connection status: "+st.cristal(t.status)),this.client.options.authType==="qr"&&p){t.authTimeout=Date.now()+6e4;let l=new Date(t.authTimeout).toLocaleTimeString();o.spinner.warn(" Please scan the QR code..."),o.spinner.warn(` Qr code expired at ${st.cristal(l)}`),St(p),t.qr=p;return}if(n==="close"){let l=y(c?.error)?.output?.statusCode,g=c?.error?.message||"",T=typeof l=="number"&&l!==os$1.DisconnectReason.loggedOut,O=l===515||g.toLowerCase().includes("prekey");if(o.spinner.error(` [${l} - Closed] ${g}`),O){o.spinner.warn(" Session key mismatch detected, attempting repair..."),await ce(this.client.options.session),await os$1.delay(1e3),await s();return}(l===401||l===405||l===500)&&(o.spinner.error(" Invalid session, please delete manually!"),o.spinner.error(` Session "${this.client.options.session}" has not valid, please delete it!
|
|
5
|
+
`),await r()),T&&await s();}if(n==="open")if(e.user?.id){let l=os$1.jidNormalizedUser(e.user.id).split("@")[0],g=e.user.name||e.user.verifiedName;o.spinner.success(` Connected as ${st.cristal(g||l)}`);}else o.spinner.success(" Connected!");o.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,o.spinner.start(" Syncing messages history..."),i&&o.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(o.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),o.events.emit("connection",t);});}};var bt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",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"},Je={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 fe=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var ye=class{constructor(e){this.client=e;this.limiter=new fe(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=o.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),o.set("message",i),o.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=o.get("socket"),i={},n=K(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=K(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=bt[c],i.receiverId=os$1.jidNormalizedUser(r?.user?.id||""),i.receiverName=P(r?.user?.name||r?.user?.verifiedName),i.roomId=os$1.jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,g=p?.type===1,T=p?.type===2,O=i.roomId?.includes("@newsletter"),Re=!!e?.message?.questionMessage,$=e?.key?.fromMe||false;if($&&this.client.options.ignoreMe&&t!=="replied")return;let Pe=p?.key?.id;if(l||g||T){let b=(await this.client.db("messages").get(i.roomId))?.find(D=>D.key.id===Pe);if(!b)return;e=b,n=K(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=A([e?.key],["remoteJidAlt","participant"])||null,i.senderId=os$1.jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=P(e?.pushName||e?.verifiedBizName),i.senderDevice=os$1.getDevice(i.chatId),i.channelId=F([i.roomId,i.senderId]),i.uniqueId=F([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,O){let x=await r.newsletterMetadata("jid",i.roomId);i.roomName=y(x.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if($&&(i.senderLid=os$1.jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=De(p?.paramsJson)?.id),i.text=P(i.text),i.mentions=nt(i.text),i.links=it(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=$,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=O,i.isQuestion=Re,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!se(te(n),"editedMessage"),i.isDeleted=l,i.isPinned=g,i.isUnPinned=T,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!se(te(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!se(te(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let x=this.client.options.citation;for(let b of Object.keys(x)){let D=x[b];i.citation[b]=async()=>{let V=await D(),Ee=[E(i.roomId),E(i.senderLid),E(i.senderId)];return !!M__default.default.intersection(Ee,V).length};}}i.chatType!=="text"&&(i.media={...ot(p),buffer:()=>os$1.downloadMediaMessage(e,"buffer",{}),stream:()=>os$1.downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let z=p?.contextInfo?.quotedMessage,j=A([z],["viewOnceMessageV2Extension","viewOnceMessage"]),U=p?.contextInfo?.stanzaId;if(z&&this.maxReplies){this.maxReplies--;let b=(await this.client.db("messages").get(i.roomId))?.find(V=>V.key.id===U),D={...b,...K(j).leaf};j?(i.replied=await this.parse(D,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(b,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var he=class{constructor(e){this.client=e;this.connection=new de(e),this.messages=new ye(e),this.calls=new pe(e),this.initialize();}connection;messages;calls;async initialize(){let e=o.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").push(n.id,n);for(let n of r)await this.client.db("contacts").push(n.id,n);for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(n.key.remoteJid,n);}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(s.key.remoteJid,s);}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").push(s.id,s);}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").push(s.id,s);});}};var X=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ys=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),hs=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),ks=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),ws=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),vs=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),Ms=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ys,hs,ks,ws,vs]).array()}),Ss=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),At=u__default.default.union([Ss,Ms]);var ee=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Ct=u__default.default.object({text:u__default.default.string()}).passthrough(),Ts=u__default.default.object({image:ee,caption:u__default.default.string().optional()}).passthrough(),bs=u__default.default.object({audio:ee,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),xs=u__default.default.object({video:ee,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),As=u__default.default.object({sticker:ee,caption:u__default.default.string().optional()}).passthrough(),Cs=u__default.default.object({document:ee,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),Is=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),Rs=u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()}),Ps=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),It=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:At.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Es=u__default.default.union([Ct,Ts,bs,xs,As,Cs,Is,Rs,Ps]),Rt=u__default.default.string().or(u__default.default.intersection(Es,It.omit({buttons:true}))),Pt=u__default.default.intersection(Ct,It.omit({banner:true}));var ke=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=y(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=o.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=os$1.generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:os$1.generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!os$1.isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var we=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=X(Pt,t):t=X(Rt,t));let i=o.get("socket"),n={},c={},p=M__default.default.isString(t),l=this.client.options?.fakeReply?.provider,g=this.client.options?.autoMentions,T=this.client.options?.autoPresence,O=M__default.default.has(t,"replied"),Re=M__default.default.has(t,"banner"),$=M__default.default.has(t,"isViewOnce"),Pe=s=="button",z=M__default.default.has(t,"image"),j=M__default.default.has(t,"video"),U=M__default.default.has(t,"audio"),x=M__default.default.has(t,"sticker"),b=M__default.default.has(t,"document"),D=M__default.default.has(t,"location"),V=M__default.default.has(t,"contacts"),Ee=M__default.default.has(t,"poll"),Ye=z||j||U||x||b,q=p?t:A([t],["text","caption"]);if(T&&(U?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),g&&(n={...n,mentions:Le(q),contextInfo:{mentionedJid:Le(q)}}),O&&(c.quoted=y(t).replied,l&&(c.quoted.key.remoteJid=Je[l],c.quoted.key.participant=Je[l])),Re&&(n={...n,contextInfo:{externalAdReply:y(t).banner}},n.contextInfo.externalAdReply.mediaType=1),$&&(n={...n,viewOnce:y(t)?.isViewOnce}),q&&(n={...n,text:q,caption:q},Ye&&delete y(n).text),Ye){let k=A([t],["image","video","audio","sticker","document"]),I=M__default.default.isString(k)?{url:k}:k;if(z&&(n={...n,image:I,jpegThumbnail:await _e(k)}),j){let R=y(t)?.ptv;n={...n,video:I,ptv:R,jpegThumbnail:await _e(k)};}if(U){let R=y(t)?.ptt;n={...n,audio:await at(k),ptt:R,mimetype:R?"audio/ogg; codecs=opus":"audio/mpeg"};}if(x&&(n={...n,sticker:await ct(k,this.client.options?.sticker)}),b){let R=await pt(k);n={...n,fileName:y(t).fileName,...R};}}if(D){let k=y(t).location;n={...n,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(V){let k=y(t)?.contacts,Xe=k?.contacts.map(I=>{let R=["BEGIN:VCARD","VERSION:3.0",`FN:${I.fullname}`,`ORG:${I.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${I.phoneNumber}:${I.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
+
`);return {displayName:I.fullname,vcard:R}});n={...n,contacts:{displayName:k?.title,contacts:Xe}};}if(Ee){let k=y(t)?.poll;n={...n,poll:{name:k.name,values:k.answers,selectableCount:k.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(n={...n,contextInfo:{...y(n).contextInfo,isForwarded:true,forwardingScore:y(t).isForwardedMany?9999:1}}),s=="edit"&&(n={...n,edit:r?.key},await i.sendPresenceUpdate("paused",e)),s=="delete"&&(n={...n,delete:r?.key},await i.sendPresenceUpdate("paused",e)),Pe?await new ke().send(e,t,c):await i.sendMessage(e,y(n),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return M__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let s=o.get("socket"),r={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(r[t],e)}async reaction(e,t){return await o.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").groupCreate(e,t)}async participant(e,t,s){return await o.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "subject":if(!i)return await r.groupUpdateSubject(e,t);case "description":if(!i)return await r.groupUpdateDescription(e,t);case "picture":return await r.updateProfilePicture(e,ae(t))}}async setting(e,t){let s=o.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await o.get("socket").groupLeave(e)}async inviteCode(e,t){let s=o.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await o.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let r=o.get("socket");switch(s){case "approve":return await r.groupRequestParticipantsUpdate(e,t,s);case "reject":return await r.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await o.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await o.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=o.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,r[t])}},ve=class{constructor(e){this.glient=e;this.group=new Ge(e);}group};var Os=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),Fs=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),Ns=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),Bs=u.z.object({packageName:u.z.string(),authorName:u.z.string(),quality:u.z.number()}).optional(),Et=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:Os,citation:Fs,fakeReply:Ns,sticker:Bs}),_s=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),$s=u.z.object({authType:u.z.literal("qr")}),Wt=u.z.union([_s.extend(Et.shape),$s.extend(Et.shape)]);u.z.enum(["connection","messages","calls"]);var Me=class{collect(e,t,s){let r=t.max??1/0;if(r<=0){s([]);return}let i=o.collectors.get(e);i&&(clearTimeout(i.timeoutId),i.callback(i.messages),o.collectors.delete(e));let n=setTimeout(()=>{let c=o.collectors.get(e);c&&(c.callback(c.messages),o.collectors.delete(e));},t.timeout);o.collectors.set(e,{messages:[],max:r,filter:t.filter,callback:s,timeoutId:n});}push(e){let t=o.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),o.collectors.delete(e.channelId)),true)}has(e){return o.collectors.has(e)}cancel(e){let t=o.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e),t.messages):[]}};var Se=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,o.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),o.spinner.info("Logs Indicator:"),console.log(v(" \u2022","orange")+" Private Chat"),console.log(v(" \u2022","lime")+" Group Chat"),console.log(v(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=y(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),r=v(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),i=v(`${e?.roomName}`,t),n=e?.text?.slice(0,300)||"",c=n?.length>=300?"...":"",p=`${r} \u2192 ${i}
|
|
7
|
+
`;e?.isNewsletter?p+=`${v("[room]","dimgray")} \u2192 ${v(`${e?.roomName} (${E(e?.roomId)})`,t)}
|
|
8
|
+
`:p+=`${v("[sender]","dimgray")} \u2192 ${v(`${e?.senderName} (${E(e?.senderId)})`,t)}
|
|
9
|
+
`,p+=`${v(`[${e?.chatType}]`,"dimgray")} \u2192 ${v(n+c,s?["#ff5f6d","#ffc371"]:"brown")}
|
|
10
|
+
`,p+="\u2014",console.log(p);}call(e){if(!o.get("logs")?.ready)return;let t=y(this.getRoomColor(e)),s=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=v(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
|
|
11
|
+
`;i+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${E(e?.callerId)})`,t)}
|
|
12
|
+
`,i+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
|
|
13
|
+
`,i+="\u2014",console.log(i);}};var Te=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var be=class{plugins=[];pluginsDir;constructor(e=Be__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!L__namespace.existsSync(e))return t;let s=L__namespace.readdirSync(e);for(let r of s){let i=Be__namespace.join(e,r);L__namespace.statSync(i).isDirectory()?this.getAllFiles(i,t):(r.endsWith(".ts")||r.endsWith(".js"))&&!r.endsWith(".d.ts")&&t.push(i);}return t}async load(){if(!L__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let r=(await import(url.pathToFileURL(t).href)).default;r?.default&&(r=r.default),r?.handler&&r?.config&&this.plugins.push(r);}catch{}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},yo=(a,e)=>({handler:a,config:e});var xe=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var He=class{constructor(e){this.client=e;}async block(e){return await o.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await o.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await o.get("socket").updateLastSeenPrivacy(e)}async online(e){return await o.get("socket").updateOnlinePrivacy(e)}async picture(e){return await o.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await o.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await o.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await o.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=o.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await o.get("socket").fetchBlocklist()}async getSettings(){return await o.get("socket").fetchPrivacySettings(true)}},Ae=class{constructor(e){this.plient=e;this.privacy=new He(e);}privacy};var Ze=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").newsletterCreate(e,t)}async action(e,t){let s=o.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ae(t))}}async metadata(e,t){return await o.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await o.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await o.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=o.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await o.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await o.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await o.get("socket").newsletterDemote(e,t)}async delete(e){return await o.get("socket").newsletterDelete(e)}async removePicture(e){return await o.get("socket").newsletterRemovePicture(e)}},Ce=class{constructor(e){this.nlient=e;this.newsletter=new Ze(e);}newsletter};var Qe=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await o.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await o.get("socket").communityLeave(e)}async metadata(e){return await o.get("socket").communityMetadata(e)}async update(e,t,s){let r=o.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=o.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=o.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,y(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,y(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=o.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=o.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Ie=class{constructor(e){this.mlient=e;this.community=new Qe(e);}community};var Dt=class{constructor(e){this.options=e;this.options=X(Wt,e);let t=new xe().classInjection(this,[new we(this),new ve(this),new Ae(this),new Ce(this),new Ie(this)]);return this._ready=this.initialize(t),t}listener;_ready;watchdog=null;logs;collector=new Me;middleware=new Te;plugins=new be;async initialize(e){await Tt(),await vt(this),await this.plugins.load(),this.listener=new he(e||this),this.logs=new Se(this),this.watchdog=dt({session:this.options.session,checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3,onRecovery:async()=>{await this.initialize(e);}}),this.watchdog.start(),this.setupPrekeyErrorDetection();}prekeyDetected=false;setupPrekeyErrorDetection(){let e=console.log,t=this.watchdog,s=this;console.log=(...r)=>{let i=r.map(n=>String(n)).join(" ").toLowerCase();return (i.includes("closing open session")||i.includes("prekey bundle"))&&!s.prekeyDetected&&(s.prekeyDetected=true,o.spinner.warn(" Prekey bundle error detected"),t?.forceRecovery(),setTimeout(()=>{s.prekeyDetected=false;},6e4)),e.apply(console,r)};}ready(){return this._ready}db(e){return o.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){o.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=A(t,["name","verifiedName"]),i=A(s,["notify","name"]);return P(r||i)||null}};
|
|
14
14
|
/*
|
|
15
15
|
* Copyright (c) 2025 zaadevofc.
|
|
16
16
|
* All rights reserved.
|
|
@@ -18,7 +18,7 @@ by ${ae.author} \xB7 v${ae.version}`,r=`${e?"Already using latest version!":`Upd
|
|
|
18
18
|
* See LICENSE file for details.
|
|
19
19
|
|
|
20
20
|
* Author: zaadevofc
|
|
21
|
-
* Last build time: 12/
|
|
21
|
+
* Last build time: 12/13/2025 11:09:15 PM
|
|
22
22
|
*
|
|
23
23
|
* Repository: git+https://github.com/zeative/zaileys.git
|
|
24
|
-
*/exports.AudioProcessor=
|
|
24
|
+
*/exports.AudioProcessor=ie;exports.Client=Dt;exports.DocumentProcessor=oe;exports.ImageProcessor=re;exports.Lowdb=Ve;exports.MediaProcessor=Q;exports.Plugins=be;exports.SessionWatchdog=$e;exports.StickerProcessor=ne;exports.VideoProcessor=W;exports.cleanJid=E;exports.cleanMediaObject=ot;exports.cleanupSocket=ut;exports.createLowdb=J;exports.createWatchdog=dt;exports.definePlugins=yo;exports.extractJids=Le;exports.extractUrls=it;exports.findGlobalWord=se;exports.findNestedByKeys=rt;exports.generateId=F;exports.getDeepContent=K;exports.getExistingSocket=mt;exports.getLatestLibVersion=et;exports.getMediaThumbnail=_e;exports.getUsersMentions=nt;exports.getVideoDuration=Ci;exports.getVideoThumbnail=Ai;exports.getWaAudio=at;exports.getWaDocument=pt;exports.getWaSticker=ct;exports.getWatchdog=Fi;exports.ignoreLint=y;exports.logColor=v;exports.modifyFn=ni;exports.normalizeText=P;exports.numbersToJids=ui;exports.pickKeysFromArray=A;exports.randomize=ri;exports.registerAuthCreds=vt;exports.removeAuthCreds=tt;exports.repairSessionKeys=ce;exports.shuffleString=ii;exports.toBuffer=ae;exports.toJson=De;exports.toString=te;exports.useAuthState=kt;
|
package/dist/index.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import Zt,{URL_REGEX,extractMessageContent,getContentType,BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,isJidBroadcast,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import Le,{readFile,mkdir,writeFile,unlink,readdir,rmdir,stat}from'fs/promises';import {Mutex}from'async-mutex';import*as De from'path';import De__default,{dirname,join}from'path';import {createSpinner}from'nanospinner';import _e from'node-cache';import {EventEmitter}from'events';import Et from'pino';import et,{cristal}from'gradient-string';import b from'lodash';import {fileTypeFromBuffer}from'file-type';import K from'fluent-ffmpeg';import Dt from'node-webpmux';import {tmpdir}from'os';import Ne from'sharp';import Ft from'@ffmpeg-installer/ffmpeg';import zt from'@ffprobe-installer/ffprobe';import Yt from'figlet';import es from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import*as be from'fs';import {pathToFileURL}from'url';var Re=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=q(s);return this.cache.set(s,r),r}spinner=createSpinner("",{color:"green"});logger=Et({level:"silent",enabled:false});events=new EventEmitter;groupCache=new _e({stdTTL:300,useClones:false});collectors=new Map},a=new Re;var y=o=>o,Ye=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(o){throw o}},Xe=async o=>{try{let e=`.session/${o}/auth/creds.json`;await Le.unlink(e);}catch(e){throw a.spinner.error(`Failed to remove auth creds for session "${o}"!`),e}},E=(o="")=>o?.length?o.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var v=(o,e="lime")=>Array.isArray(e)?et(e)(o):et([e,e])(o),Ee=o=>{try{return JSON.parse(o)}catch{return b.attempt(()=>JSON.parse(JSON.stringify(o)||"{}"))}},ee=o=>{try{return JSON.stringify(o)}catch{let e=b.attempt(()=>JSON.stringify(Ee(o)||"{}"));return b.isError(e)?"{}":e}},Gs=(o="")=>b.shuffle(o).join(""),te=(o="",e="")=>o?b.includes(o.toLowerCase(),e.toLowerCase()):null,tt=(o="")=>o?b.castArray(o.match(URL_REGEX)||[]):[],Ks=o=>o[Math.floor(Math.random()*o.length)],A=(o,e)=>{for(let t of o||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},st=(o,e)=>{let t=b.castArray(e),s=(n,c)=>b.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>b.some(c,(p,l)=>n?.[l]===p),i=n=>b.isArray(n)?b.find(n,i)??n:b.isObject(n)?b.find(t,l=>s(n,l))||b.find(t,l=>r(n,l))?n:b.find(b.values(n),i)??n:null;return i(o)},Hs=(o,e,t)=>new Proxy(o,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var N=o=>{let e;Array.isArray(o)?e=o.join("|"):typeof o=="string"?e=o:e=String(o);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},it=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))e.add(t[1]);return b.toArray(e)},We=(o="")=>{if(!o)return [];let e=new Set;for(let t of o.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return b.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ti=o=>b.isEmpty(o)?[]:b.map([...o],e=>`${e}@s.whatsapp.net`),rt=o=>b.omit(o,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),G=o=>{if(!o)return {leaf:void 0,chain:[]};let e=extractMessageContent(o)||o,t=[];for(;e&&typeof e=="object";){let s=getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},W=o=>Number(o?.split("@")[0]);K.setFfmpegPath(Ft.path);K.setFfprobePath(zt.path);var h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return De__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Le.unlink(t)));}static async safeReadFile(e){try{return await Le.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Le.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},I=class{static async toBuffer(e){if(b.isBuffer(e))return e;if(b.isArrayBuffer(e))return Buffer.from(e);if(b.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},D=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},H=class{static async process(e){return new Promise((t,s)=>{let r=K(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{K.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},se=class{static async getWaAudio(e,t="opus"){let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);D.validate(r,h.MIME.AUDIO);let i=M.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",n);await M.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await H.process({input:i,output:c,options:l,onEnd:async()=>{p=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([i,c]);}}),await M.cleanup([i,c]),p}catch(l){throw await M.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},L=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);D.validate(s,h.MIME.VIDEO);let r=M.createTempPath("video","mp4"),i=M.createTempPath("thumb","jpg");await M.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{K(r).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:De__default.basename(i),folder:De__default.dirname(i),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await M.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await M.cleanup([r,i]),n}catch(c){throw await M.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return H.getDuration(e)}},ie=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===h.MIME.GIF?Ne(e,{animated:false}):Ne(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Ne(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},Z=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s||!D.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(h.MIME.VIDEO)?L.getThumbnail(e):ie.getThumbnail(t)}},re=class{static createExifMetadata(e){let t={"sticker-pack-id":N(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=M.createTempPath("sticker_in",r),n=M.createTempPath("sticker_out","webp");await M.safeWriteFile(i,e);let c=h.STICKER.MAX_DURATION;try{let x=await L.getDuration(i);c=y(Math.min(x,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let p=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),k;try{return await H.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await M.safeReadFile(n);},onError:async()=>{await M.cleanup([i,n]);}}),await M.cleanup([i,n]),k}catch(x){throw await M.cleanup([i,n]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||h.STICKER.DEFAULT_QUALITY,c=D.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await ie.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Dt.Image;await l.load(c),l.exif=p;let k=await l.save(null);return Buffer.isBuffer(k)?k:Buffer.from(k)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},ne=class{static async create(e){try{let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:N(Date.now().toString()),jpegThumbnail:await Z.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},oe=I.toBuffer.bind(I),nt=se.getWaAudio.bind(se),yi=L.getThumbnail.bind(L),hi=L.getDuration.bind(L),Oe=Z.getThumbnail.bind(Z),ot=re.create.bind(re),at=ne.create.bind(ne);var $e=class o{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new o)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new Mutex,this.kLocks.set(e,t);}return t}},je=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=$e.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await mkdir(dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return st(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,k=Math.min(l+this.size,r.length),x=r.subarray(l,k);c.push(writeFile(join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:x.toString("base64")})));}return c.push(writeFile(join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(readFile(join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(k=>Buffer.from(JSON.parse(k).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(unlink(join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(unlink(join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await readdir(this.chunkDir)).length===0&&await rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},q=(o,e)=>new je(o,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var mt=async o=>{a.spinner.start(" Initializing auth state...");let e=await stat(o).catch(()=>{});if(e){if(!e.isDirectory())throw a.spinner.error(` Failed to open credentials
|
|
2
|
-
`),`found something that is not a directory at ${
|
|
3
|
-
by ${
|
|
4
|
-
`,i=e?"lime":"orange",n=await
|
|
5
|
-
`),await r()),x&&await s();}if(n==="open")if(e.user?.id){let l=jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;a.spinner.success(` Connected as ${cristal(k||l)}`);}else a.spinner.success(" Connected!");a.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,a.spinner.start(" Syncing messages history..."),i&&a.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(a.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),a.events.emit("connection",t);});}};var kt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ve={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ue=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var de=class{constructor(e){this.client=e;this.limiter=new ue(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=a.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),a.set("message",i),a.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=a.get("socket"),i={},n=G(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=G(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=kt[c],i.receiverId=jidNormalizedUser(r?.user?.id||""),i.receiverName=E(r?.user?.name||r?.user?.verifiedName),i.roomId=jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,k=p?.type===1,x=p?.type===2,X=i.roomId?.includes("@newsletter"),Ae=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ie=p?.key?.id;if(l||k||x){let S=(await this.client.db("messages").get(i.roomId))?.find(B=>B.key.id===Ie);if(!S)return;e=S,n=G(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=A([e?.key],["remoteJidAlt","participant"])||null,i.senderId=jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=E(e?.pushName||e?.verifiedBizName),i.senderDevice=getDevice(i.chatId),i.channelId=N([i.roomId,i.senderId]),i.uniqueId=N([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,X){let C=await r.newsletterMetadata("jid",i.roomId);i.roomName=y(C.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(z&&(i.senderLid=jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=Ee(p?.paramsJson)?.id),i.text=E(i.text),i.mentions=it(i.text),i.links=tt(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=z,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=X,i.isQuestion=Ae,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!te(ee(n),"editedMessage"),i.isDeleted=l,i.isPinned=k,i.isUnPinned=x,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!te(ee(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!te(ee(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let C=this.client.options.citation;for(let S of Object.keys(C)){let B=C[S];i.citation[S]=async()=>{let U=await B(),Pe=[W(i.roomId),W(i.senderLid),W(i.senderId)];return !!b.intersection(Pe,U).length};}}i.chatType!=="text"&&(i.media={...rt(p),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let $=p?.contextInfo?.quotedMessage,j=A([$],["viewOnceMessageV2Extension","viewOnceMessage"]),_=p?.contextInfo?.stanzaId;if($&&!this.maxReplies){this.maxReplies--;let S=(await this.client.db("messages").get(i.roomId))?.find(U=>U.key.id===_),B={...S,...G(j).leaf};j?(i.replied=await this.parse(B,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(S,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var fe=class{constructor(e){this.client=e;this.connection=new le(e),this.messages=new de(e),this.calls=new ae(e),this.initialize();}connection;messages;calls;async initialize(){let e=a.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);a.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").push(n.id,n);for(let n of r)await this.client.db("contacts").push(n.id,n);for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(n.key.remoteJid,n);}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(s.key.remoteJid,s);}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").push(s.id,s);}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").push(s.id,s);});}};var Q=(o,e)=>{let t=o.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var os=u.object({type:u.literal("quick_reply"),text:u.string()}),as=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),cs=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),ps=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),ls=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),us=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([os,as,cs,ps,ls]).array()}),ms=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),Mt=u.union([ms,us]);var Y=u.url().or(u.base64()).or(u.instanceof(Buffer)),vt=u.object({text:u.string()}).passthrough(),ds=u.object({image:Y,caption:u.string().optional()}).passthrough(),fs=u.object({audio:Y,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),gs=u.object({video:Y,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),ys=u.object({sticker:Y,caption:u.string().optional()}).passthrough(),hs=u.object({document:Y,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),ks=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),ws=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),Ms=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),bt=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:Mt.optional()});u.enum(["forward","button","edit","delete"]);var vs=u.union([vt,ds,fs,gs,ys,hs,ks,ws,Ms]),Tt=u.string().or(u.intersection(vs,bt.omit({buttons:true}))),xt=u.intersection(vt,bt.omit({banner:true}));var ge=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=y(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:y(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=a.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var ye=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=Q(xt,t):t=Q(Tt,t));let i=a.get("socket"),n={},c={},p=b.isString(t),l=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,x=this.client.options?.autoPresence,X=b.has(t,"replied"),Ae=b.has(t,"banner"),z=b.has(t,"isViewOnce"),Ie=s=="button",$=b.has(t,"image"),j=b.has(t,"video"),_=b.has(t,"audio"),C=b.has(t,"sticker"),S=b.has(t,"document"),B=b.has(t,"location"),U=b.has(t,"contacts"),Pe=b.has(t,"poll"),Ze=$||j||_||C||S,V=p?t:A([t],["text","caption"]);if(x&&(_?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),k&&(n={...n,mentions:We(V),contextInfo:{mentionedJid:We(V)}}),X&&(c.quoted=y(t).replied,l&&(c.quoted.key.remoteJid=Ve[l],c.quoted.key.participant=Ve[l])),Ae&&(n={...n,contextInfo:{externalAdReply:y(t).banner}},n.contextInfo.externalAdReply.mediaType=1),z&&(n={...n,viewOnce:y(t)?.isViewOnce}),V&&(n={...n,text:V,caption:V},Ze&&delete y(n).text),Ze){let w=A([t],["image","video","audio","sticker","document"]),P=b.isString(w)?{url:w}:w;if($&&(n={...n,image:P,jpegThumbnail:await Oe(w)}),j){let R=y(t)?.ptv;n={...n,video:P,ptv:R,jpegThumbnail:await Oe(w)};}if(_){let R=y(t)?.ptt;n={...n,audio:await nt(w),ptt:R,mimetype:R?"audio/ogg; codecs=opus":"audio/mpeg"};}if(C&&(n={...n,sticker:await ot(w,this.client.options?.sticker)}),S){let R=await at(w);n={...n,fileName:y(t).fileName,...R};}}if(B){let w=y(t).location;n={...n,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(U){let w=y(t)?.contacts,Qe=w?.contacts.map(P=>{let R=["BEGIN:VCARD","VERSION:3.0",`FN:${P.fullname}`,`ORG:${P.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${P.phoneNumber}:${P.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
-
`);return {displayName:
|
|
7
|
-
`;e?.isNewsletter?p+=`${
|
|
8
|
-
`:p+=`${
|
|
9
|
-
`,p+=`${
|
|
10
|
-
`,p+="\u2014",console.log(p);}call(e){if(!
|
|
11
|
-
`;i+=`${
|
|
12
|
-
`,i+=`${
|
|
13
|
-
`,i+="\u2014",console.log(i);}};var
|
|
1
|
+
import as,{URL_REGEX,extractMessageContent,getContentType,BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,isJidBroadcast,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import Fe,{readFile,mkdir,writeFile,unlink,readdir,rmdir,stat}from'fs/promises';import {Mutex}from'async-mutex';import*as _e from'path';import _e__default,{dirname,join}from'path';import {createSpinner}from'nanospinner';import Je from'node-cache';import {EventEmitter}from'events';import Bt from'pino';import it,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import Z from'fluent-ffmpeg';import Ut from'node-webpmux';import {tmpdir}from'os';import Be from'sharp';import qt from'@ffmpeg-installer/ffmpeg';import Jt from'@ffprobe-installer/ffprobe';import*as O from'fs';import {promises}from'fs';import ps from'figlet';import us from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z}from'zod';import {pathToFileURL}from'url';var De=class{data=new Map;cache=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t});}get(e){return this.data.get(e)||{}}update(e,t){let s=this.get(e);this.set(e,t(s));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}lowdb(e,t){let s=`.session/${e}/${t}`;if(this.cache.has(s))return this.cache.get(s);let r=G(s);return this.cache.set(s,r),r}spinner=createSpinner("",{color:"green"});logger=Bt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Je({stdTTL:300,useClones:false});collectors=new Map},o=new De;var h=a=>a,tt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},st=async a=>{try{let e=`.session/${a}/auth/creds.json`;await Fe.unlink(e);}catch(e){throw o.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},E=(a="")=>a?.length?a.normalize("NFKD").replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,"").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,"").replace(/[\u202A-\u202E\u2066-\u2069]/gu,"").replace(/\u202E([\s\S]*?)\u202C?/gu,(t,s)=>[...s].reverse().join("")):null;var M=(a,e="lime")=>Array.isArray(e)?it(e)(a):it([e,e])(a),Le=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},se=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Le(a)||"{}"));return S.isError(e)?"{}":e}},ri=(a="")=>S.shuffle(a).join(""),ie=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,rt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],ni=a=>a[Math.floor(Math.random()*a.length)],C=(a,e)=>{for(let t of a||[])if(t&&typeof t=="object"){for(let s of e)if(s in t&&t[s]!==void 0&&t[s]!==null)return t[s]}},nt=(a,e)=>{let t=S.castArray(e),s=(n,c)=>S.every(c,(p,l)=>n?.[l]===p),r=(n,c)=>S.some(c,(p,l)=>n?.[l]===p),i=n=>S.isArray(n)?S.find(n,i)??n:S.isObject(n)?S.find(t,l=>s(n,l))||S.find(t,l=>r(n,l))?n:S.find(S.values(n),i)??n:null;return i(a)},oi=(a,e,t)=>new Proxy(a,{apply(s,r,i){e?.(i);let n=Reflect.apply(s,r,i);return t?t(n,i):n}});var N=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,s=e.length;for(let r=0;r<s;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},ot=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},Oe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},mi=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),at=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"]),H=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let s=getContentType(e);if(!s)break;t.push(s);let r=e[s];if(!r||typeof r!="object"){e=r;break}e=r;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);Z.setFfmpegPath(qt.path);Z.setFfprobePath(Jt.path);var k={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},v=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return _e__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>Fe.unlink(t)));}static async safeReadFile(e){try{return await Fe.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await Fe.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},I=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 s=await t.arrayBuffer();return Buffer.from(s)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},B=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(k.MIME.IMAGE)||e.startsWith(k.MIME.VIDEO)}static isAnimated(e){return e===k.MIME.GIF||e.startsWith(k.MIME.VIDEO)}},Q=class{static async process(e){return new Promise((t,s)=>{let r=Z(e.input).output(e.output);for(let i=0;i<e.options.length;i++){let n=e.options[i];n.startsWith("-")&&i+1<e.options.length&&!e.options[i+1].startsWith("-")?(r.outputOptions(n,e.options[i+1]),i++):r.outputOptions(n);}r.on("end",async()=>{try{await e.onEnd(),t();}catch(i){s(i);}}).on("error",async i=>{try{await e.onError(i);}finally{s(i);}}).run();})}static async getDuration(e){return new Promise((t,s)=>{Z.ffprobe(e,(r,i)=>{if(r)return s(r);t(i.format.duration||0);});})}},re=class{static async getWaAudio(e,t="opus"){let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);B.validate(r,k.MIME.AUDIO);let i=v.createTempPath("audio_in","wav"),n=t==="opus"?"ogg":"mp3",c=v.createTempPath("audio_out",n);await v.safeWriteFile(i,s);let p;try{let l=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Q.process({input:i,output:c,options:l,onEnd:async()=>{p=await v.safeReadFile(c);},onError:async()=>{await v.cleanup([i,c]);}}),await v.cleanup([i,c]),p}catch(l){throw await v.cleanup([i,c]),new Error(`${t.toUpperCase()} conversion failed: ${l.message}`)}}},D=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);B.validate(s,k.MIME.VIDEO);let r=v.createTempPath("video","mp4"),i=v.createTempPath("thumb","jpg");await v.safeWriteFile(r,t);let n;try{return await new Promise((c,p)=>{Z(r).screenshots({timestamps:[k.THUMBNAIL.TIMESTAMP],filename:_e__default.basename(i),folder:_e__default.dirname(i),size:`${k.THUMBNAIL.SIZE}x${k.THUMBNAIL.SIZE}`,quality:k.THUMBNAIL.QUALITY}).on("end",async()=>{try{n=(await v.safeReadFile(i)).toString("base64"),c();}catch(l){p(l);}}).on("error",p);}),await v.cleanup([r,i]),n}catch(c){throw await v.cleanup([r,i]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Q.getDuration(e)}},ne=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===k.MIME.GIF?Be(e,{animated:false}):Be(e)).resize(k.THUMBNAIL.SIZE,k.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:k.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t){return Be(e).resize(k.STICKER.SIZE,k.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}}).webp({quality:t}).toBuffer()}},Y=class{static async getThumbnail(e){let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s||!B.isMedia(s.mime))throw new Error("Invalid media type: expected image or video");return s.mime.startsWith(k.MIME.VIDEO)?D.getThumbnail(e):ne.getThumbnail(t)}},oe=class{static createExifMetadata(e){let t={"sticker-pack-id":N(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},s=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),r=Buffer.from(JSON.stringify(t),"utf8"),i=Buffer.concat([s,r]);return i.writeUIntLE(r.length,14,4),i}static async processAnimated(e,t,s){let r=this.getExtension(t),i=v.createTempPath("sticker_in",r),n=v.createTempPath("sticker_out","webp");await v.safeWriteFile(i,e);let c=k.STICKER.MAX_DURATION;try{let b=await D.getDuration(i);c=h(Math.min(b,k.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",k.STICKER.MAX_DURATION);}let p=`scale=${k.STICKER.SIZE}:${k.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${k.STICKER.SIZE}:${k.STICKER.SIZE},fps=${k.STICKER.FPS},format=rgba`,l=Math.max(1,Math.min(100,100-s)),y;try{return await Q.process({input:i,output:n,options:["-vcodec libwebp",`-vf ${p}`,`-q:v ${l}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${k.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{y=await v.safeReadFile(n);},onError:async()=>{await v.cleanup([i,n]);}}),await v.cleanup([i,n]),y}catch(b){throw await v.cleanup([i,n]),new Error(`Animated sticker processing failed: ${b.message}`)}}static getExtension(e){return e===k.MIME.GIF?"gif":e.startsWith(k.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let s=await I.toBuffer(e),r=await fileTypeFromBuffer(s);if(!r)throw new Error("Unable to detect file type");let i=t?.quality||k.STICKER.DEFAULT_QUALITY,c=B.isAnimated(r.mime)?await this.processAnimated(s,r.mime,i):await ne.resizeForSticker(s,i),p=this.createExifMetadata(t),l=new Ut.Image;await l.load(c),l.exif=p;let y=await l.save(null);return Buffer.isBuffer(y)?y:Buffer.from(y)}catch(s){throw new Error(`Sticker creation failed: ${s.message||s}`)}}},ae=class{static async create(e){try{let t=await I.toBuffer(e),s=await fileTypeFromBuffer(t);if(!s)throw new Error("Unable to detect file type");return {document:t,mimetype:s.mime,fileName:N(Date.now().toString()),jpegThumbnail:await Y.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ce=I.toBuffer.bind(I),ct=re.getWaAudio.bind(re),Ci=D.getThumbnail.bind(D),Ii=D.getDuration.bind(D),$e=Y.getThumbnail.bind(Y),pt=oe.create.bind(oe),lt=ae.create.bind(ae);var mt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},pe=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),s=JSON.parse(t),r=["sender-key:","session:"],i={},n=!1;for(let[c,p]of Object.entries(s))r.some(y=>c.startsWith(y))?n=!0:i[c]=p;n&&(await promises.writeFile(e,JSON.stringify(i,null,2)),o.spinner.success(" Session keys repaired successfully"));}catch{o.spinner.warn(" Could not repair session keys, will re-negotiate");}},dt=()=>{let a=o.get("socket");return a?.end?a:null};var Gt=6e4,Kt=12e4,Ht=6e4,Zt=3,ze=class{lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;isRecovering=false;retryCount=0;options;constructor(e){this.options={checkIntervalMs:Gt,staleThresholdMs:Kt,cooldownMs:Ht,maxRetries:Zt,onRecovery:async()=>{},...e};}start(){this.checkInterval||(this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),o.spinner.success(" Session watchdog started"));}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=o.get("socket");if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update"];for(let s of t)e.ev.on(s,()=>this.touch());}async check(){if(this.isRecovering)return;Date.now()-this.lastActivityTime>this.options.staleThresholdMs&&await this.recover();}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){o.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){o.spinner.error(` Max recovery retries (${this.options.maxRetries}) reached. Manual restart required.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{o.spinner.warn(` Session recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=o.get("socket");if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),o.spinner.success(" Session health check passed");return}catch{}await pe(this.options.session),o.spinner.warn(" Forcing reconnection..."),await this.options.onRecovery(),this.touch();}catch{o.spinner.error(" Recovery failed");}finally{this.isRecovering=false;}}}async forceRecovery(){if(this.isInCooldown()){o.spinner.warn(" Recovery blocked by cooldown");return}await this.recover();}},X=null,ft=a=>(X&&X.stop(),X=new ze(a),X),Ni=()=>X;var Ve=class a{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||(this.inst=new a)}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let s=this.fLocks.keys().next().value;this.fLocks.delete(s);}t=new Mutex,this.fLocks.set(e,t);}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let s=this.kLocks.keys().next().value;this.kLocks.delete(s);}t=new Mutex,this.kLocks.set(e,t);}return t}},qe=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=false;flushMode;debounceMs;flushTimer=null;dirty=false;constructor(e,t,s=2*1024*1024,r="debounce",i=200){this.data=new Map,this.path=e,this.pool=Ve.get(),this.size=s,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i;}async ensureLoaded(){this.loaded||(await this.read(),this.loaded=true);}scheduleFlush(){if(this.flushMode!=="manual"){if(this.flushMode==="sync"){this.write();return}this.dirty=true,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=false,this.write());},this.debounceMs));}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let t=await readFile(this.path,"utf-8"),s=JSON.parse(t,this.reviver);this.data.clear();let r=[];for(let[i,n]of Object.entries(s))this.isMeta(n)?r.push(this.loadChunk(i,n)):this.data.set(i,n);return await Promise.all(r),this.loaded=!0,this.data}catch{return await mkdir(dirname(this.path),{recursive:true}),this.data.clear(),this.loaded=true,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let t={},s=[];for(let[i,n]of this.data){if(this.isMeta(n)){t[i]=n;continue}JSON.stringify(n,this.replacer).length>this.size?s.push(this.saveChunk(i,n).then(p=>{t[i]=p;})):t[i]=n;}await Promise.all(s);let r=JSON.stringify(t,this.replacer,2);await writeFile(this.path,r,"utf-8");})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush();});}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let r=this.data.get(e),i;Array.isArray(r)?i=r:r===void 0?i=[]:i=[r],i.push(t),this.data.set(e,i),this.scheduleFlush();});}async get(e){if(await this.ensureLoaded(),typeof e=="string")return this.data.get(e);let t=Array.from(this.data.values()).flat();return nt(t,e)}async all(){return await this.ensureLoaded(),Array.from(this.data.entries())}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let s=this.data.get(e);this.isMeta(s)&&await this.delChunk(e,s);let r=this.data.delete(e);return this.scheduleFlush(),r})}async saveChunk(e,t){let s=JSON.stringify(t,this.replacer),r=Buffer.from(s,"utf-8"),i=Math.ceil(r.length/this.size);await mkdir(this.chunkDir,{recursive:true});let n={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},c=[];for(let p=0;p<i;p++){let l=p*this.size,y=Math.min(l+this.size,r.length),b=r.subarray(l,y);c.push(writeFile(join(this.chunkDir,`${e}.${p}.json`),JSON.stringify({i:p,d:b.toString("base64")})));}return c.push(writeFile(join(this.chunkDir,`${e}.manifest.json`),JSON.stringify(n))),await Promise.all(c),{t:i,s:this.size,k:e}}async loadChunk(e,t){let s=join(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await readFile(s,"utf-8")),i=[];for(let l=0;l<r.t;l++)i.push(readFile(join(this.chunkDir,`${e}.${l}.json`),"utf-8").then(y=>Buffer.from(JSON.parse(y).d,"base64")));let n=await Promise.all(i),c=Buffer.concat(n),p=JSON.parse(c.toString("utf-8"),this.reviver);this.data.set(e,p);}async delChunk(e,t){let s=[];for(let r=0;r<t.t;r++)s.push(unlink(join(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));s.push(unlink(join(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(s);try{(await readdir(this.chunkDir)).length===0&&await rmdir(this.chunkDir);}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}},G=(a,e)=>new qe(a,e?.BufferJSON,e?.size,e?.flushMode,e?.debounceMs);var wt=async a=>{o.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw o.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=G(`${a}/auth/creds.json`,{BufferJSON:BufferJSON}),s=G(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024});await Promise.all([t.read(),s.read()]);let r=await t.get("creds")||initAuthCreds();return o.spinner.success(" Generate auth successfully"),{state:{creds:r,keys:{get:async(i,n)=>{let c={};return await Promise.all(n.map(async p=>{let l=`${i}:${p}`,y=await s.get(l);i==="app-state-sync-key"&&y&&(y=proto.Message.AppStateSyncKeyData.fromObject(y)),c[p]=y;})),c},set:async i=>{let n=[];for(let c in i)for(let p in i[c]){let l=i[c][p],y=`${c}:${p}`;l?n.push(s.set(y,l)):n.push(s.delete(y).then(()=>{}));}await Promise.all(n),await s.write();}}},saveCreds:async()=>{await t.set("creds",r),await t.write();}}};var os=new Je,vt=(a,e)=>({logger:o.logger,printQRInTerminal:false,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Je,mediaCache:new Je({stdTTL:60}),cachedGroupMetadata:async t=>os.get(t),shouldIgnoreJid:t=>isJidBroadcast(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,o.logger)},getMessage:async t=>{if(t?.id)return await a.db("messages").get(t.id)}});var Mt=async a=>{let e=dt();e&&mt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:s,saveCreds:r}=await wt(t),i=vt(a,s),n=as(i);n.ev.on("creds.update",r),o.set("socket",n);};var le=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=o.get("socket");e.ev.on("call",async t=>{for(let s of t){let r=await this.parse(s);r&&(await this.client.middleware.run({calls:r}),await this.client.plugins.execute(this.client,{messages:r}),o.events.emit("calls",r),this.client.options?.autoRejectCall&&await e.rejectCall(r.callId,r.callerId));}});}async parse(e){let t=o.get("socket"),s={};return s.callId=e.id,s.callerId=jidNormalizedUser(e.from),s.callerName=await this.client.getRoomName(s.callerId),s.roomId=jidNormalizedUser(e.chatId),s.roomName=E(t?.user?.name||t?.user?.verifiedName),s.date=e.date,s.offline=e.offline,s.status=e.status,s.isVideo=!!e.isVideo,s.isGroup=!!e.isGroup,this.client.logs.call(s),s}};var ue={version:"2.0.7",author:"zaadevofc"};var Tt=a=>{us.generate(a,{small:true},e=>{console.log(e);});},bt=async()=>{console.clear(),o.spinner.start(" Checking for updates...");let a=await tt(),e=ue.version===a;o.spinner.stop();let t="Zaileys",s=`
|
|
3
|
+
by ${ue.author} \xB7 v${ue.version}`,r=`${e?"Already using latest version!":`Update available! (v${a})`}
|
|
4
|
+
`,i=e?"lime":"orange",n=await ps.text(t),c=cristal(n);console.log(c),console.log(M(s,"dimgray")),console.log(M(r,i));};var fe=class{constructor(e){this.client=e;this.initialize();}async initialize(){o.spinner.start(" Initializing connection...");let e=o.get("socket"),t={},s=async()=>{t.status="reload",o.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},r=async()=>{await delay(3e3),o.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await st(this.client.options.session),await s();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){o.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let i=new Date(t.authTimeout).toLocaleTimeString(),n=await e.requestPairingCode(this.client.options.phoneNumber.toString());o.spinner.warn(` Pairing expired at ${cristal(i)}`),o.spinner.warn(` Pairing code: ${n}`),t.code=n;}catch{await r();}}e.ev.on("connection.update",async i=>{let{connection:n,lastDisconnect:c,qr:p}=i;if(t.status=n||"connecting",t.authType=this.client.options.authType,o.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&p){t.authTimeout=Date.now()+6e4;let l=new Date(t.authTimeout).toLocaleTimeString();o.spinner.warn(" Please scan the QR code..."),o.spinner.warn(` Qr code expired at ${cristal(l)}`),Tt(p),t.qr=p;return}if(n==="close"){let l=h(c?.error)?.output?.statusCode,y=c?.error?.message||"",b=typeof l=="number"&&l!==DisconnectReason.loggedOut,F=l===515||y.toLowerCase().includes("prekey");if(o.spinner.error(` [${l} - Closed] ${y}`),F){o.spinner.warn(" Session key mismatch detected, attempting repair..."),await pe(this.client.options.session),await delay(1e3),await s();return}(l===401||l===405||l===500)&&(o.spinner.error(" Invalid session, please delete manually!"),o.spinner.error(` Session "${this.client.options.session}" has not valid, please delete it!
|
|
5
|
+
`),await r()),b&&await s();}if(n==="open")if(e.user?.id){let l=jidNormalizedUser(e.user.id).split("@")[0],y=e.user.name||e.user.verifiedName;o.spinner.success(` Connected as ${cristal(y||l)}`);}else o.spinner.success(" Connected!");o.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:i})=>{t.status="syncing",t.syncProgress=i,o.spinner.start(" Syncing messages history..."),i&&o.spinner.update(` Syncing messages history ${i+"%"}`),i==100&&(o.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),o.events.emit("connection",t);});}};var xt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ge={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 ge=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 ge(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=o.get("socket");e.ev.on("messages.upsert",async({messages:t,type:s})=>{if(s==="notify")for(let r of t){let i=await this.parse(r);i&&(this.client.collector.push(i)||(await this.client.middleware.run({messages:i}),await this.client.plugins.execute(this.client,{messages:i}),o.set("message",i),o.events.emit("messages",i)),this.client.options.autoRead&&await e.readMessages([i.message().key]));}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage||e.message?.groupStatusMentionMessage)return;let s=e,r=o.get("socket"),i={},n=H(e.message),c=n.chain.at(-1),p=n.leaf;p?.message&&(n=H(p.message),c=n.chain.at(-1),p=n.leaf),i.uniqueId=null,i.channelId=null,i.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,i.chatType=xt[c],i.receiverId=jidNormalizedUser(r?.user?.id||""),i.receiverName=E(r?.user?.name||r?.user?.verifiedName),i.roomId=jidNormalizedUser(e?.key?.remoteJid);let l=p?.type===0,y=p?.type===1,b=p?.type===2,F=i.roomId?.includes("@newsletter"),Pe=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Ee=p?.key?.id;if(l||y||b){let x=(await this.client.db("messages").get(i.roomId))?.find(L=>L.key.id===Ee);if(!x)return;e=x,n=H(e.message),c=n.chain.at(-1),p=n.leaf;}if(i.roomName=await this.client.getRoomName(i.roomId),i.senderLid=C([e?.key],["remoteJidAlt","participant"])||null,i.senderId=jidNormalizedUser(e?.participant||e?.key?.participant||e?.key?.remoteJid),i.senderName=E(e?.pushName||e?.verifiedBizName),i.senderDevice=getDevice(i.chatId),i.channelId=N([i.roomId,i.senderId]),i.uniqueId=N([i.channelId,i.chatId]),i.timestamp=Number(e?.messageTimestamp)*1e3,F){let A=await r.newsletterMetadata("jid",i.roomId);i.roomName=h(A.thread_metadata.name)?.text,i.senderId=null,i.senderLid=null;}if(z&&(i.senderLid=jidNormalizedUser(r.user.lid),i.senderId=i.receiverId,i.senderName=i.receiverName),i.text=p?.text||p?.caption||p?.name||p?.displayName||p?.conversation||p?.contentText||p?.selectedDisplayText||p||null,p?.name=="menu_options"&&(i.text=Le(p?.paramsJson)?.id),i.text=E(i.text),i.mentions=ot(i.text),i.links=rt(i.text||""),i.isBot=i.chatId.startsWith("BAE5")||i.chatId.startsWith("3EB0")||i.chatId.startsWith("Z4D3FC"),i.isFromMe=z,i.isTagMe=i.mentions?.includes(i.receiverId.split("@")[0]),i.isPrefix=i.text?.startsWith(this.client.options?.prefix)||false,i.isSpam=await this.limiter.isSpam(i.channelId),i.isGroup=i.roomId?.includes("@g.us"),i.isNewsletter=F,i.isQuestion=Pe,i.isStory=i.roomId?.includes("@broadcast"),i.isViewOnce=false,i.isEdited=!!ie(se(n),"editedMessage"),i.isDeleted=l,i.isPinned=y,i.isUnPinned=b,i.isBroadcast=!!e?.broadcast,i.isEphemeral=!!ie(se(p?.contextInfo),"ephemeralSettingTimestamp"),i.isForwarded=!!ie(se(p?.contextInfo),"forwardingScore"),i.citation=null,this.client.options.citation){i.citation=i.citation||{};let A=this.client.options.citation;for(let x of Object.keys(A)){let L=A[x];i.citation[x]=async()=>{let q=await L(),We=[W(i.roomId),W(i.senderLid),W(i.senderId)];return !!S.intersection(We,q).length};}}i.chatType!=="text"&&(i.media={...at(p),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),i.message=()=>s,i.replied=null;let j=p?.contextInfo?.quotedMessage,U=C([j],["viewOnceMessageV2Extension","viewOnceMessage"]),V=p?.contextInfo?.stanzaId;if(j&&this.maxReplies){this.maxReplies--;let x=(await this.client.db("messages").get(i.roomId))?.find(q=>q.key.id===V),L={...x,...H(U).leaf};U?(i.replied=await this.parse(L,"replied"),i.replied.isViewOnce=true):i.replied=await this.parse(x,"replied"),this.maxReplies=3;}return this.client.logs.message(i),i}};var ke=class{constructor(e){this.client=e;this.connection=new fe(e),this.messages=new he(e),this.calls=new le(e),this.initialize();}connection;messages;calls;async initialize(){let e=o.get("socket");e.ev.on("groups.update",async([t])=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e.ev.on("group-participants.update",async t=>{let s=await e.groupMetadata(t.id);o.groupCache.set(t.id,s);}),e?.ev.on("messaging-history.set",async t=>{let{chats:s,contacts:r,messages:i}=t;for(let n of s)await this.client.db("chats").push(n.id,n);for(let n of r)await this.client.db("contacts").push(n.id,n);for(let n of i){if(!n.message&&!n.key.isViewOnce||n?.category==="peer"||n.message?.protocolMessage||n.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(n.key.remoteJid,n);}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let s of t){if(!s.message&&!s.key.isViewOnce||s?.category==="peer"||s.message?.protocolMessage||s.message?.groupStatusMentionMessage)return;await this.client.db("messages").push(s.key.remoteJid,s);}}),e?.ev.on("chats.upsert",async t=>{for(let s of t)await this.client.db("chats").push(s.id,s);}),e?.ev.on("contacts.upsert",async t=>{for(let s of t)await this.client.db("contacts").push(s.id,s);});}};var ee=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var hs=u.object({type:u.literal("quick_reply"),text:u.string()}),ks=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),ws=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),vs=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),Ms=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()}),Ss=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([hs,ks,ws,vs,Ms]).array()}),Ts=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),Ct=u.union([Ts,Ss]);var te=u.url().or(u.base64()).or(u.instanceof(Buffer)),It=u.object({text:u.string()}).passthrough(),bs=u.object({image:te,caption:u.string().optional()}).passthrough(),xs=u.object({audio:te,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),As=u.object({video:te,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),Cs=u.object({sticker:te,caption:u.string().optional()}).passthrough(),Is=u.object({document:te,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Rs=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(),Ps=u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()}),Es=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),Rt=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:Ct.optional()});u.enum(["forward","button","edit","delete"]);var Ws=u.union([It,bs,xs,As,Cs,Is,Rs,Ps,Es]),Pt=u.string().or(u.intersection(Ws,Rt.omit({buttons:true}))),Et=u.intersection(It,Rt.omit({banner:true}));var we=class{toNativeSimple(e){return e.map(({id:t,text:s})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:s,id:t})}))}toNativeInteractive(e){let t={quick_reply:s=>({display_text:s.text,id:s.id}),cta_url:s=>({display_text:s.text,url:s.url,merchant_url:s.url}),cta_copy:s=>({display_text:s.text,id:s.id,copy_code:s.copy}),cta_call:s=>({display_text:s.text,phone_number:s.phoneNumber}),single_select:s=>({title:s.text,sections:s.section})};return e.map(s=>({name:s.type,buttonParamsJson:JSON.stringify(t[s.type](s))}))}build(e){let t=h(e).buttons,s=t?.data||[],i=t?.type=="simple"?this.toNativeSimple(s):this.toNativeInteractive(s);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:i}}}async send(e,t,s){let r=o.get("socket"),i=r.authState?.creds?.me?.id||r.user?.id,n=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:n},{userJid:i,messageId:generateMessageIDV2(i),...s});return await r.relayMessage(e,c.message,{messageId:c.key.id,...s,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),r.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>r.upsertMessage?.(c,"append")),c}};var ve=class{constructor(e){this.client=e;}async signal(e,t,s,r){s!="delete"&&(s=="button"?t=ee(Et,t):t=ee(Pt,t));let i=o.get("socket"),n={},c={},p=S.isString(t),l=this.client.options?.fakeReply?.provider,y=this.client.options?.autoMentions,b=this.client.options?.autoPresence,F=S.has(t,"replied"),Pe=S.has(t,"banner"),z=S.has(t,"isViewOnce"),Ee=s=="button",j=S.has(t,"image"),U=S.has(t,"video"),V=S.has(t,"audio"),A=S.has(t,"sticker"),x=S.has(t,"document"),L=S.has(t,"location"),q=S.has(t,"contacts"),We=S.has(t,"poll"),Xe=j||U||V||A||x,J=p?t:C([t],["text","caption"]);if(b&&(V?await i.sendPresenceUpdate("recording",e):await i.sendPresenceUpdate("composing",e)),y&&(n={...n,mentions:Oe(J),contextInfo:{mentionedJid:Oe(J)}}),F&&(c.quoted=h(t).replied,l&&(c.quoted.key.remoteJid=Ge[l],c.quoted.key.participant=Ge[l])),Pe&&(n={...n,contextInfo:{externalAdReply:h(t).banner}},n.contextInfo.externalAdReply.mediaType=1),z&&(n={...n,viewOnce:h(t)?.isViewOnce}),J&&(n={...n,text:J,caption:J},Xe&&delete h(n).text),Xe){let w=C([t],["image","video","audio","sticker","document"]),R=S.isString(w)?{url:w}:w;if(j&&(n={...n,image:R,jpegThumbnail:await $e(w)}),U){let P=h(t)?.ptv;n={...n,video:R,ptv:P,jpegThumbnail:await $e(w)};}if(V){let P=h(t)?.ptt;n={...n,audio:await ct(w),ptt:P,mimetype:P?"audio/ogg; codecs=opus":"audio/mpeg"};}if(A&&(n={...n,sticker:await pt(w,this.client.options?.sticker)}),x){let P=await lt(w);n={...n,fileName:h(t).fileName,...P};}}if(L){let w=h(t).location;n={...n,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(q){let w=h(t)?.contacts,et=w?.contacts.map(R=>{let P=["BEGIN:VCARD","VERSION:3.0",`FN:${R.fullname}`,`ORG:${R.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${R.phoneNumber}:${R.phoneNumber}`,"END:VCARD"].join(`
|
|
6
|
+
`);return {displayName:R.fullname,vcard:P}});n={...n,contacts:{displayName:w?.title,contacts:et}};}if(We){let w=h(t)?.poll;n={...n,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return s=="forward"&&(n={...n,contextInfo:{...h(n).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),s=="edit"&&(n={...n,edit:r?.key},await i.sendPresenceUpdate("paused",e)),s=="delete"&&(n={...n,delete:r?.key},await i.sendPresenceUpdate("paused",e)),Ee?await new we().send(e,t,c):await i.sendMessage(e,h(n),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 s=o.get("socket"),r={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await s.sendPresenceUpdate(r[t],e)}async reaction(e,t){return await o.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}};var Ke=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").groupCreate(e,t)}async participant(e,t,s){return await o.get("socket").groupParticipantsUpdate(e,t,s)}async profile(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "subject":if(!i)return await r.groupUpdateSubject(e,t);case "description":if(!i)return await r.groupUpdateDescription(e,t);case "picture":return await r.updateProfilePicture(e,ce(t))}}async setting(e,t){let s=o.get("socket");switch(t){case "open":return await s.groupSettingUpdate(e,"not_announcement");case "close":return await s.groupSettingUpdate(e,"announcement");case "locked":return await s.groupSettingUpdate(e,t);case "unlocked":return await s.groupSettingUpdate(e,t);case "all_member_add":return await s.groupMemberAddMode(e,t);case "admin_add":return await s.groupMemberAddMode(e,t)}}async leave(e){return await o.get("socket").groupLeave(e)}async inviteCode(e,t){let s=o.get("socket");switch(t){case "code":return await s.groupInviteCode(e);case "revoke":return await s.groupRevokeInvite(e);case "accept":return await s.groupAcceptInvite(e);case "info":return await s.groupGetInviteInfo(e)}}async metadata(e){return await o.get("socket").groupMetadata(e)}async requestJoin(e,t,s){let r=o.get("socket");switch(s){case "approve":return await r.groupRequestParticipantsUpdate(e,t,s);case "reject":return await r.groupRequestParticipantsUpdate(e,t,s)}}async requestJoinList(e){return await o.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await o.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let s=o.get("socket"),r={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await s.groupToggleEphemeral(e,r[t])}},Me=class{constructor(e){this.glient=e;this.group=new Ke(e);}group};var Fs=z.object({maxMessages:z.number().default(20),durationMs:z.number().default(1e4)}).optional(),Ns=z.record(z.string(),z.function({output:z.promise(z.array(z.number()))})).optional(),Bs=z.object({provider:z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z.number())}).optional(),_s=z.object({packageName:z.string(),authorName:z.string(),quality:z.number()}).optional(),Wt=z.object({session:z.string().default("zaileys").optional(),prefix:z.string().optional(),ignoreMe:z.boolean().default(true).optional(),showLogs:z.boolean().default(true).optional(),syncFullHistory:z.boolean().default(true).optional(),autoMarkAI:z.boolean().default(true).optional(),autoMentions:z.boolean().default(true).optional(),autoOnline:z.boolean().default(true).optional(),autoRead:z.boolean().default(true).optional(),autoPresence:z.boolean().default(true).optional(),autoRejectCall:z.boolean().default(true).optional(),limiter:Fs,citation:Ns,fakeReply:Bs,sticker:_s}),$s=z.object({authType:z.literal("pairing"),phoneNumber:z.number()}),zs=z.object({authType:z.literal("qr")}),Dt=z.union([$s.extend(Wt.shape),zs.extend(Wt.shape)]);z.enum(["connection","messages","calls"]);var Se=class{collect(e,t,s){let r=t.max??1/0;if(r<=0){s([]);return}let i=o.collectors.get(e);i&&(clearTimeout(i.timeoutId),i.callback(i.messages),o.collectors.delete(e));let n=setTimeout(()=>{let c=o.collectors.get(e);c&&(c.callback(c.messages),o.collectors.delete(e));},t.timeout);o.collectors.set(e,{messages:[],max:r,filter:t.filter,callback:s,timeoutId:n});}push(e){let t=o.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),o.collectors.delete(e.channelId)),true)}has(e){return o.collectors.has(e)}cancel(e){let t=o.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),o.collectors.delete(e),t.messages):[]}};var Te=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true,o.get("socket").ev.on("connection.update",({connection:t})=>{this.logsDisplayed||t==="open"&&(this.logsDisplayed=true,this.isReady=true,console.log(),o.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());});}message(e){if(!this.isReady)return;let t=h(this.getRoomColor(e)),s=e?.text?.toLowerCase()?.match("zaileys"),r=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),i=M(`${e?.roomName}`,t),n=e?.text?.slice(0,300)||"",c=n?.length>=300?"...":"",p=`${r} \u2192 ${i}
|
|
7
|
+
`;e?.isNewsletter?p+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${W(e?.roomId)})`,t)}
|
|
8
|
+
`:p+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${W(e?.senderId)})`,t)}
|
|
9
|
+
`,p+=`${M(`[${e?.chatType}]`,"dimgray")} \u2192 ${M(n+c,s?["#ff5f6d","#ffc371"]:"brown")}
|
|
10
|
+
`,p+="\u2014",console.log(p);}call(e){if(!o.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),s=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),r=M(`${e?.roomName}`,t),i=`${s} \u2192 ${r}
|
|
11
|
+
`;i+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${W(e?.callerId)})`,t)}
|
|
12
|
+
`,i+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
|
|
13
|
+
`,i+="\u2014",console.log(i);}};var be=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,s=async r=>{if(r<=t)throw "next() called multiple times";t=r;let i=this.stack[r];if(i)try{await i(e,()=>s(r+1));}catch(n){throw console.error("Middleware error:",n),n}};await s(0);}};var xe=class{plugins=[];pluginsDir;constructor(e=_e.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!O.existsSync(e))return t;let s=O.readdirSync(e);for(let r of s){let i=_e.join(e,r);O.statSync(i).isDirectory()?this.getAllFiles(i,t):(r.endsWith(".ts")||r.endsWith(".js"))&&!r.endsWith(".d.ts")&&t.push(i);}return t}async load(){if(!O.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let r=(await import(pathToFileURL(t).href)).default;r?.default&&(r=r.default),r?.handler&&r?.config&&this.plugins.push(r);}catch{}}async execute(e,t){let s=t.messages.text||"";for(let r of this.plugins)try{this.match(s,r.config.matcher)&&await r.handler(e,t);}catch{}}match(e,t){return t.some(s=>e===s||e.startsWith(s+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},ho=(a,e)=>({handler:a,config:e});var Ae=class{classInjection(e,t){let s=t.length;return new Proxy(e,{get(r,i,n){if(i in r){let c=Reflect.get(r,i,n);return typeof c=="function"?c.bind(r):c}for(let c=0;c<s;c++){let p=t[c];if(i in p){let l=Reflect.get(p,i,n);return typeof l=="function"?l.bind(p):l}}},set(r,i,n,c){if(i in r)return Reflect.set(r,i,n,c);for(let p=0;p<s;p++){let l=t[p];if(i in l)return Reflect.set(l,i,n,c)}return Reflect.set(r,i,n,c)},has(r,i){if(i in e)return true;for(let n=0;n<s;n++)if(i in t[n])return true;return false},ownKeys(){let r=[];for(let i of Reflect.ownKeys(e))r.push(i);for(let i=0;i<s;i++)for(let n of Reflect.ownKeys(t[i]))r.includes(n)||r.push(n);return r},getOwnPropertyDescriptor(r,i){let n=Object.getOwnPropertyDescriptor(e,i);if(n)return n;for(let c=0;c<s;c++)if(n=Object.getOwnPropertyDescriptor(t[c],i),n)return n}})}};var Ze=class{constructor(e){this.client=e;}async block(e){return await o.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await o.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await o.get("socket").updateLastSeenPrivacy(e)}async online(e){return await o.get("socket").updateOnlinePrivacy(e)}async picture(e){return await o.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await o.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await o.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await o.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=o.get("socket"),s={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(s[e])}async blocklist(){return await o.get("socket").fetchBlocklist()}async getSettings(){return await o.get("socket").fetchPrivacySettings(true)}},Ce=class{constructor(e){this.plient=e;this.privacy=new Ze(e);}privacy};var Qe=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").newsletterCreate(e,t)}async action(e,t){let s=o.get("socket");switch(t){case "follow":return await s.newsletterFollow(e);case "unfollow":return await s.newsletterUnfollow(e);case "mute":return await s.newsletterMute(e);case "unmute":return await s.newsletterUnmute(e);}}async update(e,t,s){let r=o.get("socket"),i=Buffer.isBuffer(t);switch(s){case "name":if(!i)return await r.newsletterUpdateName(e,t);case "description":if(!i)return await r.newsletterUpdateDescription(e,t);case "picture":return await r.newsletterUpdatePicture(e,ce(t))}}async metadata(e,t){return await o.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await o.get("socket").newsletterSubscribers(e)}async reaction(e,t,s){return await o.get("socket").newsletterReactMessage(e,t,s)}async fetchMessages(e,t,s,r){let i=o.get("socket"),n=s.getTime()/1e3,c=r.getTime()/1e3;return await i.newsletterFetchMessages(e,t,n,c)}async adminCount(e){return await o.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await o.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await o.get("socket").newsletterDemote(e,t)}async delete(e){return await o.get("socket").newsletterDelete(e)}async removePicture(e){return await o.get("socket").newsletterRemovePicture(e)}},Ie=class{constructor(e){this.nlient=e;this.newsletter=new Qe(e);}newsletter};var Ye=class{constructor(e){this.client=e;}async create(e,t){return await o.get("socket").communityCreate(e,t)}async createGroup(e,t,s){return await o.get("socket").communityCreateGroup(e,t,s)}async leave(e){return await o.get("socket").communityLeave(e)}async metadata(e){return await o.get("socket").communityMetadata(e)}async update(e,t,s){let r=o.get("socket");switch(t){case "subject":return await r.communityUpdateSubject(e,s);case "description":return await r.communityUpdateDescription(e,s)}}async group(e,t,s){let r=o.get("socket");switch(t){case "link":if(!s)throw "Group JID is required for linking";return await r.communityLinkGroup(e,s);case "unlink":if(!s)throw "Group JID is required for unlinking";return await r.communityUnlinkGroup(e,s);case "linked":return await r.communityFetchLinkedGroups(e)}}async participants(e,t,s,r){let i=o.get("socket");switch(t){case "list":return await i.communityRequestParticipantsList(e);case "request-update":return await i.communityRequestParticipantsUpdate(e,r,h(s));case "update":if(!s||!r)throw "Action and participants are required for update";return await i.communityParticipantsUpdate(e,r,h(s));case "all":return await i.communityFetchAllParticipating()}}async invite(e,t,...s){let r=o.get("socket");switch(t){case "code":return await r.communityInviteCode(e);case "revoke":return await r.communityRevokeInvite(e);case "accept":return await r.communityAcceptInvite(e);case "info":return await r.communityGetInviteInfo(e);case "revokeV4":return await r.communityRevokeInviteV4(e,s[0]);case "acceptV4":return await r.communityAcceptInviteV4(e,s[0])}}async settings(e,t,s){let r=o.get("socket");switch(t){case "ephemeral":return await r.communityToggleEphemeral(e,s);case "update":return await r.communitySettingUpdate(e,s);case "memberAdd":return await r.communityMemberAddMode(e,s);case "approval":return await r.communityJoinApprovalMode(e,s)}}},Re=class{constructor(e){this.mlient=e;this.community=new Ye(e);}community};var Lt=class{constructor(e){this.options=e;this.options=ee(Dt,e);let t=new Ae().classInjection(this,[new ve(this),new Me(this),new Ce(this),new Ie(this),new Re(this)]);return this._ready=this.initialize(t),t}listener;_ready;watchdog=null;logs;collector=new Se;middleware=new be;plugins=new xe;async initialize(e){await bt(),await Mt(this),await this.plugins.load(),this.listener=new ke(e||this),this.logs=new Te(this),this.watchdog=ft({session:this.options.session,checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3,onRecovery:async()=>{await this.initialize(e);}}),this.watchdog.start(),this.setupPrekeyErrorDetection();}prekeyDetected=false;setupPrekeyErrorDetection(){let e=console.log,t=this.watchdog,s=this;console.log=(...r)=>{let i=r.map(n=>String(n)).join(" ").toLowerCase();return (i.includes("closing open session")||i.includes("prekey bundle"))&&!s.prekeyDetected&&(s.prekeyDetected=true,o.spinner.warn(" Prekey bundle error detected"),t?.forceRecovery(),setTimeout(()=>{s.prekeyDetected=false;},6e4)),e.apply(console,r)};}ready(){return this._ready}db(e){return o.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){o.events.on(e,t);}use(e){return this.middleware.use(e),this}async getMessageByChatId(e){let s=(await this.db("messages").all())?.flat()?.filter(r=>typeof r=="object")?.flat()?.find(r=>r?.key?.id===e);return await this.listener.messages.parse(s)}async getRoomName(e){let t=await this.db("chats").get(e),s=await this.db("contacts").get(e),r=C(t,["name","verifiedName"]),i=C(s,["notify","name"]);return E(r||i)||null}};
|
|
14
14
|
/*
|
|
15
15
|
* Copyright (c) 2025 zaadevofc.
|
|
16
16
|
* All rights reserved.
|
|
@@ -18,7 +18,7 @@ by ${ce.author} \xB7 v${ce.version}`,r=`${e?"Already using latest version!":`Upd
|
|
|
18
18
|
* See LICENSE file for details.
|
|
19
19
|
|
|
20
20
|
* Author: zaadevofc
|
|
21
|
-
* Last build time: 12/
|
|
21
|
+
* Last build time: 12/13/2025 11:09:15 PM
|
|
22
22
|
*
|
|
23
23
|
* Repository: git+https://github.com/zeative/zaileys.git
|
|
24
|
-
*/export{
|
|
24
|
+
*/export{re as AudioProcessor,Lt as Client,ae as DocumentProcessor,ne as ImageProcessor,qe as Lowdb,Y as MediaProcessor,xe as Plugins,ze as SessionWatchdog,oe as StickerProcessor,D as VideoProcessor,W as cleanJid,at as cleanMediaObject,mt as cleanupSocket,G as createLowdb,ft as createWatchdog,ho as definePlugins,Oe as extractJids,rt as extractUrls,ie as findGlobalWord,nt as findNestedByKeys,N as generateId,H as getDeepContent,dt as getExistingSocket,tt as getLatestLibVersion,$e as getMediaThumbnail,ot as getUsersMentions,Ii as getVideoDuration,Ci as getVideoThumbnail,ct as getWaAudio,lt as getWaDocument,pt as getWaSticker,Ni as getWatchdog,h as ignoreLint,M as logColor,oi as modifyFn,E as normalizeText,mi as numbersToJids,C as pickKeysFromArray,ni as randomize,Mt as registerAuthCreds,st as removeAuthCreds,pe as repairSessionKeys,ri as shuffleString,ce as toBuffer,Le as toJson,se as toString,wt as useAuthState};
|