{"_id":"@sairidev/baileys-new","_rev":"6-76c26d5cd3219b9684b4bde69f32d2a3","name":"@sairidev/baileys-new","dist-tags":{"latest":"0.3.21"},"versions":{"0.3.15":{"name":"@sairidev/baileys-new","version":"0.3.15","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"sairidev"},"license":"MIT","_id":"@sairidev/baileys-new@0.3.15","maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"homepage":"https://github.com/sairidev/baileys-new#readme","bugs":{"url":"https://github.com/sairidev/baileys-new/issues"},"dist":{"shasum":"8130a44a167b0548bd4a17c57c783d90660057ee","tarball":"https://registry.npmjs.org/@sairidev/baileys-new/-/baileys-new-0.3.15.tgz","fileCount":430,"integrity":"sha512-GJ8DbhcXIcC/o/7Apumgn4xvGZS5SQG4hteXrYhVmp9lVQ4yD4gOaoTUy3nnMHvT/qBfxaiDE3r9c9HgDe8raw==","signatures":[{"sig":"MEQCIEPAvJgpM/uJlzTpmbmvCwpRKzRwOFXzXUE5fBjXzdesAiAZVM510yRB4cQ9EwDQ9+188rxGXZuV0gjcwZPx+u3TCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10763674},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"sairidev","email":"akunfbkee14@gmail.com"},"repository":{"url":"git+https://github.com/sairidev/baileys-new.git","type":"git"},"_npmVersion":"11.14.1","description":"Enhanced Baileys v7 with fixes for newsletter media uploads, plus support for interactive messages, albums, and additional message types.","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","chalk":"^5.3.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys-new_0.3.15_1780223434844_0.215259035460458","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"@sairidev/baileys-new","version":"0.3.16","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"sairidev"},"license":"MIT","_id":"@sairidev/baileys-new@0.3.16","maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"homepage":"https://github.com/sairidev/baileys-new#readme","bugs":{"url":"https://github.com/sairidev/baileys-new/issues"},"dist":{"shasum":"9e7c3e454566ede3a6598c4f283046815be17cc1","tarball":"https://registry.npmjs.org/@sairidev/baileys-new/-/baileys-new-0.3.16.tgz","fileCount":430,"integrity":"sha512-RnPBsjy5PWx+UC/2gI2iF4Iq5wxWXVDlLetQR0OoiUcJI/kOHGCMISOvzvHH4HqwY1lWORq7mP0ZO23pPNtU5g==","signatures":[{"sig":"MEUCIQDdpgwZtfk1OtoBFWMc2ev56qAGIcAWq0N5VHYXJ1aDIQIgFnJ3SpuMJhu7yWH7kQfouBLFRh2tAUfqcYLLnckhrwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10763802},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"sairidev","email":"akunfbkee14@gmail.com"},"repository":{"url":"git+https://github.com/sairidev/baileys-new.git","type":"git"},"_npmVersion":"11.14.1","description":"Enhanced Baileys v7 with fixes for newsletter media uploads, plus support for interactive messages, albums, and additional message types.","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","chalk":"^5.3.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys-new_0.3.16_1780226260807_0.49464686190203855","host":"s3://npm-registry-packages-npm-production"}},"0.3.17":{"name":"@sairidev/baileys-new","version":"0.3.17","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"sairidev"},"license":"MIT","_id":"@sairidev/baileys-new@0.3.17","maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"homepage":"https://github.com/sairidev/baileys-new#readme","dist":{"shasum":"58ea9976db2770668537b4592770c1d3b50ef550","tarball":"https://registry.npmjs.org/@sairidev/baileys-new/-/baileys-new-0.3.17.tgz","fileCount":430,"integrity":"sha512-roRBoBcjzpczyB6ZfbcjvuE/Tf/Wf5Ak6m5NA0ZOOSwHsLWinRK5Mn9bBWR8OJ2HSvMROlMYV2MqiAHp6owmvQ==","signatures":[{"sig":"MEQCIED+tMoo8/MF3hOxiM0TnH2SfABuk/zrnIlgCMNjufkFAiA+LW4kvUSuTs6o/7Y8FFCGR73KrscGaWnsIarjATax6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10763265},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"sairidev","email":"akunfbkee14@gmail.com"},"repository":{"url":"https://www.npmjs.com/package/@sairidev/baileys-new","type":"npm"},"_npmVersion":"10.8.2","description":"Enhanced Baileys v7","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","chalk":"^5.3.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys-new_0.3.17_1780770489718_0.01470274134463212","host":"s3://npm-registry-packages-npm-production"}},"0.3.18":{"name":"@sairidev/baileys-new","version":"0.3.18","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"sairidev"},"license":"MIT","_id":"@sairidev/baileys-new@0.3.18","maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"homepage":"https://github.com/sairidev/baileys-new#readme","dist":{"shasum":"63fec81ff21ec96c3928d11a0a38fa1d554c015c","tarball":"https://registry.npmjs.org/@sairidev/baileys-new/-/baileys-new-0.3.18.tgz","fileCount":430,"integrity":"sha512-tnXgE5EIjw5kf86MLRaJOKbVZ6iBqXTZC/TSCkMWDrsXLnDnurimSlzWTUrnfjXhe8EWpsJ5kW+oNz7gmaweWw==","signatures":[{"sig":"MEUCIDkXzjJy9jnc6Vtidmy/4eywFUh3M0fJC+XPvIrBQNJhAiEAxCyQaXD+h6bUghvgbMvuZ8y45DU6XuKJ6hU+c09gZvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10763317},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"sairidev","email":"akunfbkee14@gmail.com"},"repository":{"url":"https://www.npmjs.com/package/@sairidev/baileys-new","type":"npm"},"_npmVersion":"10.8.2","description":"Enhanced Baileys v7","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","chalk":"^5.3.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys-new_0.3.18_1780802099471_0.2747913859159472","host":"s3://npm-registry-packages-npm-production"}},"0.3.19":{"name":"@sairidev/baileys-new","version":"0.3.19","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"sairidev"},"license":"MIT","_id":"@sairidev/baileys-new@0.3.19","maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"homepage":"https://github.com/sairidev/baileys-new#readme","dist":{"shasum":"70f4b9286765c123af4bd378a44772170dfd0fe1","tarball":"https://registry.npmjs.org/@sairidev/baileys-new/-/baileys-new-0.3.19.tgz","fileCount":430,"integrity":"sha512-gg0fiApDQvCdzYtKDEwvlZUmFvJOxR4My0+j0f+nennbmFnnaptm7h99HejSV1/Ri/2NsPRSejCCF+gt/OVC4w==","signatures":[{"sig":"MEUCIHKpwoifY/K0PF10VqLG9JeOx/KLZas5b85ji+8nx4OcAiEA/iEa80VNffJBk+vn3d6OyY6AuxDzadtvmwScPReHJYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10768533},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","credits":{"note":"Fork chain: WhiskeySockets/Baileys -> itsliaaa/baileys -> sairidev/baileys-new. This version syncs feature updates from itsliaaa/baileys.","originalProject":"https://github.com/WhiskeySockets/Baileys","immediateUpstream":"https://github.com/itsliaaa/baileys"},"engines":{"node":">=20.0.0"},"scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"sairidev","email":"akunfbkee14@gmail.com"},"repository":{"url":"https://www.npmjs.com/package/@sairidev/baileys-new","type":"npm"},"_npmVersion":"11.18.0","description":"Enhanced Baileys v7 (synced with itsliaaa/baileys upstream)","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","chalk":"^5.3.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys-new_0.3.19_1784199531488_0.09541009601031791","host":"s3://npm-registry-packages-npm-production"}},"0.3.21":{"name":"@sairidev/baileys-new","version":"0.3.21","description":"Enhanced Baileys v7 (synced with itsliaaa/baileys upstream 0.3.18-final)","main":"lib/index.js","types":"lib/index.d.ts","type":"module","scripts":{"preinstall":"node ./engine-requirements.js"},"engines":{"node":">=20.0.0"},"repository":{"type":"npm","url":"https://www.npmjs.com/package/@sairidev/baileys-new"},"keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"homepage":"https://github.com/sairidev/baileys-new#readme","author":{"name":"sairidev"},"license":"MIT","dependencies":{"@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0","@hapi/boom":"^9.1.3","async-mutex":"^0.5.0","fflate":"^0.8.2","libsignal":"^6.0.0","lru-cache":"^11.2.6","music-metadata":"^11.12.3","p-queue":"^9.1.0","pino":"^9.6.0","protobufjs":"^7.5.6","whatsapp-rust-bridge":"0.5.5","ws":"^8.19.0","chalk":"^5.3.0"},"peerDependencies":{"@napi-rs/image":"~1.12.0","audio-decode":"^2.2.3","better-sqlite3":"^11.0.0","jimp":"^1.6.1","link-preview-js":"^3.0.0","sharp":"*"},"peerDependenciesMeta":{"@napi-rs/image":{"optional":true},"audio-decode":{"optional":true},"better-sqlite3":{"optional":true},"jimp":{"optional":true},"link-preview-js":{"optional":true}},"resolutions":{"ajv@npm:^6.12.4":"^6.14.0","basic-ftp":"^5.2.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3","flatted":"^3.4.2","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","handlebars":"^4.7.9","ip-address":"^10.1.1","js-yaml@npm:^3.13.1":"^3.14.2","js-yaml@npm:^4.1.0":"^4.1.1","markdown-it":"^14.1.1","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","socks":"^2.8.8","tar":"^7.5.11","tmp":"^0.2.5","underscore":"^1.13.8","yaml@npm:^2.6.1":"^2.8.4"},"packageManager":"yarn@4.9.2","credits":{"note":"Fork chain: WhiskeySockets/Baileys -> itsliaaa/baileys -> sairidev/baileys-new. This version syncs feature updates from itsliaaa/baileys.","originalProject":"https://github.com/WhiskeySockets/Baileys","immediateUpstream":"https://github.com/itsliaaa/baileys"},"_id":"@sairidev/baileys-new@0.3.21","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-cnImcwumzZpBfNX55h2Z42fyQ/PZ7YHkXZc9djZOekOdcdw2I78WsnMJ6uEJp3Nj1jYqdWbsf0KzXHqsE6d38A==","shasum":"78e4d53e9d463a9a2f57cc28842f71b6ad73d9b8","tarball":"https://registry.npmjs.org/@sairidev/baileys-new/-/baileys-new-0.3.21.tgz","fileCount":430,"unpackedSize":10834895,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDvq2/nCwWg/+lOx0XrcUUsLMQYZMRX4Ll8FVhSyvNU7wIhAONRe8ksmxxZ9y2AKxem/kUgsaTbCUioPWFNGiBGQBHn"}]},"_npmUser":{"name":"sairidev","email":"akunfbkee14@gmail.com"},"directories":{},"maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baileys-new_0.3.21_1787327280586_0.5809388739750143"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-31T10:30:34.735Z","modified":"2026-08-21T15:48:01.068Z","0.3.15":"2026-05-31T10:30:35.064Z","0.3.16":"2026-05-31T11:17:40.979Z","0.3.17":"2026-06-06T18:28:09.892Z","0.3.18":"2026-06-07T03:14:59.663Z","0.3.19":"2026-07-16T10:58:51.653Z","0.3.21":"2026-08-21T15:48:00.837Z"},"author":{"name":"sairidev"},"license":"MIT","homepage":"https://github.com/sairidev/baileys-new#readme","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"repository":{"type":"npm","url":"https://www.npmjs.com/package/@sairidev/baileys-new"},"description":"Enhanced Baileys v7 (synced with itsliaaa/baileys upstream 0.3.18-final)","maintainers":[{"name":"sairidev","email":"akunfbkee14@gmail.com"}],"readme":"# 🌱 @sairidev/baileys\n\n[![Logo](https://files.catbox.moe/c5s9g0.jpg)](https://www.npmjs.com/package/@sairidev/baileys)\n\n<p align=\"center\">\n   Enhanced Baileys v7 with fixes for newsletter media uploads, plus support for interactive messages, albums, and additional message types.\n   <br><br>\n   <a href=\"https://www.npmjs.com/package/@sairidev/baileys\">\n      <img src=\"https://img.shields.io/npm/v/@sairidev/baileys?style=for-the-badge&logo=npm\"/>\n   </a>\n   <a href=\"https://www.npmjs.com/package/@sairidev/baileys\">\n      <img src=\"https://img.shields.io/npm/dm/@sairidev/baileys?style=for-the-badge&logo=npm\"/>\n   </a>\n   <a href=\"https://github.com/sairidev/baileys\">\n      <img src=\"https://img.shields.io/github/stars/sairidev/baileys?style=for-the-badge&logo=github\"/>\n   </a>\n   <a href=\"LICENSE\">\n      <img src=\"https://img.shields.io/badge/license-MIT-blue?style=for-the-badge\"/>\n   </a>\n   <a href=\"https://nodejs.org\">\n      <img src=\"https://img.shields.io/badge/node-%3E%3D20-339933?logo=node.js&labelColor=green&logoColor=white&style=for-the-badge\"/>\n   </a>\n   <a href=\"#\">\n      <img src=\"https://img.shields.io/badge/ESM-only?logo=javascript&labelColor=yellow&logoColor=black&style=for-the-badge\"/>\n   </a>\n</p>\n\n\n### ✨ Highlights\n\nThis fork designed for production use with a focus on clarity and safety:\n\n- 🚫 No obfuscation. Easy to read and audit.\n- 🚫 No auto-follow channel (newsletter) behavior.\n\n> [!IMPORTANT]\n> Hi everyone,\n> \n> I need to say this clearly.\n> \n> Some npm packages are reuploading my fork under different names, with almost no meaningful changes:\n> \n> - [@nuisockets](https://www.npmjs.com/package/@nuisockets/baileys)\n> - [@nuiisatoru](https://www.npmjs.com/package/@nuiisatoru/baileys)\n> - [@nuiisweetberry](https://www.npmjs.com/package/@nuiisweetberry/baileys)\n> - [@lumina-md](https://www.npmjs.com/package/@lumina-md/baileys)\n> \n> They:\n> \n> - Renamed my fork under different package names\n> - Removed or ignored proper maintainer credit\n> - Added unnecessary overhead\n> - Rewrote changelogs and modification notes under their own names\n> - Claimed existing work and changes as if they made them\n> - Copied code directly from my fork with little to no meaningful modification\n> \n> This is not acceptable.\n> \n> To be clear, I am **NOT** the original maintainer of Baileys. full respect goes to https://github.com/WhiskeySockets/Baileys.\n>\n> **This issue is about attribution, honesty, and respecting open-source contributions.**\n>\n> Forking is completely fine. Removing credits and presenting someone else's work as your own is not.\n> \n> Please report if necessary.\n> \n> Thank you. 🤍\n\n> [!NOTE]\n> 📄 This project is maintained with limited scope and is not intended to replace upstream Baileys.\n>\n> 😞 And, really sorry for my bad english.\n\n### 🆕 v0.3.19 Sync Notes\n\nSynced from [itsliaaa/baileys](https://github.com/itsliaaa/baileys) (upstream this fork is based on):\n- 🖼️ Newsletter media upload fix\n- 📁 `makeInMemoryStore` refresh for Baileys v7\n- 📦 FFmpeg execution moved to `spawn`\n- 🗃️ `@napi-rs/image` processing backend\n- ✨ Expanded Rich Response (carousel items, inline image/video, LaTeX, posts, products, suggested prompts), Code Block, Inline Entities, Table messages\n- 💭 Newsletter (channel) message quoting\n- 🎀 Custom interactive button icons\n- 📣 `mentionAll`\n- 🔒 `secureMetaServiceLabel`\n\nAlso removed in this sync: an undisclosed, hex-obfuscated routine that silently tagged outgoing image/video\nmessages with forged \"forwarded from newsletter\" metadata, and a routine that silently auto-followed a\nchannel on every connection. Neither was part of upstream itsliaaa/baileys, neither was documented, and\nboth ran without any consent from applications or end users of this library.\n\n### 🛠️ Internal Adjustments\n- 🖼️ Fixed an issue where media could not be sent to newsletters due to an upstream issue.\n- 📁 Reintroduced [`makeInMemoryStore`](#%EF%B8%8F-implementing-data-store) with a minimal ESM adaptation and small adjustments for Baileys v7.\n- 📦 Switched FFmpeg execution from `exec` to `spawn` for safer process handling.\n- 🗃️ Added [`@napi-rs/image`](https://www.npmjs.com/package/@napi-rs/image) as a supported image processing backend in [`getImageProcessingLibrary()`](#%EF%B8%8F-image-processing), offering a balance between performance and compatibility.\n\n### 📨 Messages Handling & Compatibility\n- 📩 Expanded messages support for:\n   - 🖼️ [Album Message](#%EF%B8%8F-album-image--video)\n   - 👤 [Group Status Message](#%E2%80%8D%E2%80%8D-group-status)\n   - 👉🏻 [Interactive Message](#-sending-interactive-messages) (buttons, lists, native flows, templates, carousels).\n   - 🎞️ [Status Mention Message](#%EF%B8%8F-status-mention)\n   - 📦 [Sticker Pack Message](#-sticker-pack)\n   - ✨ [Rich Response Message](#-rich-response) **[NEW]**\n   - 🧾 [Message with Code Blocks](#-message-with-code-block) **[NEW]**\n   - [🌏 Message with Inline Entities](#-message-with-inline-entities) **[NEW]**\n   - 📋 [Message with Table](#-message-with-table) **[NEW]**\n   - 💳 [Payment-related Message](#-sending-payment-messages) (payment requests, invites, orders, invoices).\n- 📰 Simplified sending messages with ad thumbnail using [`externalAdReply`](#-external-ad-reply), without requiring manual `contextInfo`.\n- 💭 Added support for quoting messages inside channel (newsletter). **[NEW]**\n- 🎀 Added support for [custom button icon](#%EF%B8%8F-interactive). **[NEW]**\n\n### 🧩 Additional Message Options\n- 👁️ Added optional boolean flags for message handling:  \n   - 🤖 [`ai`](#-ai-icon) - AI icon on message\n   - 📣 [`mentionAll`](#-mention) - Mention all group participants without requiring their JIDs in `mentions` or `mentionedJid` **[NEW]**\n   - 🔧 [`ephemeral`](#-ephemeral), [`groupStatus`](#%E2%80%8D%E2%80%8D-group-status), [`isLottie`](#-lottie-sticker), [`spoiler`](#-spoiler), [`viewOnce`](#%EF%B8%8F-view-once), [`viewOnceV2`](#%EF%B8%8F-view-once-v2), [`viewOnceV2Extension`](#%EF%B8%8F-view-once-v2-extension), [`interactiveAsTemplate`](#%EF%B8%8F-interactive) - Message wrappers\n   - 🔒 [`secureMetaServiceLabel`](#%EF%B8%8F-secure-meta-service-label) - Secure meta service label on message **[NEW]**\n   - 📄 [`raw`](#-raw) - Build your message manually **(DO NOT USE FOR EXPLOITATION)**\n\n### 📋 Table of Contents\n- [✨ Highlights](#-highlights)\n- [🛠️ Internal Adjustments](#%EF%B8%8F-internal-adjustments)\n- [📨 Messages Handling & Compatibility](#-highlights)\n- [🧩 Additional Message Options](#-additional-message-options)\n- [📥 Installation](#-installation)\n   - [🧩 Import (ESM & CJS)](#-import-esm--cjs)\n- [🌐 Connect to WhatsApp (Quick Step)](#-connect-to-whatsapp-quick-step)\n   - [🔐 Auth State](#-auth-state)\n- [🗄️ Implementing Data Store](#%EF%B8%8F-implementing-data-store)\n- [🪪 WhatsApp IDs Explain](#-whatsapp-ids-explain)\n- [✉️ Sending Messages](#%EF%B8%8F-sending-messages)\n   - [🔠 Text](#-text)\n   - [🔔 Mention](#-mention)\n   - [😁 Reaction](#-reaction)\n   - [📌 Pin Message](#-pin-message)\n   - [🔖 Keep Chat](#-keep-chat)\n   - [➡️ Forward Message](#%EF%B8%8F-forward-message)\n   - [👤 Contact](#-contact)\n   - [📍 Location](#-location)\n   - [🗓️ Event](#%EF%B8%8F-event)\n   - [👥 Group Invite](#-group-invite)\n   - [🛍️ Product](#%EF%B8%8F-product)\n   - [📊 Poll](#-poll)\n   - [💭 Button Response](#-button-response)\n   - [✨ Rich Response](#-rich-response)\n   - [🧾 Message with Code Block](#-message-with-code-block)\n   - [🌏 Message with Inline Entities](#-message-with-inline-entities)\n   - [📋 Message with Table](#-message-with-table)\n   - [🎞️ Status Mention](#%EF%B8%8F-status-mention)\n- [📁 Sending Media Messages](#-sending-media-messages)\n   - [🖼️ Image](#%EF%B8%8F-image)\n   - [🎥 Video](#-video)\n   - [📃 Sticker](#-sticker)\n   - [💽 Audio](#-audio)\n   - [🗂️ Document](#%EF%B8%8F-document)\n   - [🖼️ Album (Image & Video)](#%EF%B8%8F-album-image--video)\n   - [📦 Sticker Pack](#-sticker-pack)\n- [👉🏻 Sending Interactive Messages](#-sending-interactive-messages)\n   - [🔘 Buttons](#-buttons)\n   - [📋 List](#-list)\n   - [🗄️ Interactive](#%EF%B8%8F-interactive)\n   - [🫙 Hydrated Template](#-hydrated-template)\n- [💳 Sending Payment Messages](#-sending-payment-messages)\n   - [➕ Invite Payment](#-invite-payment)\n   - [🧾 Invoice](#-invoice)\n   - [🛍️ Order](#%EF%B8%8F-order)\n   - [💳 Request Payment](#-request-payment)\n- [👁️ Other Message Options](#%EF%B8%8F-other-message-options)\n   - [🤖 AI Icon](#-ai-icon)\n   - [🕒 Ephemeral](#-ephemeral)\n   - [📰 External Ad Reply](#-external-ad-reply)\n   - [🧑‍🧑‍🧒 Group Status](#%E2%80%8D%E2%80%8D-group-status)\n   - [🐱 Lottie Sticker](#-lottie-sticker)\n   - [🧩 Raw](#-raw)\n   - [🏷️ Secure Meta Service Label](#%EF%B8%8F-secure-meta-service-label)\n   - [📑 Spoiler](#-spoiler)\n   - [👁️ View Once](#%EF%B8%8F-view-once)\n   - [👁️ View Once V2](#%EF%B8%8F-view-once-v2)\n   - [👁️ View Once V2 Extension](#%EF%B8%8F-view-once-v2-extension)\n- [♻️ Modify Messages](#%EF%B8%8F-modify-messages)\n   - [🗑️ Delete Messages](#%EF%B8%8F-delete-messages)\n   - [✏️ Edit Messages](#%EF%B8%8F-edit-messages)\n- [🧰 Additional Contents](#-additional-contents)\n   - [🏷️ Find User ID (JID|PN/LID)](#%EF%B8%8F-find-user-id-jidpnlid)\n   - [🔑 Request Custom Pairing Code](#-request-custom-pairing-code)\n   - [🖼️ Image Processing](#%EF%B8%8F-image-processing)\n   - [📣 Newsletter Management](#-newsletter-management)\n   - [👥 Group Management](#-group-management)\n   - [👥 Community Management](#-community-management)\n   - [👤 Profile Management](#-profile-management)\n   - [🛒 Business Management](#-business-management)\n   - [🔐 Privacy Management](#-privacy-management)\n   - [📡 Events](#-events)\n- [🚀 Try the Bot](#-try-the-bot)\n- [📦 Fork Base](#-fork-base)\n- [📣 Credits](#-credits)\n\n### 📥 Installation\n\n- 📄 Via `package.json`\n\n```json\n# NPM\n\"dependencies\": {\n   \"@sairidev/baileys\": \"latest\"\n}\n\n# GitHub\n\"dependencies\": {\n   \"@sairidev/baileys\": \"github:sairidev/baileys\"\n}\n```\n\n- ⌨️ Via terminal\n\n```bash\n# NPM\nnpm i @sairidev/baileys@latest\n\n# GitHub\nnpm i github:sairidev/baileys\n```\n\n#### 🧩 Import (ESM & CJS)\n\n```javascript\n// --- ESM\nimport { makeWASocket } from '@sairidev/baileys'\n\n// --- CJS (tested and working on Node.js 24 ✅)\nconst { makeWASocket } = require('@sairidev/baileys')\n```\n\n### 🌐 Connect to WhatsApp (Quick Step)\n\n```javascript\nimport { makeWASocket, delay, DisconnectReason, useMultiFileAuthState } from '@sairidev/baileys'\nimport { Boom } from '@hapi/boom'\nimport pino from 'pino'\n\n// --- Connect with pairing code\nconst myPhoneNumber = '6288888888888'\n\nconst logger = pino({ level: 'silent' })\n\nconst connectToWhatsApp = async () => {\n   const { state, saveCreds } = await useMultiFileAuthState('session')\n    \n   const sock = makeWASocket({\n      logger,\n      auth: state\n   })\n\n   sock.ev.on('creds.update', saveCreds)\n\n   sock.ev.on('connection.update', (update) => {\n      const { connection, lastDisconnect } = update\n      if (connection === 'connecting' && !sock.authState.creds.registered) {\n         await delay(1500)\n         const code = await sock.requestPairingCode(myPhoneNumber)\n         console.log('🔗 Pairing code', ':', code)\n      }\n      else if (connection === 'close') {\n         const shouldReconnect = new Boom(connection?.lastDisconnect?.error)?.output?.statusCode !== DisconnectReason.loggedOut\n         console.log('⚠️ Connection closed because', lastDisconnect.error, ', reconnecting ', shouldReconnect)\n         if (shouldReconnect) {\n            connectToWhatsApp()\n         }\n      }\n      else if (connection === 'open') {\n         console.log('✅ Successfully connected to WhatsApp')\n      }\n   })\n\n   sock.ev.on('messages.upsert', async ({ messages }) => {\n      for (const message of messages) {\n         if (!message.message) continue\n\n         console.log('🔔 Got new message', ':', message)\n         await sock.sendMessage(message.key.remoteJid, {\n            text: '👋🏻 Hello world'\n         })\n      }\n   })\n}\n\nconnectToWhatsApp()\n```\n\n#### 🔐 Auth State\n\n> [!NOTE]\n> You can use the experimental `useSingleFileAuthState` and `useSqliteAuthState` as an alternative to `useMultiFileAuthState`. However, `useSingleFileAuthState` already includes an internal caching mechanism, so there is no need to wrap `state.keys` with `makeCacheableSignalKeyStore`.\n\n### 🗄️ Implementing Data Store\n\n> [!CAUTION]\n> I highly recommend building your own data store, as keeping an entire chat history in memory can lead to excessive RAM usage.\n\n```javascript\nimport { makeWASocket, makeInMemoryStore, delay, DisconnectReason, useMultiFileAuthState } from '@sairidev/baileys'\nimport { Boom } from '@hapi/boom'\nimport pino from 'pino'\n\nconst myPhoneNumber = '6288888888888'\n\n// --- Create your store path\nconst storePath = './store.json'\n\nconst logger = pino({ level: 'silent' })\n\nconst connectToWhatsApp = async () => {\n   const { state, saveCreds } = await useMultiFileAuthState('session')\n    \n   const sock = makeWASocket({\n      logger,\n      auth: state\n   })\n\n   const store = makeInMemoryStore({\n      logger,\n      socket: sock\n   })\n\n   store.bind(sock.ev)\n\n   sock.ev.on('creds.update', saveCreds)\n\n   sock.ev.on('connection.update', (update) => {\n      const { connection, lastDisconnect } = update\n      if (connection === 'connecting' && !sock.authState.creds.registered) {\n         await delay(1500)\n         const code = await sock.requestPairingCode(myPhoneNumber)\n         console.log('🔗 Pairing code', ':', code)\n      }\n      else if (connection === 'close') {\n         const shouldReconnect = new Boom(connection?.lastDisconnect?.error)?.output?.statusCode !== DisconnectReason.loggedOut\n         console.log('⚠️ Connection closed because', lastDisconnect.error, ', reconnecting ', shouldReconnect)\n         if (shouldReconnect) {\n            connectToWhatsApp()\n         }\n      }\n      else if (connection === 'open') {\n         console.log('✅ Successfully connected to WhatsApp')\n      }\n   })\n\n   sock.ev.on('chats.upsert', () => {\n      console.log('✉️ Got chats', store.chats.all())\n   })\n\n   sock.ev.on('contacts.upsert', () => {\n      console.log('👥 Got contacts', Object.values(store.contacts))\n   })\n\n   // --- Read store from file\n   store.readFromFile(storePath)\n\n   // --- Save store every 3 minutes\n   setInterval(() => {\n      store.writeToFile(storePath)\n   }, 180000)\n}\n\nconnectToWhatsApp()\n```\n\n### 🪪 WhatsApp IDs Explain\n\n`id` is the WhatsApp ID, called `jid` and `lid` too, of the person or group you're sending the message to.\n- It must be in the format `[country code][phone number]@s.whatsapp.net`\n   - Example for people: `19999999999@s.whatsapp.net` and `12699999999@lid`.\n   - For groups, it must be in the format `123456789-123345@g.us`.\n- For Meta AI, it's `11111111111@bot`.\n- For broadcast lists, it's `[timestamp of creation]@broadcast`.\n- For stories, the ID is `status@broadcast`.\n\n### ✉️ Sending Messages\n\n> [!NOTE]\n> You can get the `jid` from `message.key.remoteJid` in the first example.\n\n#### 🔠 Text\n\n```javascript\n// --- Send a regular text message\nsock.sendMessage(jid, {\n   text: '👋🏻 Hello'\n}, {\n   quoted: message\n})\n\n// --- Send a text message with a link preview\nconst urlA = 'https://www.npmjs.com/package/@sairidev/baileys'\n\nsock.sendMessage(jid, {\n   text: urlA + ' 👆🏻 Check it out!',\n   linkPreview: {\n      'matched-text': urlA,\n      title: '🌱 @sairidev/baileys',\n      description: 'Underrated Baileys Fork',\n      previewType: 0, // --- Use 1 for video playback in the link preview\n      jpegThumbnail: fs.readFileSync('./path/to/image.jpg')\n   }\n})\n\n// --- Send a text message with a large link preview and favicon\nimport { prepareWAMessageMedia } from '@sairidev/baileys'\n\nconst urlB = 'https://www.npmjs.com/package/@sairidev/baileys#readme'\n\nconst { imageMessage: image } = await prepareWAMessageMedia({\n   image: {\n      url: './path/to/image.jpg'\n   }\n}, {\n   upload: sock.waUploadToServer,\n   mediaTypeOverride: 'thumbnail-link'\n})\n\n// --- Set the thumbnail display size\nimage.height = 720\nimage.width = 480\n\nsock.sendMessage(jid, {\n   text: urlB + ' 👆🏻 Check it out!',\n   linkPreview: {\n      'matched-text': urlB,\n      title: '🌱 @sairidev/baileys',\n      description: 'Underrated Baileys Fork',\n      previewType: 0,\n      jpegThumbnail: fs.readFileSync('./path/to/image.jpg'),\n      highQualityThumbnail: image,\n      linkPreviewMetadata: {\n         linkMediaDuration: 0, // --- Duration in seconds (for video/audio content)\n         socialMediaPostType: 1, // --- Enum: 0 = NONE, 1 = REEL, 2 = LIVE_VIDEO, 3 = LONG_VIDEO, 4 = SINGLE_IMAGE, 5 = CAROUSEL\n      } // --- Additional metadata for large link preview\n   },\n   favicon: {\n      url: './path/to/tiny-image.ico'\n   }\n})\n```\n\n#### 🔔 Mention\n\n```javascript\n// --- Regular mention\nsock.sendMessage(jid, {\n   text: '👋🏻 Hello @628123456789',\n   mentions: ['628123456789@s.whatsapp.net']\n}, {\n   quoted: message\n})\n\n// --- Mention all\nsock.sendMessage(jid, {\n   text: '👋🏻 Hello @all',\n   mentionAll: true\n}, {\n   quoted: message\n})\n```\n\n#### 😁 Reaction\n\n```javascript\nsock.sendMessage(jid, {\n   react: {\n      key: message.key,\n      text: '✨'\n   }\n})\n```\n\n#### 📌 Pin Message\n\n```javascript\nsock.sendMessage(jid, {\n   pin: message.key,\n   time: 86400, // --- Set the value in seconds: 86400 (1d), 604800 (7d), or 2592000 (30d)\n   type: 1 // --- Or 2 to remove\n})\n```\n\n#### 🔖 Keep Chat\n\n> [!NOTE]\n> Keep Chat can only be used in chats or groups with disappearing messages enabled.\n\n```javascript\nsock.sendMessage(jid, {\n   keep: message.key,\n   type: 1 // --- Or 2 to remove\n})\n```\n\n#### ➡️ Forward Message\n\n```javascript\nsock.sendMessage(jid, {\n   forward: message,\n   force: true // --- Optional\n})\n```\n\n#### 👤 Contact\n\n```javascript\nconst vcard = 'BEGIN:VCARD\\n'\n            + 'VERSION:3.0\\n'\n            + 'FN:Lia Wynn\\n'\n            + 'ORG:Waitress;\\n'\n            + 'TEL;type=CELL;type=VOICE;waid=628123456789:+62 8123 4567 89\\n'\n            + 'END:VCARD'\n\nsock.sendMessage(jid, {\n   contacts: {\n      displayName: 'Lia Wynn',\n      contacts: [\n         { vcard }\n      ]\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 📍 Location\n\n```javascript\nsock.sendMessage(jid, {\n   location: {\n      degreesLatitude: 24.121231,\n      degreesLongitude: 55.1121221,\n      name: '👋🏻 I am here'\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 🗓️ Event\n\n```javascript\nsock.sendMessage(jid, {\n   event: {\n      name: '🎶 Meet & Mingle Party',\n      description: 'Meet & Mingle Party is a fun, casual gathering to connect, chat, and build new relationships within the community.',\n      call: 'audio', // --- Or \"video\", this field is optional\n      startDate: new Date(Date.now() + 3600000),\n      endDate: new Date(Date.now() + 28800000),\n      isCancelled: false, // --- Optional\n      isScheduleCall: false, // --- Optional\n      extraGuestsAllowed: false, // --- Optional\n      location: {\n         name: 'Jakarta',\n         degreesLatitude: -6.2,\n         degreesLongitude: 106.8\n      }\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 👥 Group Invite\n\n```javascript\nconst inviteCode = groupUrl\n   .split('chat.whatsapp.com/')[1]\n   ?.split('?')[0]\n\nconst groupJid = '1201111111111@g.us'\nconst groupName = '@sairidev/baileys'\n\nsock.sendMessage(jid, {\n   groupInvite: {\n      inviteCode,\n      inviteExpiration: Date.now() + 86400000,\n      text: '👋🏻 Hello, we invite you to join our group.',\n      jid: groupJid,\n      subject: groupName,\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 🛍️ Product\n\n```javascript\nimport { randomUUID } from 'crypto'\n\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   body: '👋🏻 Check my product here!',\n   footer: '@sairidev/baileys',\n   product: {\n      currencyCode: 'IDR',\n      description: '🛍️ Interesting product!',\n      priceAmount1000: 70_000_000,\n      productId: randomUUID(),\n      productImageCount: 1,\n      salePriceAmount1000: 65_000_000,\n      signedUrl: 'https://www.npmjs.com/package/@sairidev/baileys',\n      title: '📦 Starseed (Premium)',\n      url: 'https://www.npmjs.com/package/@sairidev/baileys'\n   },\n   businessOwnerJid: '0@s.whatsapp.net'\n})\n```\n\n#### 📊 Poll\n\n```javascript\n// --- Regular poll message\nsock.sendMessage(jid, {\n   poll: {\n      name: '🔥 Voting time',\n      values: ['Yes', 'No'],\n      selectableCount: 1,\n      toAnnouncementGroup: false,\n      endDate: new Date(Date.now() + 28800000), // --- Optional\n      hideVoter: false, // --- Optional\n      canAddOption: false // --- Optional\n   }\n}, {\n   quoted: message\n})\n\n// --- Quiz (only for newsletter)\nsock.sendMessage('1211111111111@newsletter', {\n   poll: {\n      name: '🔥 Quiz',\n      values: ['Yes', 'No'],\n      correctAnswer: 'Yes',\n      pollType: 1\n   }\n}, {\n   quoted: message\n})\n\n// --- Poll result\nsock.sendMessage(jid, {\n   pollResult: {\n      name: '📝 Poll Result',\n      votes: [{\n         name: 'Nice',\n         voteCount: 10\n      }, {\n         name: 'Nah',\n         voteCount: 2\n      }],\n      pollType: 0 // Or 1 for quiz\n   }\n}, {\n   quoted: message\n})\n\n// --- Poll update\nsock.sendMessage(jid, {\n   pollUpdate: {\n      metadata: {},\n      key: message.key,\n      vote: {\n         enclv: /* <Buffer> */,\n         encPayload: /* <Buffer> */\n      }\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 💭 Button Response\n\n```javascript\n// --- Using buttonsResponseMessage\nsock.sendMessage(jid, {\n   type: 'plain',\n   buttonReply: {\n      id: '#Menu',\n      displayText: '✨ Interesting Menu'\n   }\n}, {\n   quoted: message\n})\n\n// --- Using interactiveResponseMessage\nsock.sendMessage(jid, {\n   flowReply: {\n      format: 0,\n      text: '💭 Response',\n      name: 'menu_options',\n      paramsJson: JSON.stringify({\n         id: '#Menu',\n         description: '✨ Interesting Menu'\n      })\n   }\n}, {\n   quoted: message\n})\n\n// --- Using listResponseMessage\nsock.sendMessage(jid, {\n   listReply: {\n      title: '📄 See More',\n      description: '✨ Interesting Menu',\n      id: '#Menu'\n   }\n}, {\n   quoted: message\n})\n\n// --- Using templateButtonReplyMessage\nsock.sendMessage(jid, {\n   type: 'template',\n   buttonReply: {\n      id: '#Menu',\n      displayText: '✨ Interesting Menu',\n      index: 1\n   }\n}, {\n   quoted: message\n})\n```\n\n#### ✨ Rich Response\n\n> [!NOTE]\n> `richResponse[]` is a representation of [`submessages[]`](https://baileys.wiki/docs/api/namespaces/proto/interfaces/IAIRichResponseSubMessage) inside `richResponseMessage`.\n\n> [!TIP]\n> You can still use the original [`submessages[]`](https://baileys.wiki/docs/api/namespaces/proto/interfaces/IAIRichResponseSubMessage) field directly.\n> The code example below is just an implementation using a helper, not a required structure.\n\n```javascript\nsock.sendMessage(jid, {\n   disclaimerText: 'RAW submessages structure example',\n   richResponse: [{\n      text: 'Example Usage',\n   }, {\n      language: 'javascript',\n      code: [{\n         highlightType: 0,\n         codeContent: 'console.log(\"Hello, World!\")'\n      }]\n   }, {\n      text: 'Pretty simple, right?\\n'\n   }, {\n      text: 'Comparison between Node.js, Bun, and Deno',\n   }, {\n      title: 'Runtime Comparison',\n      table: [{\n         isHeading: true,\n         items: ['', 'Node.js', 'Bun', 'Deno']\n      }, {\n         isHeading: false,\n         items: ['Engine', 'V8 (C++)', 'JavaScriptCore (C++)', 'V8 (C++)']\n      }, {\n         isHeading: false,\n         items: ['Performance', '4/5', '5/5', '4/5']\n      }]\n   }, {\n      text: 'Does this help clarify the differences?'\n   }]\n})\n```\n\n> [!TIP]\n> You can easily add syntax highlighting by importing `tokenizeCode` directly from Baileys.\n\n```javascript\nimport { tokenizeCode } from '@sairidev/baileys'\n\nconst language = 'javascript'\nconst code = 'console.log(\"Hello, World!\")'\n\nsock.sendMessage(jid, {\n   disclaimerText: 'Example of tokenizing Code Block',\n   richResponse: [{\n      text: 'Example Usage',\n   }, {\n      language,\n      code: tokenizeCode(code, language)\n   }, {\n      text: 'Pretty simple, right?'\n   }]\n})\n```\n\n> 💡 Supported Languages: `css`, `html`, `javascript`, `typescript`, `python`, `golang`, `rust`, `c`, `c#`, `c++`, `bash`, `bat`, `powershell`.\n\n#### 🧾 Message with Code Block\n\n> [!NOTE]\n> This feature already includes a built-in tokenizer with `tokenizeCode`.\n\n```javascript\nsock.sendMessage(jid, {\n   disclaimerText: 'Code Block',\n   headerText: '## Example Usage',\n   contentText: '---',\n   code: 'console.log(\"Hello, World!\")',\n   language: 'javascript',\n   footerText: 'Pretty simple, right?'\n})\n```\n\n#### 🌏 Message with Inline Entities\n\n```javascript\nsock.sendMessage(jid, {\n   disclaimerText: 'Inline Entities',\n   headerText: '## Check Out!',\n   contentText: '---',\n   links: [{\n      text: '1. Google',\n      title: 'Popular Search Engine',\n      url: 'https://www.google.com/'\n   }, {\n      text: '2. YouTube',\n      title: 'Popular Streaming Platform',\n      url: 'https://www.youtube.com/'\n   }, {\n      text: '3. Modded Baileys',\n      title: 'Underrated Baileys Fork',\n      url: 'https://www.npmjs.com/package/@sairidev/baileys'\n   }],\n   footerText: '---'\n})\n```\n\n#### 📋 Message with Table\n\n```javascript\nsock.sendMessage(jid, {\n   disclaimerText: 'Table',\n   headerText: '## Comparison between Node.js, Bun, and Deno',\n   contentText: '---',\n   title: 'Runtime Comparison',\n   table: [\n      ['', 'Node.js', 'Bun', 'Deno'],\n      ['Engine', 'V8 (C++)', 'JavaScriptCore (C++)', 'V8 (C++)'],\n      ['Performance', '4/5', '5/5', '4/5']\n   ],\n   noHeading: false, // --- Optional\n   footerText: 'Does this help clarify the differences?'\n})\n```\n\n#### 🎞️ Status Mention\n\n```javascript\nsock.sendMessage([jidA, jidB, jidC], {\n   text: 'Hello! 👋🏻'\n})\n```\n\n### 📁 Sending Media Messages\n\n> [!NOTE]\n> For media messages, you can pass a `Buffer` directly, or an object with either `{ stream: Readable }` or `{ url: string }` (local file path or HTTP/HTTPS URL).\n\n#### 🖼️ Image\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '🔥 Superb'\n}, {\n   quoted: message\n})\n```\n\n#### 🎥 Video\n\n```javascript\nsock.sendMessage(jid, {\n   video: {\n      url: './path/to/video.mp4'\n   },\n   gifPlayback: false, // --- Set true if you want to send video as GIF\n   ptv: false,  // --- Set true if you want to send video as PTV\n   caption: '🔥 Superb'\n}, {\n   quoted: message\n})\n```\n\n#### 📃 Sticker\n\n```javascript\nsock.sendMessage(jid, {\n   sticker: {\n      url: './path/to/sticker.webp'\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 💽 Audio\n\n```javascript\nsock.sendMessage(jid, {\n   audio: {\n      url: './path/to/audio.mp3'\n   },\n   ptt: false // --- Set true if you want to send audio as Voice Note\n}, {\n   quoted: message\n})\n```\n\n#### 🗂️ Document\n\n```javascript\nsock.sendMessage(jid, {\n   document: {\n      url: './path/to/document.pdf'\n   },\n   mimetype: 'application/pdf',\n   caption: '✨ My work!'\n}, {\n   quoted: message\n})\n```\n\n#### 🖼️ Album (Image & Video)\n\n```javascript\nsock.sendMessage(jid, {\n   album: [{\n      image: {\n         url: './path/to/image.jpg'\n      },\n      caption: '1st image'\n   }, {\n      video: {\n         url: './path/to/video.mp4'\n      },\n      caption: '1st video'\n   }, {\n      image: {\n         url: './path/to/image.jpg'\n      },\n      caption: '2nd image'\n   }, {\n      video: {\n         url: './path/to/video.mp4'\n      },\n      caption: '2nd video'\n   }]\n}, {\n   quoted: message\n})\n```\n\n#### 📦 Sticker Pack\n\n> [!IMPORTANT]\n> If `sharp` or `@napi-rs/image` is not installed, the `cover` and `stickers` must already be in WebP format.\n\n```javascript\nsock.sendMessage(jid, {\n   cover: {\n      url: './path/to/image.webp'\n   },\n   stickers: [{\n      data: {\n         url: './path/to/image.webp'\n      }\n   }, {\n      data: {\n         url: './path/to/image.webp'\n      }\n   }, {\n      data: {\n         url: './path/to/image.webp'\n      }\n   }],\n   name: '📦 My Sticker Pack',\n   publisher: '🌟 Lia Wynn',\n   description: '@sairidev/baileys'\n}, {\n   quoted: message\n})\n```\n\n### 👉🏻 Sending Interactive Messages\n\n#### 🔘 Buttons\n\n```javascript\n// --- Regular buttons message\nsock.sendMessage(jid, {\n   text: '👆🏻 Buttons!',\n   footer: '@sairidev/baileys',\n   buttons: [{\n      text: '👋🏻 SignUp',\n      id: '#SignUp'\n   }]\n}, {\n   quoted: message\n})\n\n// --- Buttons with Media & Native Flow\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '👆🏻 Buttons and Native Flow!',\n   footer: '@sairidev/baileys',\n   buttons: [{\n      text: '👋🏻 Rating',\n      id: '#Rating'\n   }, {\n      text: '📋 Select',\n      sections: [{\n         title: '✨ Section 1',\n         rows: [{\n            header: '',\n            title: '💭 Secret Ingredient',\n            description: '',\n            id: '#SecretIngredient'\n         }]\n      }, {\n         title: '✨ Section 2',\n         highlight_label: '🔥 Popular',\n         rows: [{\n            header: '',\n            title: '🏷️ Coupon',\n            description: '',\n            id: '#CouponCode'\n         }]\n      }]\n   }]\n}, {\n   quoted: message\n})\n```\n\n#### 📋 List\n\n> [!NOTE]\n> It only works in private chat (`@s.whatsapp.net`).\n\n```javascript\nsock.sendMessage(jid, {\n   text: '📋 List!',\n   footer: '@sairidev/baileys',\n   buttonText: '📋 Select',\n   title: '👋🏻 Hello',\n   sections: [{\n      title: '🚀 Menu 1',\n      rows: [{\n         title: '✨ AI',\n         description: '',\n         rowId: '#AI'\n      }]\n   }, {\n      title: '🌱 Menu 2',\n      rows: [{\n         title: '🔍 Search',\n         description: '',\n         rowId: '#Search'\n      }]\n   }]\n}, {\n   quoted: message\n})\n```\n\n#### 🗄️ Interactive\n\n```javascript\n// --- Native Flow\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '🗄️️ Interactive!',\n   footer: '@sairidev/baileys',\n   optionText: '👉🏻 Select Options', // --- Optional, wrap all native flow into a single list\n   optionTitle: '📄 Select Options', // --- Optional\n   offerText: '🏷️ Newest Coupon!', // --- Optional, add an offer into message\n   offerCode: '@sairidev/baileys', // --- Optional\n   offerUrl: 'https://www.npmjs.com/package/@sairidev/baileys', // --- Optional\n   offerExpiration: Date.now() + 3_600_000, // --- Optional\n   nativeFlow: [{\n      text: '👋🏻 Greeting',\n      id: '#Greeting',\n      icon: 'review' // --- Optional\n   }, {\n      text: '📞 Call',\n      call: '628123456789'\n   }, {\n      text: '📋 Copy',\n      copy: '@sairidev/baileys'\n   }, {\n      text: '🌐 Source',\n      url: 'https://www.npmjs.com/package/@sairidev/baileys',\n      useWebview: true // --- Optional\n   }, {\n      text: '📋 Select',\n      sections: [{\n         title: '✨ Section 1',\n         rows: [{\n            header: '',\n            title: '🏷️ Coupon',\n            description: '',\n            id: '#CouponCode'\n         }]\n      }, {\n         title: '✨ Section 2',\n         highlight_label: '🔥 Popular',\n         rows: [{\n            header: '',\n            title: '💭 Secret Ingredient',\n            description: '',\n            id: '#SecretIngredient'\n         }]\n      }],\n      icon: 'default' // --- Optional\n   }],\n   interactiveAsTemplate: false, // --- Optional, wrap the interactive message into a template\n}, {\n   quoted: message\n})\n\n// --- Carousel & Native Flow\nsock.sendMessage(jid, {\n   text: '🗂️ Interactive with Carousel!',\n   footer: '@sairidev/baileys',\n   cards: [{\n      image: {\n         url: './path/to/image.jpg'\n      },\n      caption: '🖼️ Image 1',\n      footer: '🏷️️ Pinterest',\n      nativeFlow: [{\n         text: '🌐 Source',\n         url: 'https://www.npmjs.com/package/@sairidev/baileys',\n         useWebview: true\n      }]\n   }, {\n      image: {\n         url: './path/to/image.jpg'\n      },\n      caption: '🖼️ Image 2',\n      footer: '🏷️ Pinterest',\n      offerText: '🏷️ New Coupon!',\n      offerCode: '@sairidev/baileys',\n      offerUrl: 'https://www.npmjs.com/package/@sairidev/baileys',\n      offerExpiration: Date.now() + 3_600_000,\n      nativeFlow: [{\n         text: '🌐 Source',\n         url: 'https://www.npmjs.com/package/@sairidev/baileys'\n      }]\n   }, {\n      image: {\n         url: './path/to/image.jpg'\n      },\n      caption: '🖼️ Image 3',\n      footer: '🏷️ Pinterest',\n      optionText: '👉🏻 Select Options',\n      optionTitle: '👉🏻 Select Options',\n      offerText: '🏷️ New Coupon!',\n      offerCode: '@sairidev/baileys',\n      offerUrl: 'https://www.npmjs.com/package/@sairidev/baileys',\n      offerExpiration: Date.now() + 3_600_000,\n      nativeFlow: [{\n         text: '🛒 Product',\n         id: '#Product',\n         icon: 'default'\n      }, {\n         text: '🌐 Source',\n         url: 'https://www.npmjs.com/package/@sairidev/baileys'\n      }]\n   }]\n}, {\n   quoted: message\n})\n\n// --- Native Flow with Audio in the Footer\nsock.sendMessage(jid, {\n   text: '🔈 Music in the footer!',\n   audioFooter: {\n      url: './path/to/audio.mp3'\n   }, // --- Like other media upload methods, buffers and streams are supported\n   nativeFlow: [{\n      text: '👍🏻 Good, next',\n      id: '#Next',\n      icon: 'review'\n   }, {\n      text: '👎🏻 Skip',\n      id: '#Skip',\n      icon: 'default'\n   }]\n}, {\n   quoted: message\n})\n```\n\n#### 🫙 Hydrated Template\n\n```javascript\nsock.sendMessage(jid, {\n   title: '👋🏻 Hello',\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '🫙 Template!',\n   footer: '@sairidev/baileys',\n   templateButtons: [{\n      text: '👉🏻 Tap Here',\n      id: '#Order'\n   }, {\n      text: '🌐 Source',\n      url: 'https://www.npmjs.com/package/@sairidev/baileys'\n   }, {\n      text: '📞 Call',\n      call: '628123456789'\n   }]\n}, {\n   quoted: message\n})\n```\n\n### 💳 Sending Payment Messages\n\n#### ➕ Invite Payment\n\n```javascript\nsock.sendMessage(jid, {\n   paymentInviteServiceType: 3 // 1, 2, or 3\n})\n```\n\n#### 🧾 Invoice\n\n> [!NOTE]\n> Invoice message are not supported yet.\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   invoiceNote: '🏷️ Invoice'\n})\n```\n\n#### 🛍️ Order\n\n```javascript\nsock.sendMessage(chat, {\n   orderText: '🛍️ Order',\n   thumbnail: fs.readFileSync('./path/to/image.jpg') // --- Must in buffer format\n}, {\n   quoted: message\n})\n```\n\n#### 💳 Request Payment\n\n```javascript\nsock.sendMessage(jid, {\n   text: '💳 Request Payment',\n   requestPaymentFrom: '0@s.whatsapp.net'\n})\n```\n\n### 👁️ Other Message Options\n\n#### 🤖 AI Icon\n\n> [!NOTE]\n> It only works in private chat (`@s.whatsapp.net`).\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '🤖 With AI icon!',\n   ai: true\n}, {\n   quoted: message\n})\n```\n\n#### 🕒 Ephemeral\n\n> [!NOTE]\n> Wrap message into `ephemeralMessage`\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '👁️ Ephemeral',\n   ephemeral: true\n})\n```\n\n#### 📰 External Ad Reply\n\n> [!NOTE]\n> Add an ad thumbnail to messages (may not be displayed on some WhatsApp versions).\n\n```javascript\nsock.sendMessage(jid, {\n   text: '📰 External Ad Reply',\n   externalAdReply: {\n      title: '📝 Did you know?',\n      body: '❓ I dont know',\n      thumbnail: fs.readFileSync('./path/to/image.jpg'), // --- Must in buffer format\n      largeThumbnail: false, // --- Or true for bigger thumbnail\n      url: 'https://www.npmjs.com/package/@sairidev/baileys' // --- Optional, used for WhatsApp internal thumbnail caching and direct URL\n   }\n}, {\n   quoted: message\n})\n```\n\n#### 🧑‍🧑‍🧒 Group Status\n\n> [!NOTE]\n> It only works in group chat (`@g.us`)\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '👥 Group Status!',\n   groupStatus: true\n})\n```\n\n#### 🐱 Lottie Sticker\n\n> [!NOTE]\n> Wrap message into `lottieStickerMessage`\n\n```javascript\nsock.sendMessage(jid, {\n   sticker: {\n      url: './path/to/sticker.webp'\n   },\n   isLottie: true\n})\n```\n\n#### 🧩 Raw\n\n```javascript\nsock.sendMessage(jid, {\n   extendedTextMessage: {\n      text: '📃 Built manually from scratch using the raw WhatsApp proto structure',\n      contextInfo: {\n         externalAdReply: {\n            title: '@sairidev/baileys',\n            thumbnail: fs.readFileSync('./path/to/image.jpg'),\n            sourceApp: 'whatsapp',\n            showAdAttribution: true,\n            mediaType: 1\n         }\n      }\n   },\n   raw: true\n}, {\n   quoted: message\n})\n```\n\n#### 🏷️ Secure Meta Service Label\n\n```javascript\nsock.sendMessage(jid, {\n   text: '🏷️ Just a label!',\n   secureMetaServiceLabel: true\n})\n```\n\n#### 📑 Spoiler\n\n> [!NOTE]\n> Wrap message into `spoilerMessage`\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '❔ Spoiler',\n   spoiler: true\n})\n```\n\n#### 👁️ View Once\n\n> [!NOTE]\n> Wrap message into `viewOnceMessage`\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '👁️ View Once',\n   viewOnce: true\n})\n```\n\n#### 👁️ View Once V2\n\n> [!NOTE]\n> Wrap message into `viewOnceMessageV2`\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '👁️ View Once V2',\n   viewOnceV2: true\n})\n```\n\n#### 👁️ View Once V2 Extension\n\n> [!NOTE]\n> Wrap message into `viewOnceMessageV2Extension`\n\n```javascript\nsock.sendMessage(jid, {\n   image: {\n      url: './path/to/image.jpg'\n   },\n   caption: '👁️ View Once V2 Extension',\n   viewOnceV2Extension: true\n})\n```\n\n### ♻️ Modify Messages\n\n#### 🗑️ Delete Messages\n\n```javascript\nsock.sendMessage(jid, {\n   delete: message.key\n})\n```\n\n#### ✏️ Edit Messages\n\n```javascript\n// --- Edit plain text\nsock.sendMessage(jid, {\n   text: '✨ I mean, nice!',\n   edit: message.key\n})\n\n// --- Edit media messages caption\nsock.sendMessage(jid, {\n   caption: '✨ I mean, here is the image!',\n   edit: message.key\n})\n```\n\n### 🧰 Additional Contents\n\n#### 🏷️ Find User ID (JID|PN/LID)\n\n> [!NOTE]\n> The ID must contain numbers only (no +, (), or -) and must include the country code with WhatsApp ID format.\n\n```javascript\n// --- PN (Phone Number)\nconst phoneNumber = '6281111111111@s.whatsapp.net'\n\nconst ids = await sock.findUserId(phoneNumber)\n\nconsole.log('🏷️ Got user ID', ':', ids)\n\n// --- LID (Local Identifier)\nconst lid = '43411111111111@lid'\n\nconst ids = await sock.findUserId(lid)\n\nconsole.log('🏷️ Got user ID', ':', ids)\n\n// --- Output\n// {\n//    phoneNumber: '6281111111111@s.whatsapp.net',\n//    lid: '43411111111111@lid'\n// }\n// --- Output when failed\n// {\n//    phoneNumber: '6281111111111@s.whatsapp.net',\n//    lid: undefined\n// }\n// --- Same output shape regardless of input type\n```\n\n#### 🔑 Request Custom Pairing Code\n\n> [!NOTE]\n> The phone number must contain numbers only (no +, (), or -) and must include the country code.\n\n```javascript\nconst phoneNumber = '6281111111111'\nconst customPairingCode = 'STARFALL'\n\nawait sock.requestPairingCode(phoneNumber, customPairingCode)\n\nconsole.log('🔗 Pairing code', ':', customPairingCode)\n```\n\n#### 🖼️ Image Processing\n\n> [!NOTE]\n> Automatically use available image processing library: `sharp`, `@napi-rs/image`, or `jimp`\n\n```javascript\nimport { getImageProcessingLibrary } from '@sairidev/baileys'\nimport { readFile } from 'fs/promises'\n\nconst lib = await getImageProcessingLibrary()\n\nconst bufferOrFilePath = './path/to/image.jpg'\nconst width = 512\n\nlet output\n\n// --- If sharp installed\nif (lib.sharp?.default) {\n   const img = lib.sharp.default(bufferOrFilePath)\n\n   output = await img.resize(width)\n      .jpeg({ quality: 80 })\n      .toBuffer()\n}\n\n// --- If @napi-rs/image installed\nelse if (lib.image?.Transformer) {\n   // --- Must in buffer format\n   const inputBuffer = Buffer.isBuffer(bufferOrFilePath)\n      ? bufferOrFilePath\n      : await readFile(bufferOrFilePath)\n\n   const img = new lib.image.Transformer(inputBuffer)\n\n   output = await img.resize(width, undefined, 0)\n      .jpeg(50)\n}\n\n// --- If jimp installed\nelse if (lib.jimp?.Jimp) {\n   const img = await lib.jimp.Jimp.read(bufferOrFilePath)\n\n   output = await img\n      .resize({ w: width, mode: lib.jimp.ResizeStrategy.BILINEAR })\n      .getBuffer('image/jpeg', { quality: 50 })\n}\n\n// --- Fallback\nelse {\n   throw new Error('No image processing available')\n}\n\nconsole.log('✅ Process completed!')\nconsole.dir(output, { depth: null })\n```\n\n#### 📣 Newsletter Management\n\n```javascript\n// --- Create a new one\nsock.newsletterCreate('@sairidev/baileys', '📣 Fresh updates weekly')\n\n// --- Get info\nconst metadata = sock.newsletterMetadata('1231111111111@newsletter')\nconsole.dir(metadata, { depth: null })\n\n// --- Get subscribers count\nconst subscribers = await sock.newsletterSubscribers('1231111111111@newsletter')\nconsole.dir(subscribers, { depth: null })\n\n// --- Follow and Unfollow\nsock.newsletterFollow('1231111111111@newsletter')\nsock.newsletterUnfollow('1231111111111@newsletter')\n\n// --- Mute and Unmute\nsock.newsletterMute('1231111111111@newsletter')\nsock.newsletterUnmute('1231111111111@newsletter')\n\n// --- Demote admin\nsock.newsletterDemote('1231111111111@newsletter', '6281111111111@s.whatsapp.net')\n\n// --- Change owner\nsock.newsletterChangeOwner('1231111111111@newsletter', '6281111111111@s.whatsapp.net')\n\n// --- Update newsletter\nsock.newsletterUpdate('1231111111111@newsletter', { name: '@sairidev/baileys' })\n\n// --- Change name\nsock.newsletterUpdateName('1231111111111@newsletter', '📦 @sairidev/baileys')\n\n// --- Change description\nsock.newsletterUpdateDescription('1231111111111@newsletter', '📣 Fresh updates weekly')\n\n// --- Change photo\nsock.newsletterUpdatePicture('1231111111111@newsletter', {\n   url: 'path/to/image.jpg'\n})\n\n// --- Remove photo\nsock.newsletterRemovePicture('1231111111111@newsletter')\n\n// --- React to a message\nsock.newsletterReactMessage('1231111111111@newsletter', '100', '💛')\n\n// --- Get admin count\nconst count = await sock.newsletterAdminCount('1231111111111@newsletter')\n\n// --- Get all subscribed newsletters\nconst newsletters = await sock.newsletterSubscribed()\nconsole.dir(newsletters, { depth: null })\n\n// --- Fetch newsletter messages\nconst messages = sock.newsletterFetchMessages('jid', '1231111111111@newsletter', 50, 0, 0)\nconsole.dir(messages, { depth: null })\n\n// --- Delete newsletter\nsock.newsletterDelete('1231111111111@newsletter')\n```\n\n#### 👥 Group Management\n\n```javascript\n// --- Create a new one and add participants using their JIDs\nconst group = sock.groupCreate('@sairidev/baileys', ['628123456789@s.whatsapp.net'])\nconsole.dir(group, { depth: null })\n\n// --- Get info\nconst metadata = await sock.groupMetadata(jid)\nconsole.dir(metadata, { depth: null })\n\n// --- Get group invite code\nconst inviteCode = await sock.groupInviteCode(jid)\nconsole.dir(inviteCode, { depth: null })\n\n\n// --- Revoke invite link\nsock.groupRevokeInvite(jid)\n\n// --- Accept group invite\nsock.groupAcceptInvite(inviteCode)\n\n// --- Leave group\nsock.groupLeave(jid)\n\n// --- Add participants\nsock.groupParticipantsUpdate(jid, ['628123456789@s.whatsapp.net'], 'add')\n\n// --- Remove participants\nsock.groupParticipantsUpdate(jid, ['628123456789@s.whatsapp.net'], 'remove')\n\n// --- Promote to admin\nsock.groupParticipantsUpdate(jid, ['628123456789@s.whatsapp.net'], 'promote')\n\n// --- Demote from admin\nsock.groupParticipantsUpdate(jid, ['628123456789@s.whatsapp.net'], 'demote')\n\n// --- Accept join requests\nsock.groupRequestParticipantsUpdate(jid, ['628123456789@s.whatsapp.net'], 'approve')\n\n// --- Change name\nsock.groupUpdateSubject(jid, '📦 @sairidev/baileys')\n\n// --- Change description\nsock.groupUpdateDescription(jid, 'Updated description')\n\n// --- Change photo\nsock.updateProfilePicture(jid, {\n   url: 'path/to/image.jpg'\n})\n\n// --- Remove photo\nsock.removeProfilePicture(jid)\n\n// --- Set group as admin only for chatting\nsock.groupSettingUpdate(jid, 'announcement')\n\n// --- Set group as open to all for chatting\nsock.groupSettingUpdate(jid, 'not_announcement')\n\n// --- Set admin only can edit group info\nsock.groupSettingUpdate(jid, 'locked')\n\n// --- Set all participants can edit group info\nsock.groupSettingUpdate(jid, 'unlocked')\n\n// --- Set admin only can add participants\nsock.groupMemberAddMode(jid, 'admin_add')\n\n// --- Set all participants can add participants\nsock.groupMemberAddMode(jid, 'all_member_add')\n\n// --- Enable or disable temporary messages with seconds format\nsock.groupToggleEphemeral(jid, 86400)\n\n// --- Disable temporary messages\nsock.groupToggleEphemeral(jid, 0)\n\n// --- Enable or disable membership approval mode\nsock.groupJoinApprovalMode(jid, 'on')\nsock.groupJoinApprovalMode(jid, 'off')\n\n// --- Get all groups metadata\nconst groups = await sock.groupFetchAllParticipating()\nconsole.dir(groups, { depth: null })\n\n// --- Get pending join requests\nconst requests = await sock.groupRequestParticipantsList(jid)\nconsole.dir(requests, { depth: null })\n\n// --- Get group info from link\nconst group = await sock.groupGetInviteInfo('ABC123456789')\nconsole.log('👥 Got group info from invite code', ':', group)\n\n// --- Update bot member label\nsock.updateMemberLabel(jid, '@sairidev/baileys')\n```\n\n#### 👥 Community Management\n\n```javascript\n// --- Create a new one and add description\nconst community = await sock.communityCreate('@sairidev/baileys', '📣 Fresh updates weekly')\nconsole.dir(community, { depth: null })\n\n// --- Create a subgroup for community and add participants using their JIDs\nconst group = await sock.communityCreateGroup('📢 Announcements', ['628123456789@s.whatsapp.net'], communityJid)\n\n// --- Link an existing group\nsock.communityLinkGroup(groupJid, communityJid)\n\n// --- Unlink an existing group\nsock.communityUnlinkGroup(groupJid, communityJid)\n\n// --- Get info\nconst metadata = await sock.communityMetadata(jid)\nconsole.dir(metadata, { depth: null })\n\n// --- Get community invite code\nconst inviteCode = await sock.communityInviteCode(jid)\nconsole.dir(inviteCode, { depth: null })\n\n// --- Revoke invite link\nsock.communityRevokeInvite(jid)\n\n// --- Accept community invite\nsock.communityAcceptInvite(inviteCode)\n\n// --- Leave community\nsock.communityLeave(jid)\n\n// --- Accept join requests\nsock.communityRequestParticipantsUpdate(jid, ['628123456789@s.whatsapp.net'], 'approve')\n\n// --- Change name\nsock.communityUpdateSubject(jid, '📦 @sairidev/baileys')\n\n// --- Change description\nsock.communityUpdateDescription(jid, 'Updated description')\n\n// --- Set community as admin only for chatting\nsock.communitySettingUpdate(jid, 'announcement')\n\n// --- Set community as open to all for chatting\nsock.communitySettingUpdate(jid, 'not_announcement')\n\n// --- Set admin only can edit community info\nsock.communitySettingUpdate(jid, 'locked')\n\n// --- Set all participants can edit community info\nsock.communitySettingUpdate(jid, 'unlocked')\n\n// --- Set admin only can add participants\nsock.communityMemberAddMode(jid, 'admin_add')\n\n// --- Set all participants can add participants\nsock.communityMemberAddMode(jid, 'all_member_add')\n\n// --- Enable or disable temporary messages with seconds format\nsock.communityToggleEphemeral(jid, 86400)\n\n// --- Disable temporary messages\nsock.communityToggleEphemeral(jid, 0)\n\n// --- Enable or disable membership approval mode\nsock.communityJoinApprovalMode(jid, 'on')\nsock.communityJoinApprovalMode(jid, 'off')\n\n// --- Get all communities metadata\nconst communities = await sock.communityFetchAllParticipating()\nconsole.dir(communities, { depth: null })\n\n// --- Get all community linked groups\nconst linked = await sock.communityFetchLinkedGroups(jid)\nconsole.dir(linked, { depth: null })\n\n// --- Get pending join requests\nconst requests = await sock.communityRequestParticipantsList(jid)\nconsole.dir(requests, { depth: null })\n\n// --- Get community info from link\nconst community = await sock.communityGetInviteInfo('ABC123456789')\nconsole.log('👥 Got community info from invite code', ':', community)\n```\n\n#### 👤 Profile Management\n\n```javascript\n// --- Get user profile picture\nconst url = await sock.profilePictureUrl(jid, 'image')\nconsole.log('🖼️ Got user profile url', url)\n\n// --- Update profile picture\nsock.updateProfilePicture(jid, buffer)\nsock.updateProfilePicture(jid, { url })\n\n// --- Remove profile picture\nsock.removeProfilePicture(jid)\n\n// --- Update profile name\nsock.updateProfileName('My Name')\n\n// --- Update profile status\nsock.updateProfileStatus('Available')\n\n// --- Presence\nsock.sendPresenceUpdate('available', jid)\nsock.presenceSubscribe(jid)\n\n// --- Read receipts\nsock.readMessages([message.key])\nsock.sendReceipt(jid, participant, [messageId], 'read')\n\n// --- Block user\nsock.updateBlockStatus(jid, 'block')\n\n// --- Unblock user\nsock.updateBlockStatus(jid, 'unblock')\n\n// --- Fetch blocklist\nconst blocked = await sock.fetchBlocklist()\nconsole.dir(blocked, { depth: null })\n\n// --- Modify chats\nsock.chatModify({\n   archive: true,\n   lastMessageOrig: message,\n   lastMessage: message\n}, jid)\n\n// --- Star messages\nsock.star(jid, [{ id: messageId, fromMe: true }], true)\n\n// --- Contact\nsock.addOrEditContact(jid, { displayName: 'Starseed' })\nsock.removeContact(jid)\n\n// --- Label\nsock.addChatLabel(jid, labelId)\nsock.removeChatLabel(jid, labelId)\nsock.addMessageLabel(jid, messageId, labelId)\n\n// --- App state sync\nsock.resyncAppState(['regular', 'critical_block'], true)\n\n// --- Get business profile\nconst profile = await sock.getBusinessProfile(jid)\nconsole.dir(profile, { depth: null })\n```\n\n#### 🛒 Business Management\n\n```javascript\n// --- Create a new product\nconst product = await sock.productCreate({\n   name: '🧩 Starseed (Premium)',\n   description: 'Get a full version of Starseed!',\n   price: 100000,\n   currency: 'IDR',\n   originCountryCode: 'ID',\n   images: [\n      bufferImage,\n      {\n         url: './path/to/image.jpg'\n      }\n   ]\n})\nconsole.dir(product, { depth: null })\n\n// --- Update product\nawait sock.productUpdate(productId, {\n   name: '🧩 Starseed (Premium)',\n   description: 'Get a full version of Starseed with more features!',\n   price: 75000,\n   currency: 'IDR',\n   images: [\n      {\n         url: './path/to/image.jpg'\n      }\n   ]\n})\n\n// --- Delete product\nsock.productDelete([productId])\n\n// --- Get catalog info\nconst { products, nextPageCursor } = await sock.getCatalog({\n  jid: '628123456789@s.whatsapp.net',\n  limit: 10\n})\n\n// --- Get collections\nconst collections = await sock.getCollections('628123456789@s.whatsapp.net', 10)\nconsole.dir(collections, { depth: null })\n\n// --- Get order info\nconst order = await sock.getOrderDetails(orderId, tokenBase64)\nconsole.dir(order, { depth: null })\n\n// --- Update business profile\nawait sock.updateBusinessProfile({\n   address: 'Jakarta, Indonesia',\n   description: '🛒 Official Starseed Store',\n   websites: ['https://www.npmjs.com/package/@sairidev/baileys'],\n   email: 'more-more@gmail.com',\n   hours: {\n      timezone: 'Asia/Jakarta',\n      days: [{ day: 'mon', mode: 'open_24h' }]\n   }\n})\n\n// --- Update cover\nsock.updateCoverPhoto({\n   url: './path/to/image.jpg'\n})\n\n// --- Remove cover\nsock.removeCoverPhoto(coverId)\n\n// --- Update quick replies\nsock.addOrEditQuickReply({\n  shortcut: 'hello',\n  message: 'Hello from business account',\n})\n\n// --- Remove quick reply\nsock.removeQuickReply(timestamp)\n```\n\n#### 🔐 Privacy Management\n\n```javascript\n// --- Update last seen privacy\nsock.updateLastSeenPrivacy('all')\nsock.updateLastSeenPrivacy('contacts')\nsock.updateLastSeenPrivacy('contact_blacklist')\nsock.updateLastSeenPrivacy('nobody')\n\n// --- Update online privacy\nsock.updateOnlinePrivacy('all')\nsock.updateOnlinePrivacy('match_last_seen')\n\n// --- Update profile picture privacy\nsock.updateProfilePicturePrivacy('contacts')\n\n// --- Update status privacy\nsock.updateStatusPrivacy('contacts')\n\n// --- Update read receipts privacy\nsock.updateReadReceiptsPrivacy('all')\nsock.updateReadReceiptsPrivacy('none')\n\n// --- Update groups add privacy\nsock.updateGroupsAddPrivacy('all')\nsock.updateGroupsAddPrivacy('contacts')\n\n// --- Update messages privacy\nsock.updateMessagesPrivacy('all')\nsock.updateMessagesPrivacy('contacts')\nsock.updateMessagesPrivacy('nobody')\n\n// --- Update call privacy\nsock.updateCallPrivacy('everyone')\n\n// --- Update default disappearing mode\nsock.updateDefaultDisappearingMode(86400)\n\n// --- Update link previews privacy\nsock.updateDisableLinkPreviewsPrivacy(true)\n```\n\n#### 📡 Events\n\n```javascript\nsock.ev.on('connection.update', (update) => {})\nsock.ev.on('creds.update', (update) => {})\nsock.ev.on('messaging-history.set', (update) => {})\nsock.ev.on('messaging-history.status', (update) => {})\nsock.ev.on('chats.upsert', (update) => {})\nsock.ev.on('chats.update', (update) => {})\nsock.ev.on('chats.delete', (update) => {})\nsock.ev.on('chats.lock', (update) => {})\nsock.ev.on('lid-mapping.update', (update) => {})\nsock.ev.on('presence.update', (update) => {})\nsock.ev.on('contacts.upsert', (update) => {})\nsock.ev.on('contacts.update', (update) => {})\nsock.ev.on('messages.delete', (update) => {})\nsock.ev.on('messages.update', (update) => {})\nsock.ev.on('messages.media-update', (update) => {})\nsock.ev.on('messages.upsert', (update) => {})\nsock.ev.on('messages.reaction', (update) => {})\nsock.ev.on('message-receipt.update', (update) => {})\nsock.ev.on('groups.upsert', (update) => {})\nsock.ev.on('groups.update', (update) => {})\nsock.ev.on('group-participants.update', (update) => {})\nsock.ev.on('group.join-request', (update) => {})\nsock.ev.on('group.member-tag.update', (update) => {})\nsock.ev.on('blocklist.set', (update) => {})\nsock.ev.on('blocklist.update', (update) => {})\nsock.ev.on('call', (update) => {})\nsock.ev.on('labels.edit', (update) => {})\nsock.ev.on('labels.association', (update) => {})\nsock.ev.on('newsletter.reaction', (update) => {})\nsock.ev.on('newsletter.view', (update) => {})\nsock.ev.on('newsletter-participants.update', (update) => {})\nsock.ev.on('newsletter-settings.update', (update) => {})\nsock.ev.on('settings.update', (update) => {})\n```\n\n### 🚀 Try the Bot\n\nA fast, lightweight, and modular WhatsApp bot built with [@sairidev/baileys](https://www.npmjs.com/package/@sairidev/baileys).\nPerfect for managing groups, moderating chats, and adding fun with quiz games and handy tools.\n\n👉🏻 [@sairidev/starseed](https://github.com/sairidev/starseed#readme)\n\n### 📦 Fork Base\n\nThis fork is based on [Baileys (GitHub)](https://github.com/WhiskeySockets/Baileys), by way of\n[itsliaaa/baileys](https://github.com/itsliaaa/baileys), whose modifications this package builds on\ndirectly. This package would not exist without their work.\n\n### 📣 Credits\n\nThis fork uses Protocol Buffer definitions maintained by [WPP Connect](https://github.com/wppconnect-team) via [`wa-proto`](https://github.com/wppconnect-team/wa-proto)\n\nFull credit is attributed to the original maintainers and contributors of Baileys:\n- [purpshell](https://github.com/purpshell)\n- [jlucaso1](https://github.com/jlucaso1)\n- [adiwajshing](https://github.com/adiwajshing)\n\nFull credit for the intermediate fork this package is directly based on goes to\n[itsliaaa](https://github.com/itsliaaa) ([@itsliaaa/baileys](https://www.npmjs.com/package/@itsliaaa/baileys)).\nThe features synced in this version — newsletter media upload fix, `makeInMemoryStore` reintroduction,\nFFmpeg `spawn` execution, `@napi-rs/image` backend, expanded Rich Response / Code Block / Inline Entities /\nTable messages, newsletter message quoting, custom interactive button icons, `mentionAll`, and\n`secureMetaServiceLabel` — originate from their fork.\n\n<!-- Please do not replace my name with yours. It's disrespectful. -->\n\nThis fork includes additional enhancements and modifications by [sairidev](https://github.com/sairidev)\n\nSpecial thanks to [itsreimau](https://github.com/itsreimau) for the fix to the `updateBlockStatus` implementation.\n\n> [!CAUTION]\n> ⚠️ **Modification, removal, or misrepresentation of these credits is strictly prohibited. Any redistribution or fork must preserve this section in its original form without exception.**","readmeFilename":"README.md"}