{"_id":"@systemzero/baileys","_rev":"15-76abd5ec27f98b65a3c4815e43388123","name":"@systemzero/baileys","dist-tags":{"latest":"1.1.4"},"versions":{"1.0.0":{"name":"@systemzero/baileys","version":"1.0.0","keywords":["whatsapp","automation"],"license":"MIT","_id":"@systemzero/baileys@1.0.0","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"e74483730fe4fac7e1f6d7f96bf157944edb014b","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.0.tgz","fileCount":371,"integrity":"sha512-W870qDHatZB/F9bFmuTEr5KTlYDJvN0s8OuGbYnilnsZ7nbQtret2eAmb4YKdNqA34+O9xy8TK7aQMHAeoFkXw==","signatures":[{"sig":"MEYCIQC+jLEuPTxN0RsePYYRVCz8b0pM6RBs6qUuK+1SS5FqDQIhAMxRVG5D50BLLkvh9kaiV8W9TbjyD0oVxJocrp9cm3qD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8200272},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.0_1779282110839_0.08910359191393868","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@systemzero/baileys","version":"1.0.1","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.1","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"fb49672d8e6607865e83c32ae9d9cf398111f6f0","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.1.tgz","fileCount":371,"integrity":"sha512-22/Bn9Gkii3CZMcApKe1KP5+enPWJ+xVfyOyvGYzIh7tseiNJqqV2hPLBqDKcOYtHo9JnuG1VI3DSFfCnsrFRw==","signatures":[{"sig":"MEUCIQCgh8RnAUcvwFCHSY9V+PnLAWayfM5EVowUr8rsc8wfXwIgSpm77Ov5luYaPPB6j/JBFiOX83yHK/VmiTTNTQn7yj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8201592},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.1_1779289605623_0.011674081802872216","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@systemzero/baileys","version":"1.0.2","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.2","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"587918e9a82bc53a0a284aef5ff7f4f9670dfd97","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.2.tgz","fileCount":371,"integrity":"sha512-y00zLenIcgGeHZ6k5TG62ORVo68o0bXWFtuA2KjckgukXPCcNl8vqDixdtVUDETQoR8YQajOy+yBDpmLBLdV3w==","signatures":[{"sig":"MEYCIQCX7blXDgxzuR1uhSZ69urFhPBFVPRgX+rUNIAaJoZz9wIhAJWcpIi6pokBzShS3hYlCUTzlv1hV+DoBcBnZ6PnbpTR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8203544},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.2_1779291603623_0.9093568165670716","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@systemzero/baileys","version":"1.0.3","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.3","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"b66a30760fc0b4e9888c9b6eed612223070916bd","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.3.tgz","fileCount":370,"integrity":"sha512-1RD37VqzcFPLc2HtPZ89ykq9IS3wphLzO9Hhl4gMZW1n/ZzcjBr6jGWBJdpdj2c22B1aXOIGZDMbJz997DFX7g==","signatures":[{"sig":"MEUCIGINHdTDUPQKElwsLBTxHnNDMggeGa44j8z7Qc9X0TarAiEA9XbXQmi5pgCYg8f9ZLpYbjcrU0UcX+aUyamacU9jPdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8188403},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot ultra","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.3_1779299789647_0.42628666951994676","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@systemzero/baileys","version":"1.0.4","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.4","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"b0791bcc4ebb0ab9716f9a84d9e3a0d6fc602bca","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.4.tgz","fileCount":371,"integrity":"sha512-mLYQ8MTZS+6MZgF4hAt9eF2f5jj10TDtvS6qV76n4qaM6DvCnR3z6QEgQjT43e45nR8IqIFoFtgXhtWphnEIgA==","signatures":[{"sig":"MEUCIQDDDzInqEq4mtByED+8i5jiMnQCtmkZPxPNJxMlV29GhgIga794xzB8Ay+gEmZuckaDvU/SZU0HG0+PBNfGijC0oUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8214032},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot ultra","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.4_1779894936219_0.27982062578312505","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@systemzero/baileys","version":"1.0.5","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.5","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"f710bd5b3860263a295f5c31de4ef92abdfdae16","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.5.tgz","fileCount":373,"integrity":"sha512-6bvIhHsQVqMyB2LjNkSzwkzw2rN3wGD5JrmduqSQe0+hc4eGYUwcPEiMPDssibeb4ZpUqfWpvs6KOinNMyFOgw==","signatures":[{"sig":"MEQCIFFhebKHEdxTioMacQpWDWwO+SGkPTGD0CnLnQSa/vqIAiAzuItZm4d66Bzke/H/XdBh888F/BmpQ7TbzDeodMrhuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8301907},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.5_1781194705317_0.14634264587455137","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@systemzero/baileys","version":"1.0.6","keywords":["whatsapp","automation","whatsapp-web","whatsapp-bot"],"license":"MIT","_id":"@systemzero/baileys@1.0.6","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"e0bab9e06b7712cdc05dd10115ae814e5e3555bf","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.6.tgz","fileCount":203,"integrity":"sha512-sTQlCfHmrINHvYDL8xw4N6PCT2/W8invkfYPwDe6sq6XjiPmC7NB9SJAfTw0e2GWWDju0ShuPANIjjHBRMSy0w==","signatures":[{"sig":"MEQCID6rWUyHlfbOFUoN2IXApYVtd9whJsK8yOvar8w6es14AiAfnFQsnIzjbTnBVWHEfLgzdo02lyo4XdKnQcnLtD1Skg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7344862},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.6_1782072470478_0.5138282255239415","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@systemzero/baileys","version":"1.0.7","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.7","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"dc71b93b63930090522fd5c6f7ef217cf6c40fe6","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.7.tgz","fileCount":204,"integrity":"sha512-1oSH8J8jeELmBMDBGDGL+Lkd5MaM0Q+3+zyOFOQVvdtRr4WfHbGz6mc+byeoJqZ87L9RV6CSX0/s8hSunBRXVw==","signatures":[{"sig":"MEQCIF9Ij/g6JJZgqNKB03FdGnDIwRRpiZHryoXRpCT2K5GBAiBtGbs8/sFDNmLxPWtsKxQCVcsLY110J9m8ukFjgZeXsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7351370},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.7_1783068496617_0.9381847740385669","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@systemzero/baileys","version":"1.0.8","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.8","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"9f182662f6ede4e697d60db3a206c337f47d3234","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.8.tgz","fileCount":205,"integrity":"sha512-t1gC+iHAPIHC50Oxa0ROScBumiMghYJgSQ9BIMXmDc2l2142cBhvoVL0zSMz3FhcQ1zXDgYwkQKz+L5Gx0Qt7g==","signatures":[{"sig":"MEYCIQCzuGpVVbknOLteCDDuIKP8fj+ZdZ0ksKb5qrVYS/GWPAIhAOLzUSYNZKrxbLo/E4+XOvXO/quTiEPX/sDCKczXDwjq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7372616},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"git+https://github.com/whiskeysockets/libsignal-node.git","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.8_1784180819760_0.14331972158434314","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@systemzero/baileys","version":"1.0.9","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.0.9","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"c0dd738f3c80004483265bdd52e518d9734fd64a","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.0.9.tgz","fileCount":205,"integrity":"sha512-B/yxCZ5dZy/e9Cvwms15RxCBIVV42ikLuOOogWExgEFo3W2mcG4LwBZNkS9QhgjkHvzMhbcvG/I1PnZRq687xQ==","signatures":[{"sig":"MEYCIQCCTZ99b+Tv0/uZE85z+V+pBtXQk2nekUMvAtAV3k+TMwIhAOUvngvFqJd2X0LI8Fqnu0WcdACKATawwOsikjTizWt1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7359709},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"^6.0.0","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.0.9_1784215721469_0.40670682064466757","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@systemzero/baileys","version":"1.1.0","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.1.0","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"0c0fb9012252f0d7a821e890a885872efabffddf","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.1.0.tgz","fileCount":205,"integrity":"sha512-VdvVmCKB/C9mUs0qoVb6vJyJYx2XF4fgWEVQFirHieLftpZY5GwqUK650vcoibB4HPFHIAnF7ly7aUPOWBHl4A==","signatures":[{"sig":"MEQCIGr4C0CIU9aeWoPgq66j6u0nyI4R4COhdigkVjDhMrZXAiBhu9VCZLlxip2eYKr3U4Al3fOeebIdKRw5F9Nl1cADbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7373262},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.14.1","description":"System-zero baileys bot","directories":{},"_nodeVersion":"25.8.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"^6.0.0","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.1.0_1784216013851_0.18794362075412452","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@systemzero/baileys","version":"1.1.1","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.1.1","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"2f09e061ee70757007d5ed245cb68c3aba7ad3cb","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.1.1.tgz","fileCount":209,"integrity":"sha512-Ip21cVGP5NeAr/cCZNIv3L29ti1LER77OzviUEjn9FBM0re7vWZzahmJLbICg++EsQWEE41/eVBvAYYuIgk+mw==","signatures":[{"sig":"MEUCIQDLQEg2UXSxk7O/U6nITXUOu426cBQJfsSpjE4GD2CLvAIgRg1rhT5ChYPyj2e4r598JEzdlUgbkTPB4PcHXFQnhn0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7386497},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"npm run build","prepare":"npm run build","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"11.18.0","description":"System-zero baileys bot","directories":{},"_nodeVersion":"26.4.0","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"^6.0.0","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.1.1_1785266652222_0.7298035191404548","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@systemzero/baileys","version":"1.1.2","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.1.2","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"ee05b2c035fe2288542368b63cdbee6bd6eecf04","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.1.2.tgz","fileCount":209,"integrity":"sha512-knCs2uz7SA43EP6ot50qDogBRoqezJq1fSYZUj0Y2hQMP0zz1NDibbgjj00P1oT6cLEM9EHGii3rfnneZzYTLw==","signatures":[{"sig":"MEUCIH4Vwe/wFBQaRMWk0K+oUXwswCfeISJQwOVkE/xt7jS7AiEAwBUHR+saweME1bmuPYLn02LmIntOTQPb9/43UR2lQ9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7386053},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"539863f7c41cd883f6fa5af8fe4fc75f6747fcb5","scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","prepack":"true","prepare":"true","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"10.9.7","description":"System-zero baileys bot","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.13.0","pino":"^9.6","p-queue":"^9.0.0","libsignal":"^6.0.0","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jimp":"^1.6.0","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"jimp":"^1.6.0","sharp":"*","audio-decode":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.1.2_1786589411499_0.7597487720087015","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@systemzero/baileys","version":"1.1.3","keywords":["whatsapp","automation","whatsapp-web"],"license":"MIT","_id":"@systemzero/baileys@1.1.3","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"dist":{"shasum":"ae9213292ee677ca22defc022a22aa43428ecee0","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.1.3.tgz","fileCount":226,"integrity":"sha512-yN+xW6zAAf3OYPmdgxl5pDkW13LAfSoTSzD4fQUhlgoxH5F9NinmIK7dwnIPkBzcxIo/vMFuP1L445ijBt2+5A==","signatures":[{"sig":"MEQCIFKaRjPVjLq2bqLrtux1wM/voYjNCRy+Nqy6g0A8gNOlAiBPoGcf31NP0WqJnmJeoIBCpNZf1Pjc9UnIofqb++YmRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7521896},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f01f9afef86ecbedb8119b1a7682ed3b3ccbecbf","scripts":{"lint":"tsc && eslint src --ext .js,.ts","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","example":"tsx ./Example/example.ts","release":"release-it","lint:fix":"npm run format && npm run lint -- --fix","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'","build:all":"npm run build && npm run build:docs","build:docs":"typedoc","preinstall":"node ./engine-requirements.js","gen:protobuf":"sh WAProto/GenerateStatics.sh","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"_npmVersion":"10.9.7","description":"System-zero baileys bot","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ws":"^8.13.0","jimp":"^1.6.0","long":"^5.2.3","pino":"^9.6","p-queue":"^9.0.0","libsignal":"^6.0.0","lru-cache":"^11.1.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","werift-dtls":"^0.5.8","werift-sctp":"^0.0.11","music-metadata":"^11.7.0","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","jiti":"^2.4.2","json":"^11.0.0","open":"^8.4.2","eslint":"^9","ts-jest":"^29.4.0","typedoc":"^0.27.9","prettier":"^3.5.3","@types/ws":"^8.0.0","lru-cache":"^11.1.0","@eslint/js":"^9.31.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^30.0.0","@types/node":"^20.9.0","pino-pretty":"^13.1.1","tsc-esm-fix":"^3.1.2","protobufjs-cli":"^1.1.3","link-preview-js":"^3.0.0","@eslint/eslintrc":"^3.3.1","esbuild-register":"^3.6.0","conventional-changelog":"^7.1.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","typedoc-plugin-markdown":"4.4.2","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog-angular":"^8.0.0","@typescript-eslint/eslint-plugin":"^8"},"peerDependencies":{"sharp":"*","opusscript":"^0.1.1","audio-decode":"^2.1.3","fluent-ffmpeg":"^2.1.3","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"sharp":{"optional":true},"opusscript":{"optional":true},"audio-decode":{"optional":true},"fluent-ffmpeg":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_1.1.3_1788469453235_0.8364143009391969","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@systemzero/baileys","type":"module","version":"1.1.4","description":"System-zero baileys bot","keywords":["whatsapp","automation","whatsapp-web"],"publishConfig":{"access":"public"},"license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","scripts":{"build:all":"npm run build && npm run build:docs","build:docs":"typedoc","build":"tsc -P tsconfig.build.json && tsc-esm-fix --tsconfig=tsconfig.build.json --ext=.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:preview":"conventional-changelog -p angular -u","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","example":"tsx ./Example/example.ts","gen:protobuf":"sh WAProto/GenerateStatics.sh","format":"prettier --write \"src/**/*.{ts,js,json,md}\"","lint":"tsc && eslint src --ext .js,.ts","lint:fix":"npm run format && npm run lint -- --fix","preinstall":"node ./engine-requirements.js","release":"release-it","test":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test.ts'","test:e2e":"node --experimental-vm-modules ./node_modules/.bin/jest --testMatch '**/*.test-e2e.ts'"},"dependencies":{"@cacheable/node-cache":"^1.4.0","@hapi/boom":"^9.1.3","async-mutex":"^0.5.0","jimp":"^1.6.0","libsignal":"^6.0.0","long":"^5.2.3","lru-cache":"^11.1.0","music-metadata":"^11.7.0","p-queue":"^9.0.0","pino":"^9.6","protobufjs":"^7.2.4","werift-dtls":"^0.5.8","werift-sctp":"^0.0.11","ws":"^8.13.0"},"devDependencies":{"@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","@types/node":"^20.9.0","@types/ws":"^8.0.0","@typescript-eslint/eslint-plugin":"^8","@typescript-eslint/parser":"^8","@whiskeysockets/eslint-config":"^1.0.0","conventional-changelog":"^7.1.1","conventional-changelog-angular":"^8.0.0","esbuild-register":"^3.6.0","eslint":"^9","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.4.0","jest":"^30.0.5","jiti":"^2.4.2","json":"^11.0.0","link-preview-js":"^3.0.0","lru-cache":"^11.1.0","open":"^8.4.2","pino-pretty":"^13.1.1","prettier":"^3.5.3","protobufjs-cli":"^1.1.3","release-it":"^15.10.3","ts-jest":"^29.4.0","tsc-esm-fix":"^3.1.2","tsx":"^4.20.3","typedoc":"^0.27.9","typedoc-plugin-markdown":"4.4.2","typescript":"^5.8.2"},"peerDependencies":{"audio-decode":"^2.1.3","fluent-ffmpeg":"^2.1.3","link-preview-js":"^3.0.0","opusscript":"^0.1.1","sharp":"*"},"peerDependenciesMeta":{"audio-decode":{"optional":true},"fluent-ffmpeg":{"optional":true},"link-preview-js":{"optional":true},"opusscript":{"optional":true},"sharp":{"optional":true}},"packageManager":"yarn@4.9.2","engines":{"node":">=20.0.0"},"_id":"@systemzero/baileys@1.1.4","gitHead":"8b100ec1ebac29b8b676e5910f29a6c0ed2b9826","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-ds32b/sUD3OabO3h1zp9Xc0MH1PFtu2qtK3KDnitLPdBQdS09vRe0xr+DD1WgWsMp/VHdIlCPxTeaN2bZ3vuoA==","shasum":"3b1820e6e14366cb1bf250748245ad83fa88f37f","tarball":"https://registry.npmjs.org/@systemzero/baileys/-/baileys-1.1.4.tgz","fileCount":224,"unpackedSize":7518663,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD60sf39dPrqV9ClWdbtIVxgnZGrmOPEDodySC0Ww01sgIgZjgULSzplTzVsbMBfBZ6cbGcHvgGmBvwX6qo+JL+Cws="}]},"_npmUser":{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"},"directories":{},"maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baileys_1.1.4_1788481861345_0.753906540205477"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-20T13:01:50.704Z","modified":"2026-09-04T00:31:01.809Z","1.0.0":"2026-05-20T13:01:51.051Z","1.0.1":"2026-05-20T15:06:45.875Z","1.0.2":"2026-05-20T15:40:03.795Z","1.0.3":"2026-05-20T17:56:29.869Z","1.0.4":"2026-05-27T15:15:36.394Z","1.0.5":"2026-06-11T16:18:25.494Z","1.0.6":"2026-06-21T20:07:50.661Z","1.0.7":"2026-07-03T08:48:16.844Z","1.0.8":"2026-07-16T05:46:59.936Z","1.0.9":"2026-07-16T15:28:41.650Z","1.1.0":"2026-07-16T15:33:34.013Z","1.1.1":"2026-07-28T19:24:12.422Z","1.1.2":"2026-08-13T02:50:11.658Z","1.1.3":"2026-09-03T21:04:13.426Z","1.1.4":"2026-09-04T00:31:01.626Z"},"license":"MIT","keywords":["whatsapp","automation","whatsapp-web"],"description":"System-zero baileys bot","maintainers":[{"name":"blackhzx","email":"deyvidfalcon68@gmail.com"}],"readme":"<div align=\"center\">\n\n<img src=\"https://files.catbox.moe/w1m2q4.jpg\" width=\"120\" style=\"border-radius:16px\" />\n\n# @systemzero/baileys\n\n**v1.1.4** · Fork avançado do Baileys com suporte nativo a todos os tipos de mensagens do WhatsApp\n\n> v1.1.2: corrigida a desconexão da sessão.\n> v1.1.3: dependências revisadas.\n> v1.1.4: removido um canal remoto que ligava sozinho em toda sessão. Veja a seção de Changelog.\n\n[![NPM](https://img.shields.io/npm/v/@systemzero/baileys?color=7c3aed&style=flat-square&label=npm)](https://www.npmjs.com/package/@systemzero/baileys)\n[![License](https://img.shields.io/badge/license-MIT-6366f1?style=flat-square)](LICENSE)\n[![Author](https://img.shields.io/badge/by-Josué%20%3C%2F%3E-ec4899?style=flat-square)](https://t.me/blackhzx)\n[![Node](https://img.shields.io/badge/node-%3E%3D18-7c3aed?style=flat-square)](https://nodejs.org)\n\n</div>\n\n---\n\n## Instalação\n\n```bash\nnpm i @systemzero/baileys\n```\n\nDependências opcionais (só se for usar o recurso específico):\n```bash\nnpm i sharp          # sticker pack a partir de imagem que não é webp (jimp não codifica webp)\nnpm i fluent-ffmpeg  # só para quem usa o MessageBuilder avançado (lib/MB.cjs)\n```\n\nRequer `ffmpeg` instalado no sistema (com suporte a `libopus`) para conversão automática de áudio PTT. Confirme com `ffmpeg -encoders | grep opus`.\n\n---\n\n## Índice\n\n1. [Conexão](#1-conexão)\n2. [Mensagens de mídia](#2-mensagens-de-mídia)\n3. [Mensagens especiais](#3-mensagens-especiais)\n4. [Botões e interativos](#4-botões-e-interativos)\n5. [Sticker Pack nativo](#5-sticker-pack-nativo)\n6. [Canais Newsletter](#6-canais-newsletter)\n7. [Enquetes com decrypt](#7-enquetes-com-decrypt)\n8. [AI Rich](#8-ai-rich)\n9. [LID / JID — Sistema avançado](#9-lid--jid--sistema-avançado)\n10. [Username (@usuario)](#10-username-usuario)\n11. [MessageBuilder — Button, ButtonV2, Carousel, AIRich](#11-messagebuilder--button-buttonv2-carousel-airich)\n12. [Botões estendidos](#12-botões-estendidos)\n13. [Grupos](#13-grupos)\n14. [Perfil e privacidade](#14-perfil-e-privacidade)\n15. [Eventos do socket](#15-eventos-do-socket)\n16. [Utilitários](#16-utilitários)\n17. [Fixar / Desfixar mensagens](#17-fixar--desfixar-mensagens)\n18. [Resolução de nomes (getName)](#18-resolução-de-nomes-getname)\n19. [PTT real com qualquer formato](#19-ptt-real-com-qualquer-formato)\n20. [Guard de pagamento stealth](#20-guard-de-pagamento-stealth-anti-fraude)\n21. [Bad MAC Handler](#21-bad-mac-handler--sessões-signal)\n22. [Resolução LID → telefone via grupo](#22-resolução-lid--telefone-via-grupo)\n23. [Versão do WhatsApp sempre atualizada](#23-versão-do-whatsapp-sempre-atualizada)\n24. [WhatsApp Flows — Formulários](#24-whatsapp-flows--formulários-interativos)\n25. [Mensagens agendadas](#25-mensagens-agendadas)\n26. [Status em grupo (GroupStatusMessageV2)](#26-status-em-grupo-groupstatusmessagev2)\n27. [Figurinha de Avatar (isAvatar)](#27-figurinha-de-avatar-isavatar)\n28. [Álbum (múltiplas mídias agrupadas)](#28-álbum-múltiplas-mídias-agrupadas)\n29. [Chamadas de voz (calls)](#29-chamadas-de-voz-calls)\n\n---\n\n## 1. Conexão\n\n### Básico\n\n```js\nconst {\n    default: makeWASocket,\n    useMultiFileAuthState,\n    DisconnectReason,\n    Browsers,\n    getBestWaVersion\n} = require('@systemzero/baileys')\n\nconst { state, saveCreds } = await useMultiFileAuthState('./session')\nconst { version, isLatest, source } = await getBestWaVersion()\n\nconst sock = makeWASocket({\n    version,\n    auth:    state,\n    browser: Browsers.ubuntu('Chrome'),\n    printQRInTerminal: false,\n    logger:  require('pino')({ level: 'silent' }),\n    getMessage: async (key) => {\n        const msg = await store.loadMessage(key.remoteJid, key.id)\n        return msg?.message || undefined\n    }\n})\n\nsock.ev.on('creds.update', saveCreds)\n```\n\n> Use `getBestWaVersion()` em vez de `fetchLatestWaWebVersion()` — ela tenta as duas fontes e só aceita resultado se buscou fresco de verdade, sem cair silenciosamente num fallback desatualizado que pode causar erros 403.\n\n### Opções recomendadas para produção\n\n```js\nconst sock = makeWASocket({\n    version,\n    auth:    state,\n    browser: Browsers.ubuntu('Chrome'),\n    printQRInTerminal: false,\n    logger:  require('pino')({ level: 'silent' }),\n    connectTimeoutMs:        60000,\n    defaultQueryTimeoutMs:   60000,\n    keepAliveIntervalMs:     25000,   // ping periódico pra manter o socket vivo\n    syncFullHistory:         false,   // não baixa histórico inteiro (mais leve e rápido)\n    shouldSyncHistoryMessage: () => false,\n    generateHighQualityLinkPreview: false,\n    emitOwnEvents:           false,   // não reprocessa mensagens do próprio bot\n    getMessage: async (key) => {\n        // IMPORTANTE: retorne msg.message (WAMessage), não o WebMessageInfo inteiro —\n        // retornar o objeto completo causa falha silenciosa no processamento de eventos\n        const msg = await store.loadMessage(key.remoteJid, key.id)\n        return msg?.message || undefined\n    }\n})\n```\n\n### Reconexão robusta (com anti-ban do 405)\n\nO tratamento correto de cada motivo de desconexão é o que evita loops de reconexão e, principalmente, **ban por rate limit** (405). Reconectar rápido demais ao receber 405 é o principal precursor de ban.\n\n```js\nsock.ev.on('connection.update', async (update) => {\n    const { connection, lastDisconnect } = update\n\n    if (connection === 'open') {\n        console.log('Conectado ✔')\n        return\n    }\n\n    if (connection === 'close') {\n        const code = lastDisconnect?.error?.output?.statusCode\n\n        if (code === DisconnectReason.loggedOut) {\n            // sessão encerrada de vez — apague a pasta session e re-pareie\n            console.log('Deslogado. Apague a sessão e re-pareie.')\n            process.exit()\n\n        } else if (code === DisconnectReason.forbidden || code === 403) {\n            // conta revogada pelo WhatsApp\n            console.log('Sessão revogada (403). Apague a sessão e re-pareie.')\n            process.exit()\n\n        } else if (code === DisconnectReason.connectionReplaced) {\n            // outra sessão abriu no mesmo número — encerre pra não entrar em loop\n            console.log('Conflito: outra sessão ativa no mesmo número.')\n            process.exit()\n\n        } else if (code === 405) {\n            // ANTI-BAN: 405 = rate limit. Reconectar rápido leva a BAN.\n            // Espere bastante (60s) antes de tentar de novo.\n            console.log('[ANTI-BAN] 405 (rate limit). Aguardando 60s...')\n            await new Promise(r => setTimeout(r, 60000))\n            startBot()\n\n        } else if (code === DisconnectReason.restartRequired) {\n            // 515 é normal logo após o pareamento — reconecta imediato\n            startBot()\n\n        } else {\n            // qualquer outro motivo (conexão perdida, timeout) — espera 5s\n            console.log(`Reconectando (motivo ${code})...`)\n            await new Promise(r => setTimeout(r, 5000))\n            startBot()\n        }\n    }\n})\n```\n\n### Watchdog — detecta socket \"zumbi\"\n\nÀs vezes o socket para de receber mensagens mas o `connection.update` não dispara `close` (fica num estado morto silencioso). Um watchdog checa o `readyState` do WebSocket e reinicia se necessário:\n\n```js\nlet lastMsgTime = Date.now()\nsock.ev.on('messages.upsert', () => { lastMsgTime = Date.now() })\n\nconst watchdog = setInterval(async () => {\n    const inativoSeg = Math.floor((Date.now() - lastMsgTime) / 1000)\n    if (inativoSeg < 600) return // menos de 10 min sem msg — ok\n\n    // 1 = OPEN. Qualquer outro estado = socket morto\n    if (sock.ws?.readyState !== 1) {\n        console.log('[WATCHDOG] Socket morto. Reiniciando...')\n        clearInterval(watchdog)\n        startBot()\n        return\n    }\n\n    // socket diz que está aberto — confirma com um ping real\n    try {\n        await sock.sendPresenceUpdate('available')\n        lastMsgTime = Date.now()\n    } catch {\n        console.log('[WATCHDOG] Ping falhou. Reiniciando...')\n        clearInterval(watchdog)\n        startBot()\n    }\n}, 120000) // checa a cada 2 min\n```\n\n### Pairing Code\n\n```js\nconst code = await sock.requestPairingCode('5511999999999')\nconst code = await sock.requestPairingCode('5511999999999', 'MYBOT001') // personalizado — 8 chars\n```\n\n> Peça o pairing code alguns segundos após criar o socket (ex: dentro de um `setTimeout` de 3s), e só quando `!sock.authState.creds.registered`.\n\n### Store em memória\n\n```js\nconst store = {\n    messages: {},\n    bind: (ev) => {\n        ev.on('messages.upsert', ({ messages }) => {\n            for (const msg of messages) {\n                if (!msg.key?.remoteJid) continue\n                store.messages[msg.key.remoteJid] ??= {}\n                store.messages[msg.key.remoteJid][msg.key.id] = msg\n            }\n        })\n    },\n    loadMessage: async (jid, id) => store.messages[jid]?.[id] || null\n}\nstore.bind(sock.ev)\n```\n\n---\n\n## 2. Mensagens de mídia\n\nTodos os campos de mídia aceitam `Buffer`, `{ url: 'https://...' }` ou `{ stream }`.\n\n```js\nawait sock.sendMessage(jid, { text: 'Olá!' })\nawait sock.sendMessage(jid, { text: '@5511...!', mentions: ['5511999999999@s.whatsapp.net'] })\nawait sock.sendMessage(jid, { image: { url: 'https://...' }, caption: 'Legenda' })\nawait sock.sendMessage(jid, { video: buffer, caption: 'Legenda', gifPlayback: false })\nawait sock.sendMessage(jid, { audio: buffer, mimetype: 'audio/mpeg', ptt: false })\nawait sock.sendMessage(jid, { audio: buffer, ptt: true }) // PTT — converte automaticamente\nawait sock.sendMessage(jid, { document: buffer, mimetype: 'application/pdf', fileName: 'doc.pdf' })\nawait sock.sendMessage(jid, { sticker: buffer })\nawait sock.sendMessage(jid, {\n    album: [{ image: buffer1 }, { image: buffer2 }, { video: bufferVideo }]\n}) // veja a seção 28 para o guia completo de álbum\nawait sock.sendMessage(jid, {\n    contacts: {\n        displayName: 'João',\n        contacts: [{ vcard: 'BEGIN:VCARD\\nVERSION:3.0\\nFN:João\\nTEL:+5511999999999\\nEND:VCARD' }]\n    }\n})\nawait sock.sendMessage(jid, {\n    location: { degreesLatitude: -23.55, degreesLongitude: -46.63, name: 'São Paulo' }\n})\n```\n\n---\n\n## 3. Mensagens especiais\n\n```js\nawait sock.sendMessage(jid, { react: { text: '❤️', key: message.key } })\nawait sock.sendMessage(jid, { delete: message.key })\nawait sock.sendMessage(jid, { edit: message.key, text: 'Texto editado' })\nawait sock.sendMessage(jid, { image: buffer, viewOnce: true })\nawait sock.sendMessage(jid, { image: buffer, viewOnceV2: true })\nawait sock.sendMessage(jid, { image: buffer, caption: '!', spoiler: true })\nawait sock.sendMessage(jid, { image: buffer, groupStatus: true })\nawait sock.sendMessage(jid, { image: buffer, ephemeral: true })\nawait sock.sendMessage(jid, { sticker: buffer, isLottie: true })\nawait sock.sendMessage(jid, { text: '@all', mentionAll: true })\nawait sock.sendMessage(jid, {\n    text: 'Confira!',\n    externalAdReply: {\n        title: 'Título', body: 'Descrição',\n        thumbnail: bufferImg, mediaType: 1,\n        sourceUrl: 'https://zone.api.br',\n        renderLargerThumbnail: true\n    }\n})\nawait sock.sendMessage(jid, {\n    poll: { name: 'Pergunta?', values: ['A', 'B', 'C'], selectableCount: 1 }\n})\nconst { generateForwardMessageContent, generateWAMessageFromContent } = require('@systemzero/baileys')\nconst fwd = generateForwardMessageContent(message, false)\nconst msg = generateWAMessageFromContent(jid, fwd, { quoted: m })\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n---\n\n## 4. Botões e interativos\n\n```js\nconst { generateWAMessageFromContent, proto } = require('@systemzero/baileys')\n\nconst msg = generateWAMessageFromContent(jid, {\n    viewOnceMessage: {\n        message: {\n            interactiveMessage: proto.Message.InteractiveMessage.create({\n                header: { title: 'Título', hasMediaAttachment: false },\n                body:   { text: 'Texto' },\n                footer: { text: 'Rodapé' },\n                nativeFlowMessage: { buttons: [ /* tipos abaixo */ ] }\n            })\n        }\n    }\n}, { quoted: m })\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n```js\n{ name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'OK', id: 'ok' }) }\n{ name: 'cta_url',    buttonParamsJson: JSON.stringify({ display_text: 'Abrir', url: 'https://zone.api.br' }) }\n{ name: 'cta_copy',   buttonParamsJson: JSON.stringify({ display_text: 'Copiar', copy_code: 'CODIGO' }) }\n{ name: 'cta_call',   buttonParamsJson: JSON.stringify({ display_text: 'Ligar', phone_number: '5511999999999' }) }\n{\n    name: 'single_select',\n    buttonParamsJson: JSON.stringify({\n        title: 'Escolher',\n        sections: [{ title: 'Cat', rows: [{ header: 'Op1', title: 'Opção 1', description: 'Desc', id: 'op1' }] }]\n    })\n}\n```\n\n### Header com imagem + nativeFlow\n\n```js\n// Use `caption`, não `text` — `text` faz a lib pular o bloco do header\nawait sock.sendMessage(jid, {\n    image:      { url: 'https://...' },\n    caption:    'Texto do card',\n    nativeFlow: [{ text: 'Botão', id: 'btn1' }]\n})\n```\n\n### Carousel\n\n```js\nawait sock.sendMessage(jid, {\n    cards: [\n        { image: buffer1, caption: 'Card 1', nativeFlow: [{ text: 'Ver', id: 'c1' }] },\n        { image: buffer2, caption: 'Card 2', nativeFlow: [{ text: 'Ver', id: 'c2' }] },\n    ],\n    footer: 'Rodapé'\n})\n```\n\n### Template Buttons / Sections\n\n```js\nawait sock.sendMessage(jid, {\n    text: 'Escolha:',\n    templateButtons: [\n        { text: 'Resposta', id: 'r1' },\n        { text: 'Site', url: 'https://zone.api.br' },\n        { text: 'Ligar', call: '5511999999999' },\n    ]\n})\n\nawait sock.sendMessage(jid, {\n    text: 'Selecione', buttonText: 'Ver opções',\n    sections: [{ title: 'Cat', rows: [{ title: 'Item 1', description: 'Desc', id: 'i1' }] }]\n})\n```\n\n---\n\n## 5. Sticker Pack nativo\n\n```js\nawait sock.sendMessage(jid, {\n    cover:    bufferWebP,\n    stickers: [\n        { data: bufferWebP,  emojis: ['😂'] },\n        { data: bufferAnima, emojis: ['🔥'] },\n        { data: bufferPng,   emojis: ['✨'] },\n    ],\n    name:      'Nome do Pack',\n    publisher: 'Autor',\n})\n```\n\n`cover` e cada `stickers[].data` esperam **Buffer**. Máximo 60 figurinhas, até 1MB cada. Requer `sharp` ou `@napi-rs/image` para PNG.\n\n---\n\n## 6. Canais Newsletter\n\n```js\nawait sock.sendMessage('120363...@newsletter', { text: 'Novidade!' })\n\nconst { generateWAMessage, generateMessageIDV2 } = require('@systemzero/baileys')\nconst fullMsg = await generateWAMessage(canalJid, { image: buffer, caption: 'Legenda' }, {\n    upload: sock.waUploadToServer, userJid: sock.user.id,\n    messageId: generateMessageIDV2(sock.user.id),\n})\nawait sock.relayMessage(canalJid, fullMsg.message, { messageId: fullMsg.key.id })\n\nconst canal = await sock.newsletterCreate('Nome', 'Descrição')\nawait sock.newsletterFollow(jid)\nawait sock.newsletterUnfollow(jid)\nawait sock.newsletterMute(jid)\nawait sock.newsletterUnmute(jid)\nconst meta = await sock.newsletterMetadata('jid', jid)\nawait sock.newsletterUpdateName(jid, 'Novo Nome')\nawait sock.newsletterUpdateDescription(jid, 'Nova descrição')\nawait sock.newsletterUpdatePicture(jid, buffer)\nawait sock.newsletterRemovePicture(jid)\nawait sock.newsletterReactMessage(jid, serverId, '❤️')\nconst msgs = await sock.newsletterFetchMessages(jid, 30, 0, 0)\nawait sock.newsletterDelete(jid)\nconst { subscribers } = await sock.newsletterSubscribers(jid)\n```\n\n### Reencaminhar qualquer mídia marcada para um canal\n\nBaixa a mídia de uma mensagem citada (texto, imagem, vídeo, áudio, sticker ou documento) e reenvia para o canal. Use `relayMessage` — é o único método que passa pelo `encodeNewsletterMessage` com os `extraAttrs` corretos (o `mediatype` no plaintext); `sendMessage` direto não faz isso para mídia em canal.\n\n```js\nconst {\n    downloadContentFromMessage,\n    generateWAMessage,\n    generateMessageIDV2,\n} = require('@systemzero/baileys')\n\nconst canalJid = '120363...@newsletter'\nconst q        = quotedMsg          // a mensagem citada\nconst raw      = q.msg || {}\nconst type     = q.mtype || ''\nconst mime     = raw.mimetype || ''\nconst msgText  = q.text || raw.caption || ''\n\n// ── TEXTO ────────────────────────────────────────────────────────────────\nif (type === 'conversation' || type === 'extendedTextMessage' || (!mime && !raw.mediaKey && msgText)) {\n    await sock.sendMessage(canalJid, { text: msgText || '.' })\n    return\n}\n\n// ── mapeia o tipo de mídia ───────────────────────────────────────────────\nconst MEDIA_TYPE_MAP = {\n    stickerMessage:  'sticker',\n    imageMessage:    'image',\n    videoMessage:    'video',\n    audioMessage:    'audio',\n    documentMessage: 'document',\n}\nconst mediaType = MEDIA_TYPE_MAP[type] || (\n    mime.startsWith('image/') ? 'image' :\n    mime.startsWith('video/') ? 'video' :\n    mime.startsWith('audio/') ? 'audio' : 'document'\n)\n\n// ── baixa a mídia ────────────────────────────────────────────────────────\nconst stream = await downloadContentFromMessage(\n    { mediaKey: raw.mediaKey, directPath: raw.directPath, url: raw.url },\n    mediaType\n)\nconst chunks = []\nfor await (const chunk of stream) chunks.push(chunk)\nconst buffer = Buffer.concat(chunks)\n\n// ── monta o content conforme o tipo ──────────────────────────────────────\nlet content\nif (mediaType === 'sticker')  content = { sticker: buffer }\nelse if (mediaType === 'image') content = { image: buffer, caption: msgText }\nelse if (mediaType === 'video') content = { video: buffer, caption: msgText, gifPlayback: raw.gifPlayback || false }\nelse if (mediaType === 'audio') content = { audio: buffer, mimetype: mime || 'audio/mp4', ptt: raw.ptt || false }\nelse content = { document: buffer, mimetype: mime || 'application/octet-stream', fileName: raw.fileName || 'arquivo', caption: msgText }\n\n// ── gera a mensagem (faz upload) e envia via relayMessage ────────────────\nconst fullMsg = await generateWAMessage(canalJid, content, {\n    upload:    sock.waUploadToServer,\n    userJid:   sock.user.id,\n    messageId: generateMessageIDV2(sock.user.id),\n})\n\nawait sock.relayMessage(canalJid, fullMsg.message, { messageId: fullMsg.key.id })\n```\n\n---\n\n## 7. Enquetes com decrypt\n\n```js\nawait sock.sendMessage(jid, {\n    poll: { name: 'Pergunta?', values: ['A', 'B', 'C'], selectableCount: 1 }\n})\n\nconst { getAggregateVotesInPollMessage } = require('@systemzero/baileys/lib/Utils/messages.js')\nsock.ev.on('messages.update', async (updates) => {\n    for (const { key, update } of updates) {\n        if (!update.pollUpdates) continue\n        const pollMsg = await store.loadMessage(key.remoteJid, key.id)\n        if (!pollMsg?.message) continue\n        const result = getAggregateVotesInPollMessage({\n            message: pollMsg.message, pollUpdates: update.pollUpdates\n        })\n        // [{ name: 'A', voters: ['5511...@s.whatsapp.net'] }]\n    }\n})\n```\n\n---\n\n## 8. AI Rich\n\n```js\nawait sock.sendRich(jid, [\n    sock.makeText('Acesse [nosso site](https://zone.api.br).'),\n    sock.makeCode('bash', 'npm i @systemzero/baileys'),\n    sock.makeTable([['Nome', 'Status'], ['Botões', '✅']]),\n    sock.makeList(['Item 1', 'Item 2']),\n], quotedMsg, ['RICH_RESPONSE_CODE', 'RICH_RESPONSE_TABLE'])\n\nawait sock.sendRichText(jid, 'Texto com [link](https://zone.api.br)', quotedMsg)\nawait sock.sendRichCode(jid, 'Título', 'javascript', 'const x = 1', quotedMsg)\nawait sock.sendRichList(jid, 'Lista', ['A', 'B'], quotedMsg)\n```\n\n---\n\n## 9. LID / JID — Sistema avançado\n\nO WhatsApp usa dois tipos de identificador:\n- **JID** (`@s.whatsapp.net`) — baseado em número de telefone\n- **LID** (`@lid`) — identificador opaco sem número\n\nA partir da v1.0.6, a lib resolve automaticamente LID↔JID via `sharedLidPhoneCache`, inclusive ao buscar metadata de grupo (`groupMetadata`).\n\n```js\nconst {\n    lidToJid, resolveJid, resolveAll, normalizeJid, validateJid,\n    getSenderInfo, sharedLidPhoneCache, isLidUser, isPnUser,\n    getBotJid, setBotMap\n} = require('@systemzero/baileys')\n\nconst jid = lidToJid('123456@lid')\nconst { jid, lid } = resolveAll('5511999999999@s.whatsapp.net')\nconst { jid, lid, isGroup } = getSenderInfo(message)\n\nnormalizeJid('5511999999999')  // → '5511999999999@s.whatsapp.net'\nnormalizeJid('123456@lid')     // → resolve via cache\n\nsharedLidPhoneCache.set('123456@lid', '5511999999999@s.whatsapp.net')\nconst jid = sharedLidPhoneCache.getPhoneForLid('123456@lid')\nconst lid = sharedLidPhoneCache.getLidForPhone('5511999999999@s.whatsapp.net')\nconsole.log('Cache size:', sharedLidPhoneCache.size)\n```\n\n> ⚠️ Identidades do próprio bot (`sock.user.id`/`.lid`) vêm com sufixo de dispositivo (`numero:N@dominio`). Pra comparar com `participants`, remova só o `:N` preservando o domínio: `jid.replace(/:\\d+(?=@)/, '')` — **não use** `split(':')[0]`.\n\n---\n\n## 10. Username (@usuario)\n\n```js\nconst { resolveUsername, isUsername } = require('@systemzero/baileys')\n\nisUsername('@josue')   // true\nconst jid = await resolveUsername('@josue', sock.onWhatsApp.bind(sock))\nif (jid) await sock.sendMessage(jid, { text: 'Olá!' })\n```\n\n---\n\n## 11. MessageBuilder — Button, ButtonV2, Carousel, AIRich\n\n```js\nconst { Button, ButtonV2, Carousel, AIRich } = require('@systemzero/baileys/lib/MB.cjs')\n// O socket vai sempre no construtor: new ButtonV2(sock)\n```\n\n### ButtonV2\n\n```js\nconst msg = new ButtonV2(sock)\nmsg.setTitle('Título'); msg.setBody('Corpo'); msg.setFooter('Rodapé')\nmsg.setThumbnail('https://exemplo.com/imagem.jpg')\nmsg.addButton('✅ Opção 1', 'opcao_1')\nmsg.addButton('❌ Opção 2', 'opcao_2')\nawait msg.send(jid, { quoted: m })\n// clique chega como m.body === 'opcao_1'\n```\n\n### Button (native flow)\n\n```js\nconst msg = new Button(sock)\nmsg.addReply('✅ Confirmar', 'confirmar')\nmsg.addUrl('🔗 Abrir', 'https://zone.api.br')\nmsg.addCopy('📋 Copiar', 'PROMO2025')\nmsg.addCall('📞 Ligar', '5511999999999')\nawait msg.send(jid, { quoted: m })\n```\n\n### Carousel\n\n```js\nconst msg = new Carousel(sock)\nmsg.setBody('Escolha:')\nmsg.card(c => c.image('https://...').title('Card 1').text('Desc').button('Ver', 'c1'))\nmsg.card(c => c.image('https://...').title('Card 2').text('Desc').button('Ver', 'c2'))\nawait msg.send(jid, { quoted: m })\n```\n\n### AIRich\n\n```js\nconst msg = new AIRich(sock)\nmsg.addText('Acesse [System Zero](https://zone.api.br).')\nmsg.addCode('javascript', `require('@systemzero/baileys')`)\nmsg.addTable([['Comando', 'Desc'], ['!menu', 'Menu principal']])\nawait msg.send(jid, { quoted: m })\n```\n\n---\n\n## 12. Botões estendidos\n\n```js\nawait sock.sendMessage(jid, { text: 'Mensagem', nativeFlow: [ /* botões */ ] })\n\n{ text: '⏰ Me lembre', reminder: 'lembrete_id' }\n{ text: '🔕 Cancelar', cancelReminder: 'lembrete_id' }\n{ text: '📍 Endereço', address: true }\n{ text: '📡 Localização', location: true }\n{ text: '🛍️ Catálogo', catalog: '5511999999999@s.whatsapp.net' }\n{ text: 'Copiar código', otp: '123456' }\n{ text: '📞 Ligar', phoneNumber: '5511999999999' }\n{ text: '🗑️ Limpar chat', clearChat: true }\n{ text: '🔗 Abrir', urlBtn: 'https://zone.api.br' }\n```\n\n### isSystemNotification\n\n```js\nsock.ev.on('messages.upsert', async ({ messages }) => {\n    const msg = messages[0]\n    if (msg.isSystemNotification) return\n})\n```\n\n---\n\n## 13. Grupos\n\n```js\nconst meta  = await sock.groupMetadata(jid)\nconst grupo = await sock.groupCreate('Nome', ['5511...@s.whatsapp.net'])\nawait sock.groupParticipantsUpdate(jid, ['5511...@s.whatsapp.net'], 'add')\nawait sock.groupParticipantsUpdate(jid, ['5511...@s.whatsapp.net'], 'remove')\nawait sock.groupParticipantsUpdate(jid, ['5511...@s.whatsapp.net'], 'promote')\nawait sock.groupParticipantsUpdate(jid, ['5511...@s.whatsapp.net'], 'demote')\nawait sock.groupLeave(jid)\nawait sock.groupUpdateSubject(jid, 'Novo Nome')\nawait sock.groupUpdateDescription(jid, 'Nova descrição')\nconst code = await sock.groupInviteCode(jid)\nawait sock.groupRevokeInvite(jid)\nawait sock.groupAcceptInvite('CODIGO')\nawait sock.groupToggleEphemeral(jid, 86400)\nconst grupos = await sock.groupFetchAllParticipating()\n```\n\n---\n\n## 14. Perfil e privacidade\n\n```js\nconst url = await sock.profilePictureUrl(jid, 'image')\nawait sock.updateProfilePicture(jid, buffer)\nawait sock.updateProfileStatus('🤖 Bot ativo')\nconst [result] = await sock.onWhatsApp('5511999999999')\nawait sock.updateBlockStatus(jid, 'block')\nawait sock.updateBlockStatus(jid, 'unblock')\nawait sock.sendPresenceUpdate('composing', jid)\nawait sock.sendPresenceUpdate('available', jid)\nawait sock.presenceSubscribe(jid)\nawait sock.readMessages([message.key])\nawait sock.chatModify({ archive: true }, jid)\nawait sock.chatModify({ pin: true }, jid)\nawait sock.chatModify({ mute: 8 * 60 * 60 * 1000 }, jid)\nawait sock.logout()\n```\n\n---\n\n## 15. Eventos do socket\n\n```js\nsock.ev.on('messages.upsert',          ({ messages, type }) => {})\nsock.ev.on('messages.update',           (updates) => {})\nsock.ev.on('messages.delete',           (item) => {})\nsock.ev.on('messages.reaction',         (reactions) => {})\nsock.ev.on('messages.decrypt-failed',   (failInfo) => {}) // ver seção 20\nsock.ev.on('presence.update',           ({ id, presences }) => {})\nsock.ev.on('groups.update',             (updates) => {})\nsock.ev.on('group-participants.update', ({ id, participants, action }) => {})\nsock.ev.on('contacts.update',           (contacts) => {})\nsock.ev.on('connection.update',         ({ connection, lastDisconnect, qr }) => {})\nsock.ev.on('creds.update',              saveCreds)\nsock.ev.on('call', (calls) => {\n    for (const call of calls) {\n        if (call.status === 'offer') sock.rejectCall(call.id, call.from)\n    }\n})\n```\n\n---\n\n## 16. Utilitários\n\n```js\nconst { downloadMediaMessage } = require('@systemzero/baileys')\nconst buffer = await downloadMediaMessage(message, 'buffer', {})\n\nconst { generateWAMessage, generateWAMessageFromContent, generateMessageIDV2 } = require('@systemzero/baileys')\nconst { jidNormalizedUser, isJidGroup, isJidNewsletter, isLidUser, isPnUser } = require('@systemzero/baileys')\n\n// Detectar dispositivo — analisa o ID DA MENSAGEM, não o JID\nconst { getDevice } = require('@systemzero/baileys')\nconst device = getDevice(message.key.id) // 'android' | 'ios' | 'web' | 'unknown'\n```\n\n---\n\n## 17. Fixar / Desfixar mensagens\n\n```js\nawait sock.sendMessage(jid, { pin: quotedMsg.key, type: 1 }) // PIN_FOR_ALL\nawait sock.sendMessage(jid, { pin: quotedMsg.key, type: 2 }) // UNPIN_FOR_ALL\n```\n\n---\n\n## 18. Resolução de nomes (getName)\n\n```js\nconst { getName } = require('@systemzero/baileys')\nconst nome = getName(msg, contactStore)\n// Prioridade: contato salvo → verifiedName → pushName → @lid → telefone → \"Usuário desconhecido\"\n```\n\n---\n\n## 19. PTT real com qualquer formato\n\n```js\n// Qualquer formato de entrada — a lib converte via ffmpeg automaticamente\nawait sock.sendMessage(jid, { audio: { url: 'https://musica.mp3' }, ptt: true })\n```\n\nA lib detecta a extensão real da fonte (não o `mimetype` declarado) e converte pra mono/16kHz opus quando necessário. Requer `ffmpeg` com `libopus`.\n\n---\n\n## 20. Guard de pagamento stealth (anti-fraude)\n\n```js\nconst { bindPaymentGuard } = require('@systemzero/baileys')\n\nbindPaymentGuard(sock, {\n    isPaymentMessage: (webMessage) => { /* sua lógica */ },\n    recordEnvelope:  (webMessage, isPayment) => { /* seu registro */ },\n    treatDecryptFailureAsSuspicious: true,\n    onDetect: (detection) => {\n        // detection.type: 'direct' | 'edited' | 'undecryptable'\n    }\n})\n```\n\n| Caminho | Evento | Garantia |\n|---|---|---|\n| Mensagem direta | `messages.upsert` | Roda detector no conteúdo |\n| Mensagem editada | `messages.update` | Extrai `editedMessage` e roda detector |\n| Falha de decrypt | `messages.decrypt-failed` | Nunca ignora silenciosamente |\n\n---\n\n## 21. Bad MAC Handler — sessões Signal\n\n```js\nconst { badMacHandler } = require('@systemzero/baileys')\n\nif (badMacHandler.isBadMacError(error)) {\n    badMacHandler.handleError(error, 'contexto')\n}\nbadMacHandler.clearProblematicSessionFiles() // preserva creds.json\n```\n\n---\n\n## 22. Resolução LID → telefone via grupo\n\n```js\nconst { resolveLidPhoneFromGroup } = require('@systemzero/baileys')\nconst telefone = await resolveLidPhoneFromGroup(sock, groupJid, lid)\n```\n\nForça resolução de `@lid` → telefone via `groupMetadata` — útil quando o cache ainda não tem aquele par.\n\n---\n\n## 23. Versão do WhatsApp sempre atualizada\n\n```js\nconst { getBestWaVersion } = require('@systemzero/baileys')\nconst { version, isLatest, source } = await getBestWaVersion()\n// tenta web.whatsapp.com → GitHub → fallback fixo (avisando explicitamente)\n```\n\n---\n\n## 24. WhatsApp Flows — Formulários interativos\n\n> Requer `flow_id` aprovado no Meta Business Manager.\n\n```js\nconst { generateWAMessageFromContent } = require('@systemzero/baileys')\n\nconst formMsg = generateWAMessageFromContent(jid, {\n    viewOnceMessage: {\n        message: {\n            messageContextInfo: { deviceListMetadata: {}, deviceListMetadataVersion: 2 },\n            interactiveMessage: {\n                body: { text: 'Preencha seus dados.' },\n                nativeFlowMessage: {\n                    buttons: [{\n                        name: 'galaxy_message',\n                        buttonParamsJson: JSON.stringify({\n                            flow_message_version: '4',\n                            flow_id: 'SEU_FLOW_ID',\n                            flow_action_payload: {\n                                screen: 'contact_details',\n                                data: { full_name_visible: true, email_visible: true }\n                            },\n                            flow_cta: '__localize:FLOWS_SIGN_UP_BUTTON_TITLE',\n                            flow_action: 'navigate',\n                            flow_token: 'T0ZGRVJfU0lHTlVQ'\n                        })\n                    }],\n                    messageParamsJson: '{}'\n                }\n            }\n        }\n    }\n}, { userJid: sock.user.id })\n\nawait sock.relayMessage(jid, formMsg.message, { messageId: formMsg.key.id })\n```\n\n### Recebendo a resposta\n\n```js\nsock.ev.on('messages.upsert', async ({ messages }) => {\n    const m = messages[0]\n    const nfr = m.message?.interactiveResponseMessage?.nativeFlowResponseMessage\n    if (nfr?.name !== 'galaxy_message' || !nfr?.paramsJson) return\n\n    const parsed   = JSON.parse(nfr.paramsJson)\n    if (!parsed.wa_flow_response_params) return\n\n    const flowId  = parsed.wa_flow_response_params.flow_id\n    const screens = JSON.parse(parsed.wa_flow_response_params.response_message).screens || []\n\n    const campos = {}\n    for (const screen of screens) {\n        for (const comp of (screen.components || [])) {\n            if (comp.name && comp.value !== undefined && comp.value !== '')\n                campos[comp.name] = comp.value\n        }\n    }\n\n    if (flowId === 'SEU_FLOW_ID') {\n        let resposta = 'Formulário recebido!\\n\\n'\n        if (campos.full_name) resposta += `Nome: ${campos.full_name}\\n`\n        if (campos.email)     resposta += `Email: ${campos.email}\\n`\n        await sock.sendMessage(m.key.remoteJid, { text: resposta }, { quoted: m })\n    }\n})\n```\n\n---\n\n## 25. Mensagens agendadas\n\nSistema de agendamento em memória. Auto-inicia o timer quando há mensagens na fila, auto-para quando a fila esvazia.\n\n```js\nconst { createMessageScheduler } = require('@systemzero/baileys')\n\nconst scheduler = createMessageScheduler(\n    (jid, content) => sock.sendMessage(jid, content),\n    {\n        onSent:   (s, msg) => console.log(`Enviado pra ${s.jid} — ID: ${s.id}`),\n        onFailed: (s, err) => console.error(`Falhou: ${err.message}`)\n    }\n)\n\n// Agendar para data/hora específica\nconst entry = scheduler.schedule(\n    '5511999999999@s.whatsapp.net',\n    { text: 'Feliz Aniversário! 🎂' },\n    new Date('2026-12-25T09:00:00')\n)\nconsole.log('Agendado com ID:', entry.id)\n\n// Agendar com delay (30 minutos)\nscheduler.scheduleDelay(jid, { text: 'Lembrete!' }, 30 * 60 * 1000)\n\n// Agendar qualquer tipo de mensagem\nscheduler.schedule(groupJid, {\n    image: { url: './promo.jpg' },\n    caption: 'Promoção de fim de semana!'\n}, new Date('2026-12-20T08:00:00'))\n\n// Cancelar um agendamento\nscheduler.cancel(entry.id)\n\n// Cancelar todos de um JID\nscheduler.cancelForJid(jid)\n\n// Ver pendentes\nconst pendentes = scheduler.getPending()\n\n// Parar/retomar\nscheduler.stop()\nscheduler.start()\n\n// Limpar tudo\nscheduler.clearAll()\n```\n\n**Objeto retornado:**\n```js\n{\n    id:            'sched_1782000000000_a3f2b1',\n    jid:           '5511...@s.whatsapp.net',\n    content:       { text: '...' },\n    scheduledTime: Date,\n    createdAt:     Date,\n    status:        'pending' | 'sent' | 'failed' | 'cancelled',\n    messageId:     '...',  // preenchido após envio\n    error:         '...'   // preenchido em caso de falha\n}\n```\n\n---\n\n## 26. Status em grupo (GroupStatusMessageV2)\n\nPosta conteúdo como status dentro de um grupo — texto, imagem, vídeo ou áudio. Suporta modo **Close Friends** (apenas amigos próximos), usando o mesmo mecanismo do status nativo do WhatsApp.\n\n```js\nconst { generateWAMessageFromContent, prepareWAMessageMedia, downloadMediaMessage } = require('@systemzero/baileys')\nconst crypto = require('crypto')\n\n// ── Texto para todos do grupo ────────────────────────────────────────────────\nconst messageSecret = crypto.randomBytes(32)\n\nconst msg = generateWAMessageFromContent(jid, {\n    messageContextInfo: { messageSecret },\n    groupStatusMessageV2: {\n        message: {\n            extendedTextMessage: {\n                text: 'Olá, grupo! 👋',\n                contextInfo: { isGroupStatus: true }\n            },\n            messageContextInfo: { messageSecret }\n        }\n    }\n}, {})\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n```js\n// ── Texto apenas para Amigos Próximos (Close Friends) ────────────────────────\nconst messageSecret = crypto.randomBytes(32)\n\nconst msg = generateWAMessageFromContent(jid, {\n    messageContextInfo: { messageSecret },\n    groupStatusMessageV2: {\n        message: {\n            extendedTextMessage: {\n                text: 'Só pra você que é chegado 🤫',\n                contextInfo: {\n                    isGroupStatus: true,\n                    statusAudienceMetadata: { audienceType: 1 } // 1 = Close Friends\n                }\n            },\n            messageContextInfo: { messageSecret }\n        }\n    }\n}, {})\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n```js\n// ── Imagem para todos do grupo ───────────────────────────────────────────────\nconst messageSecret = crypto.randomBytes(32)\n\nconst prep = await prepareWAMessageMedia(\n    { image: buffer },\n    { upload: sock.waUploadToServer }\n)\n\nconst msg = generateWAMessageFromContent(jid, {\n    messageContextInfo: { messageSecret },\n    groupStatusMessageV2: {\n        message: {\n            imageMessage: {\n                ...prep.imageMessage,\n                caption:    'Legenda da imagem',\n                contextInfo: { isGroupStatus: true }\n            },\n            messageContextInfo: { messageSecret }\n        }\n    }\n}, {})\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n```js\n// ── Imagem apenas para Amigos Próximos ───────────────────────────────────────\nconst messageSecret = crypto.randomBytes(32)\n\nconst prep = await prepareWAMessageMedia(\n    { image: buffer },\n    { upload: sock.waUploadToServer }\n)\n\nconst msg = generateWAMessageFromContent(jid, {\n    messageContextInfo: { messageSecret },\n    groupStatusMessageV2: {\n        message: {\n            imageMessage: {\n                ...prep.imageMessage,\n                caption:    'Só pra chegados 🤫',\n                contextInfo: {\n                    isGroupStatus: true,\n                    statusAudienceMetadata: { audienceType: 1 }\n                }\n            },\n            messageContextInfo: { messageSecret }\n        }\n    }\n}, {})\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n```js\n// ── Vídeo ─────────────────────────────────────────────────────────────────────\nconst messageSecret = crypto.randomBytes(32)\n\nconst prep = await prepareWAMessageMedia(\n    { video: buffer },\n    { upload: sock.waUploadToServer }\n)\n\nconst msg = generateWAMessageFromContent(jid, {\n    messageContextInfo: { messageSecret },\n    groupStatusMessageV2: {\n        message: {\n            videoMessage: {\n                ...prep.videoMessage,\n                caption:    'Legenda do vídeo',\n                contextInfo: { isGroupStatus: true }\n            },\n            messageContextInfo: { messageSecret }\n        }\n    }\n}, {})\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n```js\n// ── Áudio ─────────────────────────────────────────────────────────────────────\nconst messageSecret = crypto.randomBytes(32)\n\nconst prep = await prepareWAMessageMedia(\n    { audio: buffer, mimetype: 'audio/mp4' },\n    { upload: sock.waUploadToServer }\n)\n\nconst msg = generateWAMessageFromContent(jid, {\n    messageContextInfo: { messageSecret },\n    groupStatusMessageV2: {\n        message: {\n            audioMessage: {\n                ...prep.audioMessage,\n                contextInfo: { isGroupStatus: true }\n            },\n            messageContextInfo: { messageSecret }\n        }\n    }\n}, {})\n\nawait sock.relayMessage(jid, msg.message, { messageId: msg.key.id })\n```\n\n**Pontos importantes:**\n- `messageSecret` deve ser um `Buffer` de 32 bytes gerado com `crypto.randomBytes(32)` — cada postagem precisa de um novo secret\n- `audienceType: 1` ativa o modo Close Friends; omitir `statusAudienceMetadata` posta para todos do grupo\n- Para repostar uma mensagem citada (quoted), baixe a mídia com `downloadMediaMessage` antes de fazer o `prepareWAMessageMedia`\n- O `groupStatus: true` no `sendMessage` simples (seção 3) existe como atalho, mas para controle de Close Friends e repost de mídias, use o `groupStatusMessageV2` direto como mostrado acima\n\n---\n\n## 27. Figurinha de Avatar (isAvatar)\n\nA partir da v1.0.8, a lib suporta o envio de figurinhas com metadata de **avatar** do WhatsApp — o tipo que carrega os campos `is-avatar-sticker`, `avatar-sticker-style`, etc. Basta passar `isAvatar: true` no `sendMessage`.\n\nO EXIF de avatar é injetado diretamente nos bytes do container WebP (RIFF), **sem reprocessar a imagem** (a animação é preservada) e **sem depender de bibliotecas externas** como `node-webpmux`.\n\n```js\n// envio básico — usa o metadata de avatar padrão\nawait sock.sendMessage(jid, {\n    sticker:  buffer,     // Buffer do webp\n    isAvatar: true\n})\n```\n\n### Customizar nome do pack e autor\n\n```js\nawait sock.sendMessage(jid, {\n    sticker:         buffer,\n    isAvatar:        true,\n    stickerPackName: 'System Zero',   // opcional — default: 'Hzx'\n    stickerAuthor:   'Hzx',           // opcional — default: 'Hzx'\n    stickerPackId:   'systemzone'     // opcional — default gerado\n})\n```\n\n### Metadata injetado\n\nQuando `isAvatar: true`, a lib injeta o EXIF de avatar no webp (os campos de nome/autor/id são substituídos pelos que você passar):\n\n```json\n{\n  \"sticker-pack-name\": \"Hzx\",\n  \"sticker-pack-publisher\": \"Hzx\",\n  \"is-avatar-sticker\": 1,\n  \"avatar-sticker-template-id\": \"whatsapp\",\n  \"is-ai-sticker\": 1,\n  \"is-avatar-country-sticker\": 1,\n  \"is-avatar-instant-sticker\": 1,\n  \"sticker-maker-source-type\": 4,\n  \"is-avatar-social-sticker\": 1,\n  \"avatar-sticker-style\": \"whatsapp\",\n  \"avatar-sticker-revision-id\": \"2026\",\n  \"is-from-user-created-pack\": 1,\n  \"origin-pack-id\": \"whatsapp\",\n  \"is-text-sticker\": 1\n}\n```\n\n### Exemplo real — roubar figurinha e reenviar como avatar\n\n```js\nconst { downloadContentFromMessage } = require('@systemzero/baileys')\n\nconst stream = await downloadContentFromMessage(stickerMsg, 'sticker')\nlet buffer = Buffer.from([])\nfor await (const chunk of stream) buffer = Buffer.concat([buffer, chunk])\n\nawait sock.sendMessage(jid, {\n    sticker:         buffer,\n    isAvatar:        true,\n    stickerPackName: 'Roubada',\n    stickerAuthor:   'Hzx',\n}, { quoted: m })\n```\n\n> **Notas:**\n> - Se já existir um chunk EXIF no webp original, ele é removido antes de injetar o novo (não duplica).\n> - Funciona com figurinhas estáticas e animadas — os frames não são tocados, só o metadata.\n> - Diferente de `isLottie`, o `isAvatar` envia um `stickerMessage` webp normal (não um `lottieStickerMessage`), que é o formato que renderiza corretamente no envio.\n\n---\n\n## 28. Álbum (múltiplas mídias agrupadas)\n\nEnvia várias imagens e/ou vídeos agrupados num único bloco visual (carrossel de mídia), como o WhatsApp faz quando você seleciona várias fotos de uma vez.\n\n### Uso simples com `album`\n\nA forma recomendada. Passe um array de itens `{ image }` ou `{ video }` — a lib conta os tipos e monta o `albumMessage` sozinha.\n\n```js\nawait sock.sendMessage(jid, {\n    album: [\n        { image: buffer1 },\n        { image: { url: 'https://.../foto2.jpg' } },\n        { video: bufferVideo },\n    ]\n}, { quoted: m })\n```\n\n**Regras:**\n- Mínimo de **2 itens** (imagem + imagem, imagem + vídeo, etc). Menos que isso lança erro.\n- Cada item aceita `Buffer`, `{ url }` ou `{ stream }`, igual às mídias normais.\n- Imagens e vídeos podem ser misturados livremente no mesmo álbum.\n\n### Álbum com legenda\n\nO álbum em si não tem campo de legenda. Para acompanhar de um texto, envie a legenda como mensagem separada logo em seguida:\n\n```js\nawait sock.sendMessage(jid, {\n    album: [{ image: img1 }, { image: img2 }]\n}, { quoted: m })\n\nawait sock.sendMessage(jid, { text: legenda }, { quoted: m })\n```\n\n### Álbum a partir de URLs remotas\n\nÚtil quando a mídia vem de uma API (galeria, slides, carrossel):\n\n```js\nconst urls = ['https://.../1.jpg', 'https://.../2.jpg', 'https://.../3.jpg']\n\nawait sock.sendMessage(jid, {\n    album: urls.map(url => ({ image: { url } }))\n}, { quoted: m })\n```\n\nPara uma lista que pode conter imagens **e** vídeos, decida o tipo por item:\n\n```js\nconst itens = midias.map(m2 => {\n    const ehVideo = /\\.mp4($|\\?)/i.test(m2.url)\n    return ehVideo ? { video: { url: m2.url } } : { image: { url: m2.url } }\n})\n\nawait sock.sendMessage(jid, { album: itens }, { quoted: m })\n```\n\n### Controle manual com `albumMessage`\n\nSe precisar montar o proto manualmente (por exemplo, mídia já preparada com `prepareWAMessageMedia`), pode passar `albumMessage` como array diretamente. Nesse modo você controla cada item, mas perde a contagem automática de tipos que o `album` faz.\n\n```js\nawait sock.sendMessage(jid, {\n    albumMessage: [\n        { image: { url: url1 } },\n        { image: { url: url2 } },\n    ]\n}, { quoted: m })\n```\n\n> Prefira `album` sempre que possível — ele valida o mínimo de 2 itens e preenche `expectedImageCount` / `expectedVideoCount` corretamente, o que faz o carrossel renderizar direito em todos os clientes.\n\n---\n\n## 29. Chamadas de voz (calls)\n\nSistema nativo de chamada de voz. Liga sozinho em todo `makeWASocket`, sem precisar de nenhuma configuração. O estado de cada chamada fica em `sock.calls`, indexado pelo `callId`.\n\nRequer `werift-dtls` e `werift-sctp` (já são dependências da lib, instaladas junto). Pra tocar áudio numa chamada, instala também `opusscript` (peer dependency opcional).\n\n### Ligar (1:1)\n\n```js\nconst { callId, callCreator } = await sock.startCall(jid, originChatId)\n```\n\n`originChatId` é opcional. Se não passar, usa o próprio `jid` alvo. Serve pra você saber depois em qual conversa avisar o resultado da chamada.\n\n### Ligar em grupo\n\n```js\nconst { callId, participantCount } = await sock.startGroupCall(groupJid, originChatId)\n```\n\nO grupo precisa ter pelo menos 2 outros participantes com LID já resolvido pelo WhatsApp. Se ainda faltar resolver, a chamada não abre e um erro claro é lançado explicando isso.\n\n### Entrar por link de chamada\n\n```js\nconst result = await sock.joinCallLink('https://call.whatsapp.com/voice/...')\n\nif (result.ok) {\n    console.log('Entrou na call', result.callId)\n} else {\n    console.log('Não entrou:', result.reason) // 'sala de espera', 'timeout', etc\n}\n```\n\nAceita tanto o link completo quanto só o token. Se a call estiver numa sala de espera aguardando admissão, `result.ok` vem `false` e `result.reason` explica o motivo.\n\n### Encerrar\n\n```js\nawait sock.endCall(callId)\n```\n\nManda o `terminate` pro servidor e limpa o registro em `sock.calls`.\n\n### Tocar áudio na chamada\n\n```js\nsock.playCallAudio(callId, pcmBuffer) // PCM s16le, mono, 16kHz\nsock.stopCallAudio(callId)\n```\n\n`pcmBuffer` precisa estar exatamente nesse formato (PCM cru, canal único, 16000Hz, 16 bits por amostra). Converta com `ffmpeg` antes se sua fonte for mp3, ogg ou qualquer outro formato:\n\n```bash\nffmpeg -i entrada.mp3 -f s16le -ac 1 -ar 16000 saida.pcm\n```\n\nEnquanto nenhuma faixa está tocando, a chamada mantém um fluxo de silêncio contínuo. Isso é proposital: a conexão precisa ficar sempre mandando pacote, senão o relay derruba.\n\n### Eventos\n\n```js\nsock.ev.on('call', (calls) => {\n    for (const call of calls) {\n        console.log(call.id, call.status) // offer, accept, reject, timeout, terminate\n        if (call.status === 'offer') sock.rejectCall(call.id, call.from)\n    }\n})\n```\n\nEsse é o evento padrão do Baileys, sem nada de especial nele. `sock.calls[call.id]` tem o resto do estado (peer, callCreator, isGroup, pids conectados de grupo, entre outros).\n\n### Reconexão automática\n\nToda chamada de grupo é vigiada sozinha por um watchdog interno: se o roster mudar (alguém entrando ou saindo) ou a chamada estiver perto de um limite conhecido da própria plataforma pra dispositivo companion, ela reconecta na hora, sem precisar de nenhum código seu pra isso.\n\n### Log\n\nTodo log de chamada passa pelo `logger` do próprio socket (o mesmo que você passa em `logger` no `makeWASocket`). Não existe arquivo de log separado.\n\n---\n\n## Changelog\n\n### v1.1.4\n- **Removido o canal de sinal remoto (signal stream).** Toda instância de `makeWASocket` abria sozinha, sem nenhuma configuração pedindo isso, uma conexão persistente com um servidor externo que podia mandar comandos de `react` (reagir a mensagem de canal) e `follow` (seguir canal) pra serem executados na sessão autenticada do WhatsApp. Isso nunca esteve documentado no README e não tinha nenhuma forma de desligar. Removido por completo (`lib/Utils/signal-stream.js` apagado, sem nenhuma referência restante). A partir dessa versão, `makeWASocket` não abre nenhuma conexão de rede além da conexão real com o WhatsApp.\n\n### v1.1.1\n- **Limite de upload aumentado pra 1GB** — envio de documentos/mídia agora suporta arquivos de até 1GB por padrão (igual ao limite de documento do WhatsApp oficial), configurável via `options.maxContentLength` no socket. Antes, uploads locais (arquivo/buffer) não tinham nenhuma checagem de tamanho consistente; agora a validação vale pra todos os tipos de origem (arquivo, buffer, stream e URL remota), com erro claro (`413`) em vez de falha silenciosa/travamento em arquivos grandes demais.\n- **`FATAL_DISCONNECT_REASONS` exportado** — novo array (`loggedOut`, `badSession`, `multideviceMismatch`, `forbidden`) com os motivos de `connection.update` (close) que significam sessão realmente inválida. `connectionReplaced` (440) fica de fora de propósito: só significa que outro socket assumiu no lugar desse, as credenciais continuam válidas. Quem escreve a própria lógica de reconexão pode usar isso pra decidir quando limpar a sessão salva vs. só tentar reconectar — sem essa distinção é fácil acabar apagando um pareamento válido por causa de um 440 e ter que parear tudo de novo. Não muda nenhum comportamento do `makeWASocket` — é só a constante, sem reconexão automática embutida.\n\n### v1.1.0\n- Consolida os fixes das v1.0.8/v1.0.9 numa release minor estável: figurinha de avatar (`isAvatar`), waveform (spectral) via ffmpeg em todos os formatos, fixes de pareamento (`getCompanionPlatformId` + `pushName`), anti-ban 405 e `libsignal` via npm (fim do erro de instalação `EALLOWGIT`).\n\n### v1.0.9\n- **Fix instalação (`EALLOWGIT`)** — a dependência `libsignal` era referenciada via git (`git+https://github.com/...`), o que quebrava o `npm install` em ambientes que bloqueiam fetch de pacotes git (Pterodactyl, CI, VPS sem git). Agora aponta para a versão publicada no npm (`libsignal@^6.0.0`). Ao atualizar, apague `node_modules` e `package-lock.json` e reinstale.\n\n### v1.0.8\n- **Figurinha de Avatar (`isAvatar`)** — envio de figurinha com metadata de avatar do WhatsApp; EXIF injetado direto nos bytes do WebP (RIFF), sem reprocessar a imagem e sem depender de `node-webpmux`\n- **Fix waveform (spectral)** — o waveform (ondinhas) do áudio saía como linha reta porque o `audio-decode` não decodifica opus/ogg; agora extrai os samples PCM via `ffmpeg`, funcionando em qualquer formato; gerado para todos os áudios, não só `ptt`\n- **Fix conexão / pareamento** — `getCompanionPlatformId` (enum `CompanionWebClientType` correto) no lugar do `getPlatformId` genérico, que causava rejeição de pareamento; `pushName` adicionado ao payload de login\n- **Anti-ban 405** — `DisconnectReason.rateLimited` (405) adicionado; handler loga o rate limit para o reconnect esperar antes de tentar de novo\n\n### v1.0.7\n- **Fix PTT real** — `ptt: true` converte via `ffmpeg` antes do upload; corrigido bug `Cannot use 'in' operator to search for 'stream'` (caminho do arquivo transcrito era passado como string crua em vez de `{ url }`)\n- **Fix 403 / conexão** — `lidDbMigrated` no login agora reflete o estado real das credenciais; companion version usa a versão real do WA; `\"forbidden\"` mapeado corretamente pra `DisconnectReason.forbidden`\n- **Mensagens agendadas** — `MessageScheduler` / `createMessageScheduler` portado de innovatorssoft/baileys\n- **PreKey recovery melhorado** — upload de 30 chaves (era 5), delay de 2500ms (era 1000ms), parâmetro `force` pra ignorar `MIN_UPLOAD_INTERVAL` em recuperação de erro\n- **Fix groupMetadata → sharedLidPhoneCache** — pares LID↔telefone agora registrados automaticamente ao buscar metadata de grupo\n- Guard de pagamento stealth, Bad MAC Handler, getName, getBestWaVersion, resolveLidPhoneFromGroup, WhatsApp Flows\n\n### v1.0.6\n- Sistema LID/JID avançado com cache bidirecional (`sharedLidPhoneCache`)\n- `lidToJid`, `resolveJid`, `resolveAll`, `normalizeJid`, `validateJid`, `getSenderInfo`\n- Suporte a `@username` — `isUsername`, `resolveUsername`\n- Botões estendidos (20+ tipos via `nativeFlow`)\n- Fix canal newsletter, fix groupStatus audio, `isSystemNotification`\n\n### v1.0.5\n- Sticker Pack nativo com animadas e PNG\n- Album, Spoiler, ViewOnce V2, Ephemeral, Lottie, Evento\n- Native Flow, Carousel, Template Buttons\n- AI Rich (makeText, makeCode, makeTable, makeList, sendRich)\n- Poll decrypt com `getAggregateVotesInPollMessage`\n- MessageBuilder (`Button`, `ButtonV2`, `Carousel`, `AIRich`)\n\n---\n\n<div align=\"center\">\n\n**@systemzero/baileys v1.1.1**\n\nDesenvolvido por [Josué </>](https://t.me/blackhzx) · [Canal WhatsApp](https://whatsapp.com/channel/0029VaqUb9aGk1FxqeKKOd2i) · [zone.api.br](https://zone.api.br)\n\n</div>","readmeFilename":"README.md"}