{"_id":"@revizahoshii/baileys","_rev":"10-de08e36a98f29d63e315eafe3ff6ea3b","name":"@revizahoshii/baileys","dist-tags":{"latest":"0.6.0"},"versions":{"0.3.18":{"name":"@revizahoshii/baileys","version":"0.3.18","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.3.18","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"21d7d80f043e6b6ce548d99de2c74cb091d8eb3c","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.3.18.tgz","fileCount":430,"integrity":"sha512-s3XGVSJGDEHcvDbCiq+MKGsDxv/eFrSfpk7twfBsuPTSu4OsokMoICc0bKUt+Bwkbk1RuekjcwJ9Xdma2eVvyQ==","signatures":[{"sig":"MEQCIFeX7pNYSK/Q2NevwLhLyeTKiy+pRnzOwzQ1lAj8f1vTAiAVih2TAhRBgphIhhkLFHR3Tr3Th4Zulpkgqhv6XCQShA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10799476},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"81e16b360d52f7fdabb557b8ade2aba88dc4e0fa","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Pustaka WhatsApp Baileys untuk kebutuhan bot dan aplikasi Reviza.","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.3.18_1788683014180_0.3566331543738692","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@revizahoshii/baileys","version":"0.4.0","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.4.0","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"ae62d9f16daf46ca0d63d8b85769e5a1fbe42f0d","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.4.0.tgz","fileCount":444,"integrity":"sha512-h0VdavhlaXzmpumzx6wv7pPW20wO+eqfsZNHw0OxsKO50oMwTW9RPNm6GqIkufdM3CTZhPcnC/i53atYIwwOng==","signatures":[{"sig":"MEUCIQCbcHCQZs9VsXqC9oE6prYwSKCJ5+DogndedbEo+3OSnAIgcHDGa1WWoxu0lkh7QCrIqosPAqodHmTC/jbYGx5suJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDrEDms08BtT7Fo7Km4sIu9FBcV41TNYu+3xf+JhNUrBAIgdPrzwyfri1YHSdIvlr1u8RKS/r/wTmwH5VC8odxFMLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21760638},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f789f7780e23e302b9ae8e92ccf50f8752aaa822","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.4.0_1788780542542_0.7130287251254959","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@revizahoshii/baileys","version":"0.4.1","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.4.1","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"b419b96ccfc37e4ddd79eed25a7f58d4a0b18eb2","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.4.1.tgz","fileCount":444,"integrity":"sha512-1C7b6SCH3D3nTjerkn8iuOvurPeeZo78gUgTXo4dJINoyhN/azOhyvbcge11ds81sf3lJdTBq2YhHrNqaFKVvA==","signatures":[{"sig":"MEUCIQDWDZdubJCpAnZ7XNfAL9OGSE9mrj7adYzp+qag+ZXIjAIgLC9fcmXl9FY3yvlWyCZPOWPJT04o7KlLJfxHwZnc4Lw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCHJTz01lvgpeRLT0MSzaNpu814JFwBHZZ0ZzJy34/HzwIhAKpuBJiXqkfYlls02Pz7sFS0hvBsmdg8wjlE2lF2JATx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21760792},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9c09c01c1a80eef9f6787d790a4d3063f1eb739d","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.4.1_1788781399533_0.0314542342333457","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@revizahoshii/baileys","version":"0.4.2","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.4.2","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"dd60adcea59f050d5145e356a13b8d9202bfb616","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.4.2.tgz","fileCount":444,"integrity":"sha512-7eHwDLo2wtsi/2p8LqUKWCJKznVqbsQRI1PjsxaY0lYf4HfOFk3g0d1UC6f5DB1vLp0HT5H1+l8yHbMnyjj+Zg==","signatures":[{"sig":"MEUCIQDOaXoC1l6TZlIv07Hu1R8NPpZNtNDzqfwSLv4yoHVT6QIgaimK6yeO5AAwT3iaSzAoKI+39ILLrWmBpXA7rGg/y5c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDR7+7vKN3rEK85yYlgdOwUCyT83JYW6M/jGorDfVMpvAIgDTyatawc2BDln/K9vQvPp7lOwvVeBG/F49AyPgwX1R4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21762050},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4709d40b9b08b4d7f9c6996beb236042b2271fd4","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":"^1.6.1","sharp":"*","audio-decode":"^2.2.3","@napi-rs/image":"~1.12.0","better-sqlite3":"^11.0.0","link-preview-js":"^3.0.0"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.4.2_1788935200939_0.033127342712294894","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@revizahoshii/baileys","version":"0.5.0","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.5.0","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"858f4c8ea46d69932a6b5a4bb694afc512873e74","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.5.0.tgz","fileCount":446,"integrity":"sha512-Ugep5LtehzhXHcd3rv9ZpmTEp22iWctAC9k0CRaBFXwS6NUCXNU1JtfGN/Ioh/8y+myxV0DL+B4t+tIC+u+5AA==","signatures":[{"sig":"MEUCIDvT98XnAHj1Kte75m47+jQYE9fDgqZnY5KvaPl1zcTOAiEA8tBa76kiaPeV6jue83meEF+Wn/831fStdRkWGFbVnkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDxCEtWqlxyMg89MwNCGJ91E18YmkkS0FW3/W4a31ZuUAIgK/TxMfFkIol6/7YTPkzHBnEu10TdqbGAP+VEfB12dVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21772367},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2ea0c61d052f4e0c66098a0c2810b76f8954b999","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":">=1.6.0","sharp":"*","audio-decode":"*","@napi-rs/image":"*","better-sqlite3":">=11.0.0","link-preview-js":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.5.0_1789392140418_0.24465317310478785","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@revizahoshii/baileys","version":"0.5.1","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.5.1","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"a4d988116c54615e12353cd22fd32dd224977e39","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.5.1.tgz","fileCount":446,"integrity":"sha512-wLSsCBM3LHC8/IE7LkON87xIL2POU3RegyXw+4IdYXgTpoVJ2ZyTPEVZQ9GGX+RZPv1jzLWkkldhqQyN4/EaTA==","signatures":[{"sig":"MEUCIHXZAC9BwhKOQ/B49ko9XiNKan+NgPPP1Yofa7cHGFraAiEAjoHI4McrLXLNpiRooJIJZuVE0vmYWcTYZsrWASMJKd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG2Q5NUL9NiXM9wPB2RrMP3Dz+0BWG5q1fMyVGPEnJLQAiEA1Q8mVPdXLTHBd8bEAj/PNP68XxowbVnCb1/Kvy2gma8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21774188},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"63c16dabfaf58f6d37342f80a5fa0e8be42b5850","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":">=1.6.0","sharp":"*","audio-decode":"*","@napi-rs/image":"*","better-sqlite3":">=11.0.0","link-preview-js":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.5.1_1789393422085_0.23526014825950514","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@revizahoshii/baileys","version":"0.5.2","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.5.2","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"639dbd7cb310a0d639fcced1b72ef1385e6835e0","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.5.2.tgz","fileCount":446,"integrity":"sha512-XZdf4Js3HkEtGicjpMH6cqVHyhY3md+Y7D6LRyrpoY0MvtbgrVrhntJSDoLOXE5Yk4QBIU88w1NE5zN4JvuqZQ==","signatures":[{"sig":"MEQCIC+wFXcvNZGTcQrItdCZXmruGVJoGq61Mg3E7+mUQ5ssAiBH8kRMtZNgE9tebMJXFZiuHguNEJveGRwOftWX5h37OA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3+4dH2oXqIYuv2+TMQrLw5WdAMnU/ZdHcxiU+wbOK5AIhANulwmBSBPkoIQXy2JH9qmWhu473q2W60lkEgFspPrfQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21779161},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"54ef7301bad1c3a8d648f7b4964fa6b1efcb0b2a","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":">=1.6.0","sharp":"*","audio-decode":"*","@napi-rs/image":"*","better-sqlite3":">=11.0.0","link-preview-js":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.5.2_1789397445388_0.15112809690539897","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@revizahoshii/baileys","version":"0.5.3","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.5.3","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"821ecce6dede4e3baebec58eab2fadc3a12c11d9","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.5.3.tgz","fileCount":446,"integrity":"sha512-uMhqWqXHQIxDIQyRpL7DsBhCB0xlj5ZB4L55XnWILqzUpkgn14xIYHzAX9RdkbNq1vVNJu2KuwkHfHG4qiL0cQ==","signatures":[{"sig":"MEQCIAFbcVuyLRqo//bapPRJ0VyvZ8ZnS/k1bu9yUGVwYRJmAiBwCwD7l08mHzRzGcbrveIJENexayJvxCTHI2+3DOrMzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEFC6PRbVXTNrYPWoCUhS+qv9SAlgtcjvCWbUoPSzkIWAiEAsxqnOVCFaLagfxn0VauEaJwXqRrxQViBhef8VK94coA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21781796},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"dc2b0785c2da6f1a44a4fda6a33b4c01db4786ae","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":">=1.6.0","sharp":"*","audio-decode":"*","@napi-rs/image":"*","better-sqlite3":">=11.0.0","link-preview-js":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.5.3_1789399646861_0.5990833905793431","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@revizahoshii/baileys","version":"0.5.4","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"author":{"name":"Reviza"},"license":"MIT","_id":"@revizahoshii/baileys@0.5.4","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"homepage":"https://github.com/revizahoshii-no/reviza-baileys","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"2c216bf5a2efc300285ec4279f0570d19d861931","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.5.4.tgz","fileCount":446,"integrity":"sha512-K3zkv8UEt3kGOOjjhhvNUFS8GReIQpKEWO87Ufwga4LxLstjmgMAmGtoaXQ5PVH0zwbiRi2okDtf3P2fiKx8RA==","signatures":[{"sig":"MEUCIGLhlBJ05gnWoLWCeTYR9hV6y57RJae8ljqWw2YMfU0QAiEAiE+hHYt8qAoO3ae6OvDjBkbhqUXFfhspCejXzDfpjF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBbZHNKWrxZdU95M8Fgb4Idd+4hduCLdGX8i6g9FicsWAiEA8ALAvm5vcsna7Di0S9bZPC9rmkIWnkq/VwQN8gV1rwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21782437},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d3e2e2f16c9745401cc5256fefa84e4b77278597","scripts":{"preinstall":"node ./engine-requirements.js"},"_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":">=1.6.0","sharp":"*","audio-decode":"*","@napi-rs/image":"*","better-sqlite3":">=11.0.0","link-preview-js":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/baileys_0.5.4_1789403379824_0.3999068411293314","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"_id":"@revizahoshii/baileys@0.6.0","bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"dist":{"shasum":"2fdb0f2fc3975d1d4e513588a880101ab14370e8","tarball":"https://registry.npmjs.org/@revizahoshii/baileys/-/baileys-0.6.0.tgz","fileCount":448,"integrity":"sha512-+C3D5/dJLL2Gjof6Q4rjjRrl+Q4vMYH4uz+BDhj6r33sh62/6UpS2QxCURdAlafUNXe2wYz3H/myHUigu1UGCA==","signatures":[{"sig":"MEYCIQCrTbFsCWjoXMKfk7RmGJUu7ZUwh3h9VTNWuJkctFY0KQIhALaHRYaX3MBcD/bDHzq4fQEkwnViK7cd6Y0sLNMPz5jX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDkRWa4UYclCvP7dZwMD/AXw1xCFUauFwkUjUHYoQEkPwIhAPxPma4Q2l1nVYfbOojSxAtPTxPUVBUrFmW2a2I2EXaM"}],"unpackedSize":21799913},"main":"lib/index.js","name":"@revizahoshii/baileys","type":"module","types":"lib/index.d.ts","author":{"name":"Reviza"},"engines":{"node":">=20.0.0"},"gitHead":"2e9001d2a709cf33f6573744044d35947e0d40be","license":"MIT","scripts":{"test":"node --test test/*.test.js","preinstall":"node ./engine-requirements.js"},"version":"0.6.0","_npmUser":{"name":"revizahoshii","email":"revizahoshii9@gmail.com"},"homepage":"https://github.com/revizahoshii-no/reviza-baileys","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"_npmVersion":"10.8.2","description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","directories":{},"maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"resolutions":{"tar":"^7.5.11","tmp":"^0.2.5","socks":"^2.8.8","flatted":"^3.4.2","basic-ftp":"^5.2.4","handlebars":"^4.7.9","ip-address":"^10.1.1","underscore":"^1.13.8","markdown-it":"^14.1.1","ajv@npm:^6.12.4":"^6.14.0","yaml@npm:^2.6.1":"^2.8.4","glob@npm:^10.2.2":"^10.5.0","glob@npm:^10.5.0":"^10.5.0","glob@npm:^10.3.10":"^10.5.0","js-yaml@npm:^4.1.0":"^4.1.1","js-yaml@npm:^3.13.1":"^3.14.2","minimatch@npm:^3.0.4":"^3.1.5","minimatch@npm:^3.1.2":"^3.1.5","minimatch@npm:^5.0.1":"^5.1.8","minimatch@npm:^9.0.4":"^9.0.9","minimatch@npm:^9.0.5":"^9.0.9","picomatch@npm:^2.0.4":"^2.3.2","picomatch@npm:^2.3.1":"^2.3.2","picomatch@npm:^4.0.0":"^4.0.4","picomatch@npm:^4.0.2":"^4.0.4","brace-expansion@npm:^1.1.7":"^1.1.13","brace-expansion@npm:^2.0.1":"^2.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.19.0","pino":"^9.6.0","fflate":"^0.8.2","p-queue":"^9.1.0","libsignal":"^6.0.0","lru-cache":"^11.2.6","@hapi/boom":"^9.1.3","protobufjs":"^7.5.6","async-mutex":"^0.5.0","music-metadata":"^11.12.3","whatsapp-rust-bridge":"0.5.5","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"^1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"jimp":">=1.6.0","sharp":"*","audio-decode":"*","@napi-rs/image":"*","better-sqlite3":">=11.0.0","link-preview-js":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"audio-decode":{"optional":true},"@napi-rs/image":{"optional":true},"better-sqlite3":{"optional":true},"link-preview-js":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baileys_0.6.0_1790879893098_0.4705272127075497"}}},"time":{"created":"2026-09-06T08:23:34.013Z","modified":"2026-10-01T18:38:13.564Z","0.3.18":"2026-09-06T08:23:34.364Z","0.4.0":"2026-09-07T11:29:02.700Z","0.4.1":"2026-09-07T11:43:19.708Z","0.4.2":"2026-09-09T06:26:41.100Z","0.5.0":"2026-09-14T13:22:20.594Z","0.5.1":"2026-09-14T13:43:42.257Z","0.5.2":"2026-09-14T14:50:45.569Z","0.5.3":"2026-09-14T15:27:27.044Z","0.5.4":"2026-09-14T16:29:39.990Z","0.6.0":"2026-10-01T18:38:13.396Z"},"bugs":{"url":"https://github.com/revizahoshii-no/reviza-baileys/issues"},"author":{"name":"Reviza"},"license":"MIT","homepage":"https://github.com/revizahoshii-no/reviza-baileys","keywords":["automation","baileys","bot","interactive-messages","js-whatsapp","multi-device","whatsapp","whatsapp-api","whatsapp-bot","whatsapp-web"],"repository":{"url":"git+https://github.com/revizahoshii-no/reviza-baileys.git","type":"git"},"description":"Fork Baileys milik Reviza — pesan interaktif, album, newsletter, auto-follow saluran, dan panggilan suara (VoIP).","maintainers":[{"name":"revizahoshii","email":"revizahoshii9@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/revizahoshii-no/reviza-baileys/main/banner.jpg\" alt=\"Reviza Baileys\" width=\"100%\">\n</p>\n\n<h1 align=\"center\">Reviza Baileys</h1>\n\n<div align=\"center\">\n\nPustaka WhatsApp berbasis WebSockets untuk kebutuhan bot dan aplikasi **Reviza**.\n\nBerasal dari **Baileys** (`@whiskeysockets/baileys`) dan disesuaikan dengan kebutuhan Reviza.\n\n</div>\n\n---\n\n## Daftar Isi\n\n- [Nama Paket](#nama-paket)\n- [Prasyarat](#prasyarat)\n- [Instalasi](#instalasi)\n- [Cara Menghubungkan Akun](#cara-menghubungkan-akun)\n  - [Lewat QR Code](#lewat-qr-code)\n  - [Lewat Pairing Code](#lewat-pairing-code)\n- [Menyimpan & Memulihkan Sesi](#menyimpan--memulihkan-sesi)\n- [Contoh Bot Lengkap](#contoh-bot-lengkap)\n- [Mengirim Pesan](#mengirim-pesan)\n- [Button V2, A2UI, dan Native Flow](#button-v2-a2ui-dan-native-flow)\n- [Menerima & Mengunduh Media](#menerima--mengunduh-media)\n- [Mengelola Grup](#mengelola-grup)\n- [Event yang Tersedia](#event-yang-tersedia)\n- [Fungsi Utilitas](#fungsi-utilitas)\n- [Format ID WhatsApp (JID)](#format-id-whatsapp-jid)\n- [Panggilan Suara (VoIP)](#panggilan-suara-voip)\n- [Kontak & Channel Reviza](#kontak--channel-reviza)\n- [Kepemilikan & Identitas Proyek](#kepemilikan--identitas-proyek)\n- [Lisensi](#lisensi)\n- [Kredit & Terima Kasih](#kredit--terima-kasih)\n\n## Nama Paket\n\n`@revizahoshii/baileys`\n\n## Prasyarat\n\n| Kebutuhan | Keterangan |\n|---|---|\n| **Node.js 20 atau lebih baru** | **Wajib.** Saat `npm install`, ada script `preinstall` (`engine-requirements.js`) yang akan **menghentikan instalasi** jika versi Node Anda di bawah 20. |\n| **ESM** | Paket ini `\"type\": \"module\"`. Kalau project Anda CommonJS, pakai `import()` dinamis (lihat di bawah). |\n| **`pino`** | Untuk logger. Sudah ikut terpasang sebagai dependency. |\n\n## Instalasi\n\nDari registry npm:\n\n```bash\nnpm install @revizahoshii/baileys\n```\n\nLangsung dari repository GitHub ini:\n\n```bash\nnpm install github:revizahoshii-no/reviza-baileys\n```\n\nLalu impor di kode Anda:\n\n```js\nimport makeWASocket from \"@revizahoshii/baileys\";\n```\n\nDi project CommonJS (`require`):\n\n```js\nasync function main() {\n  const { default: makeWASocket } = await import(\"@revizahoshii/baileys\");\n  // ... lanjutkan di sini\n}\nmain();\n```\n\n## Cara Menghubungkan Akun\n\nWhatsApp menyediakan API multi-device yang membuat paket ini bisa autentikasi sebagai\nperangkat WhatsApp kedua — pindai **QR code** atau pakai **pairing code** dari HP.\n\n### Lewat QR Code\n\n> [!IMPORTANT]\n> Kode QR dikirim lewat event `connection.update` sebagai properti `qr` — ambil dari situ,\n> jangan mengandalkan opsi `printQRInTerminal` (sudah deprecated, tidak mencetak QR).\n\n```js\nimport makeWASocket, { Browsers } from \"@revizahoshii/baileys\";\n\nconst sock = makeWASocket({\n    browser: Browsers.ubuntu(\"Reviza App\")\n});\n\nsock.ev.on(\"connection.update\", ({ qr }) => {\n    if (qr) console.log(\"Scan kode QR ini dengan WhatsApp Anda:\\n\", qr);\n});\n```\n\nPindai lewat **WhatsApp → Perangkat Tertaut → Tautkan Perangkat**, dan Anda langsung masuk.\n\nMau QR yang bisa dibaca mata (bukan string teks) di terminal? Tambahkan dependency kecil:\n\n```bash\nnpm install qrcode-terminal\n```\n```js\nimport qrcode from \"qrcode-terminal\";\n\nsock.ev.on(\"connection.update\", ({ qr }) => {\n    if (qr) qrcode.generate(qr, { small: true });\n});\n```\n\n### Lewat Pairing Code\n\nPairing code dipakai kalau tidak bisa memindai QR (misalnya di server/VPS).\nNomor **tanpa** `+`, `()`, atau `-` — awali dengan kode negara. Untuk Indonesia pakai `62`.\n\n```js\nimport makeWASocket from \"@revizahoshii/baileys\";\n\nconst sock = makeWASocket({});\n\nif (!sock.authState.creds.registered) {\n    const nomor = \"6281234567890\";\n    const kode = await sock.requestPairingCode(nomor);\n    console.log(\"Masukkan kode ini di WhatsApp:\", kode);\n}\n```\n\nAnda juga bisa menentukan kode sendiri, dengan syarat **panjangnya harus pas 8 karakter**:\n\n```js\nconst kode = await sock.requestPairingCode(\"6281234567890\", \"REVIZA01\");\n```\n\nKalau panjangnya bukan 8, akan error: `Custom pairing code must be exactly 8 chars`.\n\n## Menyimpan & Memulihkan Sesi\n\nSupaya tidak perlu memindai QR berulang kali, simpan kredensial ke folder:\n\n```js\nimport makeWASocket, { useMultiFileAuthState } from \"@revizahoshii/baileys\";\n\nconst { state, saveCreds } = await useMultiFileAuthState(\"auth_info_reviza\");\n\nconst sock = makeWASocket({\n    auth: state         // perhatikan: namanya `auth`, bukan `authState`\n});\n\n// dipanggil setiap kali kredensial diperbarui\nsock.ev.on(\"creds.update\", saveCreds);\n```\n\n> [!WARNING]\n> Folder `auth_info_reviza` berisi **kunci sesi** akun WhatsApp Anda. Siapa pun yang memegang\n> folder itu bisa mengambil alih sesi. **Jangan pernah** commit ke Git — tambahkan ke `.gitignore`:\n>\n> ```gitignore\n> auth_info_reviza/\n> ```\n\nAgar sesi makin awet dan tidak sering diminta pairing ulang, bungkus key store dengan cache:\n\n```js\nimport makeWASocket, { useMultiFileAuthState, makeCacheableSignalKeyStore } from \"@revizahoshii/baileys\";\nimport pino from \"pino\";\n\nconst logger = pino({ level: \"silent\" });\nconst { state, saveCreds } = await useMultiFileAuthState(\"auth_info_reviza\");\n\nconst sock = makeWASocket({\n    logger,\n    auth: {\n        creds: state.creds,\n        keys: makeCacheableSignalKeyStore(state.keys, logger)\n    }\n});\n\nsock.ev.on(\"creds.update\", saveCreds);\n```\n\n## Contoh Bot Lengkap\n\nIni pola dasar yang paling umum dipakai: tangkap pesan masuk, balas, tangani koneksi putus.\n\n```js\nimport makeWASocket, { DisconnectReason, useMultiFileAuthState } from \"@revizahoshii/baileys\";\nimport { Boom } from \"@hapi/boom\";\n\nasync function jalankanBot() {\n    const { state, saveCreds } = await useMultiFileAuthState(\"auth_info_reviza\");\n\n    const sock = makeWASocket({\n        auth: state\n    });\n\n    sock.ev.on(\"connection.update\", (update) => {\n        const { connection, lastDisconnect, qr } = update;\n\n        if (qr) console.log(\"Scan kode QR ini:\", qr);\n\n        if (connection === \"close\") {\n            const logout = lastDisconnect?.error\n                ? new Boom(lastDisconnect.error)?.output?.statusCode === DisconnectReason.loggedOut\n                : false;\n\n            console.log(\"Koneksi tertutup:\", lastDisconnect?.error);\n            // sambungkan lagi, kecuali Anda memang logout secara sadar\n            if (!logout) jalankanBot();\n        } else if (connection === \"open\") {\n            console.log(\"Bot aktif!\");\n        }\n    });\n\n    sock.ev.on(\"messages.upsert\", async ({ messages }) => {\n        // selalu pakai loop: messages adalah array\n        for (const m of messages) {\n            if (m.key.fromMe) continue;                 // lewati pesan dari bot sendiri\n            if (m.message?.protocolMessage) continue;   // lewati edit/hapus pesan\n\n            const teks = m.message?.conversation\n                || m.message?.extendedTextMessage?.text\n                || \"\";\n\n            console.log(`Pesan dari ${m.key.remoteJid}:`, teks);\n            await sock.sendMessage(m.key.remoteJid, { text: \"Halo dari Reviza Baileys!\" });\n        }\n    });\n\n    sock.ev.on(\"creds.update\", saveCreds);\n}\n\njalankanBot();\n```\n\n## Mengirim Pesan\n\nSemua jenis pesan dikirim lewat satu fungsi: `sock.sendMessage(jid, konten, opsi)`.\n\n**Teks**\n\n```js\nawait sock.sendMessage(nomor, { text: \"halo apa kabar\" });\n```\n\n**Balas dengan quote**\n\n```js\nawait sock.sendMessage(nomor, { text: \"oke siap\" }, { quoted: pesanMasuk });\n```\n\n**Sebut (mention) pengguna**\n\n```js\nawait sock.sendMessage(nomor, {\n    text: \"halo @6281234567890 👋\",\n    mentions: [\"6281234567890@s.whatsapp.net\"]\n});\n```\n\n**Gambar**\n\n```js\n// dari file\nawait sock.sendMessage(nomor, { image: { url: \"./foto.jpg\" }, caption: \"caption di sini\" });\n\n// dari Buffer hasil unduhan\nawait sock.sendMessage(nomor, { image: buffer, caption: \"langsung dari memori\" });\n```\n\n**Video, audio, dokumen, sticker, GIF**\n\n```js\nawait sock.sendMessage(nomor, { video: { url: \"./klip.mp4\" }, caption: \"video\", gifPlayback: false });\nawait sock.sendMessage(nomor, { audio: { url: \"./suara.mp3\" }, ptt: true });   // ptt: true = voice note\nawait sock.sendMessage(nomor, { document: { url: \"./kata-kata.pdf\" }, fileName: \"kata-kata.pdf\" });\nawait sock.sendMessage(nomor, { sticker: \"./stiker.webp\" });\nawait sock.sendMessage(nomor, { video: { url: \"./loop.mp4\" }, gifPlayback: true });\n```\n\n**View Once**\n\n```js\nawait sock.sendMessage(nomor, { image: { url: \"./rahasia.jpg\" }, viewOnce: true });\n```\n\n**Lokasi & Kontak**\n\n```js\nawait sock.sendMessage(nomor, {\n    location: { degreesLatitude: -3.5952, degreesLongitude: 97.6571 }  // Medan\n});\n\nconst vcard =\n    \"BEGIN:VCARD\\n\" +\n    \"VERSION:3.0\\n\" +\n    \"FN:Reviza\\n\" +\n    \"TEL;type=CELL;type=VOICE;waid=6281234567890:+62 812-3456-7890\\n\" +\n    \"END:VCARD\";\n\nawait sock.sendMessage(nomor, {\n    contacts: { displayName: \"Reviza\", contacts: [{ vcard }] }\n});\n```\n\n**Reaksi, Poll, dan Maju (forward)**\n\n```js\nawait sock.sendMessage(nomor, { react: { text: \"🔥\", key: pesanMasuk.key } });\nawait sock.sendMessage(nomor, { react: { text: \"\", key: pesanMasuk.key } });  // string kosong = hapus reaksi\n\nawait sock.sendMessage(nomor, {\n    poll: { name: \"Makan siang?\", values: [\"Nasi padang\", \"Soto\", \"Gado-gado\"], selectableCount: 1 }\n});\n\nawait sock.sendMessage(nomor, { forward: pesanMasuk });\n```\n\n> [!TIP]\n> Supaya tautan ikut menampilkan *preview*, pasang dependency opsionalnya:\n>\n> ```bash\n> npm install link-preview-js\n> ```\n>\n> Opsi `generateHighQualityLinkPreview` sudah aktif secara default, jadi\n> tidak perlu di-set ulang — cukup kirim teks yang berisi URL:\n>\n> ```js\n> await sock.sendMessage(nomor, { text: \"lihat: https://example.com\" });\n> ```\n\n### Bentuk pesan khas Reviza\n\nTiga fitur tambahan di paket ini memakai bentuk payload sendiri — sudah diuji terhadap kode\nyang ter-publish, jadi ikuti persis seperti ini:\n\n```js\n// album: array di tingkat atas, minimal 2 gambar/video (bukan { album: { messages: [...] } })\nawait sock.sendMessage(nomor, {\n    caption: \"liburan\",\n    album: [{ image: { url: \"./a.jpg\" } }, { video: { url: \"./b.mp4\" } }]\n});\n\n// quiz: lewat `poll` dengan `pollType: 1` + `correctAnswer` (bukan key `quiz`)\nawait sock.sendMessage(nomor, {\n    poll: { name: \"Kuis\", values: [\"Ai\", \"Ruby\"], selectableCount: 1, pollType: 1, correctAnswer: \"Ai\" }\n});\n\n// list: `sections` di tingkat atas (bukan { list: { sections: [...] } })\nawait sock.sendMessage(nomor, {\n    text: \"Pilih menu\", buttonText: \"Menu\", title: \"Reviza Bot\", footer: \"ketuk di bawah\",\n    sections: [{ title: \"Utama\", rows: [{ rowId: \"1\", title: \"Cek saldo\" }] }]\n});\n```\n\nBentuk yang salah ditolak dengan pesan jelas, bukan crash: `Invalid album type. Expected an array.`,\n`Minimum provide 2 media to upload album message`, `No \"correctAnswer\" provided for quiz`.\n\n## Button V2, A2UI, dan Native Flow\n\nMulai versi **0.6.0**, builder yang dipakai pada alur interaktif Hoshino tersedia langsung dari\nentry point utama. Tidak perlu menyalin builder dari source bot atau mengimpor file internal:\n\n```js\nimport { ButtonV2, A2UI } from \"@revizahoshii/baileys\";\n```\n\nKedua builder menyediakan method berantai berikut:\n\n| Method | Fungsi |\n|---|---|\n| `setTitle`, `setSubtitle`, `setBody`, `setFooter` | Mengatur isi kartu |\n| `setContextInfo` | Mention, quoted stanza, forwarding, dan metadata konteks |\n| `addReply` / `addButton` | Tombol balasan cepat |\n| `addCopy` | Tombol salin kode |\n| `addUrl` | Tombol URL |\n| `addCall` | Tombol panggilan |\n| `addSelection` | Drawer daftar `single_select` |\n| `addRawButton` | Payload Button V2 mentah untuk kebutuhan lanjutan |\n| `build` | Membuat `WAMessage` tanpa mengirim |\n| `send` | Membuat dan me-relay pesan dengan node native-flow yang diperlukan |\n\n### Button V2\n\n```js\nimport { ButtonV2 } from \"@revizahoshii/baileys\";\n\nawait new ButtonV2(sock)\n  .setTitle(\"Hoshino AI\")\n  .setSubtitle(\"Premium Flow\")\n  .setBody(\"Pilih tindakan yang ingin dijalankan.\")\n  .setFooter(\"Powered by Reviza\")\n  .addReply(\"Buka Menu\", \".menu\")\n  .addCopy(\"Salin Kode\", \"REVIZA01\")\n  .addUrl(\"Dokumentasi\", \"https://github.com/revizahoshii-no/reviza-baileys\")\n  .addSelection(\"Pilih Fitur\", [\n    {\n      title: \"Menu Utama\",\n      rows: [\n        { title: \"Downloader\", description: \"Buka fitur unduhan\", id: \".menu download\" },\n        { title: \"AI\", description: \"Buka fitur AI\", id: \".menu ai\" }\n      ]\n    }\n  ])\n  .send(\"6281234567890@s.whatsapp.net\");\n```\n\nThumbnail Button V2 memakai header lokasi agar kompatibel dengan bentuk yang digunakan Hoshino.\nSumber dapat berupa `Buffer`, path lokal, atau URL HTTP/HTTPS. Berikan gambar JPEG 16:9 yang sudah\ndinormalisasi jika ingin hasil konsisten di semua klien:\n\n```js\nawait new ButtonV2(sock)\n  .setTitle(\"Menu Media\")\n  .setSubtitle(\"Pilih layanan\")\n  .setBody(\"Daftar fitur tersedia di bawah.\")\n  .setThumbnail(\"./assets/menu-300x169.jpg\")\n  .addReply(\"Lanjut\", \".menu\")\n  .send(jid);\n```\n\n### A2UI (`im_a2ui`)\n\n```js\nimport { A2UI } from \"@revizahoshii/baileys\";\n\nawait new A2UI(sock)\n  .setTitle(\"Hoshino AI\")\n  .setSubtitle(\"A2UI v0.9\")\n  .setBody(\"Panel aksi menggunakan Bloks Widget dan native flow.\")\n  .setFooter(\"Reviza\")\n  .setA2uiImageUrl(\"https://example.com/header.jpg\")\n  .setMessageParams({\n    bottom_sheet: {\n      in_thread_buttons_limit: 1,\n      divider_indices: [0],\n      list_title: \"Daftar Aksi\",\n      button_title: \"Pilih\"\n    }\n  })\n  .addReply(\"Status\", \".status\")\n  .addCopy(\"Salin ID\", \"REVIZA-A2UI\")\n  .addSelection(\"Pilih Menu\", [\n    {\n      title: \"Kategori\",\n      rows: [\n        { title: \"AI\", id: \".menu ai\" },\n        { title: \"Game\", id: \".menu game\" }\n      ]\n    }\n  ])\n  .send(jid);\n```\n\n`A2UI` membungkus `interactiveMessage` di dalam `viewOnceMessage`, mengisi `bloksWidget` dengan\ntipe `im_a2ui`, dan mengirim node `biz/native_flow` saat relay. Rendering A2UI bergantung pada versi\nklien WhatsApp; siapkan fallback teks pada aplikasi jika mendukung klien lama.\n\n### Hanya membangun payload\n\nGunakan `build()` jika relay ingin ditangani sendiri:\n\n```js\nconst builder = new ButtonV2(sock)\n  .setBody(\"Konfirmasi tindakan?\")\n  .addReply(\"Ya\", \".yes\");\n\nconst message = await builder.build(jid, { quoted });\nconsole.log(message.key.id);\n```\n\n### API paket yang dipakai bot JavaScript Hoshino\n\nSemua nama berikut dapat diimpor dari entry point utama `@revizahoshii/baileys`:\n\n```js\nimport makeWASocket, {\n  A2UI,\n  ButtonV2,\n  DisconnectReason,\n  areJidsSameUser,\n  downloadContentFromMessage,\n  downloadMediaMessage,\n  fetchLatestRevizaBaileysVersion,\n  generateForwardMessageContent,\n  generateWAMessage,\n  generateWAMessageFromContent,\n  getBinaryNodeChild,\n  getContentType,\n  jidDecode,\n  jidNormalizedUser,\n  makeCacheableSignalKeyStore,\n  normalizeMessageContent,\n  prepareWAMessageMedia,\n  proto,\n  useMultiFileAuthState\n} from \"@revizahoshii/baileys\";\n```\n\nGenerator pesan paket juga mendukung album, carousel, interactive/template, native-flow\n`single_select`, quiz newsletter, poll snapshot/update, payment invite, request payment, invoice,\norder, group status, spoiler, ephemeral, lottie sticker, view-once V2, verified reply, dan AI Rich.\nUntuk struktur tingkat rendah, gunakan `proto` bersama `generateWAMessageFromContent`.\n\n## Menerima & Mengunduh Media\n\n```js\nimport { downloadMediaMessage } from \"@revizahoshii/baileys\";\nimport fs from \"node:fs\";\n\nsock.ev.on(\"messages.upsert\", async ({ messages }) => {\n    for (const m of messages) {\n        const media = m.message?.imageMessage\n            || m.message?.videoMessage\n            || m.message?.audioMessage\n            || m.message?.documentMessage;\n\n        if (!media) continue;\n\n        const buffer = await downloadMediaMessage(m, \"buffer\", {}, {\n            logger: sock.logger,\n            reuploadRequest: sock.updateMediaMessage\n        });\n\n        fs.writeFileSync(`unduhan_${m.message.imageMessage ? \"foto.jpg\" : \"media\"}`, buffer);\n    }\n});\n```\n\nButuh alurnya terpisah (unduh manual per konten)? Tersedia juga `downloadContentFromMessage`.\n\n## Mengelola Grup\n\n```js\n// buat grup (array nomor)\nconst { id: jidGrup } = await sock.groupCreate(\"Ruang Reviza\", [\n    \"6281234567890@s.whatsapp.net\",\n    \"6281234567891@s.whatsapp.net\"\n]);\n\n// info grup: nama, deskripsi, peserta\nconst meta = await sock.groupMetadata(jidGrup);\nconsole.log(meta.subject, \"| peserta:\", meta.participants.length);\n\n// tambah / keluarkan / naikkan-turunkan admin\nawait sock.groupParticipantsUpdate(jidGrup, [\"6281234567892@s.whatsapp.net\"], \"add\");\nawait sock.groupParticipantsUpdate(jidGrup, [\"6281234567892@s.whatsapp.net\"], \"remove\");\nawait sock.groupParticipantsUpdate(jidGrup, [\"6281234567892@s.whatsapp.net\"], \"promote\");\nawait sock.groupParticipantsUpdate(jidGrup, [\"6281234567892@s.whatsapp.net\"], \"demote\");\n\n// ubah nama & deskripsi\nawait sock.groupUpdateSubject(jidGrup, \"Nama Baru\");\nawait sock.groupUpdateDescription(jidGrup, \"Deskripsi grup\");\n\n// kunci grup (hanya admin yang bisa kirim)\nawait sock.groupSettingUpdate(jidGrup, \"announcement\");\nawait sock.groupSettingUpdate(jidGrup, \"not_announcement\");  // buka lagi\n\n// pesan sementara (auto-delete)\nawait sock.groupToggleEphemeral(jidGrup, 7 * 24 * 3600);  // detik\n```\n\n## Event yang Tersedia\n\nPaket ini memakai gaya `EventEmitter`, jadi tinggal `sock.ev.on(...)`:\n\n| Event | Kapan terjadi |\n|---|---|\n| `connection.update` | Status koneksi berubah (`open`, `close`, QR menunggu) |\n| `messages.upsert` | Ada pesan baru |\n| `messages.update` | Pesan berubah (dibaca, diedit, dihapus, vote poll) |\n| `messaging-history.set` | Riwayat chat terkirim saat pertama kali sinkron |\n| `chats.upsert` / `chats.update` / `chats.delete` | Data chat berubah |\n| `contacts.upsert` / `contacts.update` | Data kontak berubah |\n| `groups.upsert` / `groups.update` | Informasi grup berubah |\n| `group-participants.update` | Ada yang masuk/keluar/di-promosi |\n| `creds.update` | Kredensial sesi perlu disimpan ulang |\n| `presence.update` | Ada yang sedang mengetik / online |\n\nContoh menangani peserta grup baru:\n\n```js\nsock.ev.on(\"group-participants.update\", async (event) => {\n    if (event.action === \"add\") {\n        await sock.sendMessage(event.id, { text: `Selamat datang @${event.participants[0].split(\"@\")[0]}!`, mentions: event.participants });\n    }\n});\n```\n\n## Fungsi Utilitas\n\nSemua ini bisa diimpor langsung dari `\"@revizahoshii/baileys\"`:\n\n| Fungsi | Kegunaan |\n|---|---|\n| `getContentType(pesan)` | Tahu jenis isi pesan (`imageMessage`, `conversation`, dst.) |\n| `getDevice(pesan)` | Tahu perangkat pengirim (`android`, `desktop`, `smba`) |\n| `normalizeMessageContent(m)` | Buka bungkus pesan (`viewOnce`, `ephemeral`, album, dll.) jadi isi aslinya |\n| `hasValidAlbumMedia` / `getAggregateResponsesInEventMessage` | Tambahan khas fork ini |\n| `jidDecode(\"62..@s.whatsapp.net\")` | Pecah JID jadi `{ user, server, agent, device }` |\n| `jidNormalizedUser(jid)` | Normalisasi JID (buang agent/device) |\n| `isJidGroup` / `isJidBroadcast` / `isJidStatusBroadcast` | Cek jenis JID |\n| `downloadMediaMessage` / `downloadContentFromMessage` | Unduh media |\n| `prepareWAMessageMedia` | Siapkan media sebelum dikirim (untuk kontrol penuh) |\n| `generateWAMessageFromContent` | Susun objek pesan mentah |\n| `updateMediaMessage` | Kirim ulang media yang habis masa berlakunya |\n| `getAggregateVotesInPollMessage` | Baca hasil vote poll |\n| `useMultiFileAuthState` / `useSingleFileAuthState` / `useSqliteAuthState` | Simpan sesi (folder / satu file / SQLite) |\n| `makeCacheableSignalKeyStore` | Cache kunci sesi (lebih cepat & lebih awet) |\n| `initAuthCreds` | Bikin kredensial kosong dari nol |\n| `makeInMemoryStore` | Penyimpanan chat/kontak sementara di memori |\n| `useSqliteAuthState({ dbPath })` | Simpan sesi di SQLite (butuh `better-sqlite3`) |\n| `Browsers` | Pengaturan identitas perangkat (`macOS`, `windows`, `ubuntu`, `android`, `baileys`, `appropriate`) |\n| `delay(ms)` | Jeda (Promise) |\n| `fetchLatestRevizaBaileysVersion()` / `fetchLatestWaWebVersion()` | Ambil nomor versi WA untuk opsi `version` |\n| `proto` | Akses objek protokol WhatsApp (`proto.Message`, `proto.WebMessageInfo`) |\n\nPenyimpanan di memori (praktis untuk bot kecil, **boros RAM** untuk pemakaian serius):\n\n```js\nimport makeWASocket, { makeInMemoryStore } from \"@revizahoshii/baileys\";\n\nconst store = makeInMemoryStore({});\nstore.readFromFile(\"./reviza_store.json\");\nsetInterval(() => store.writeToFile(\"./reviza_store.json\"), 10_000);\n\nconst sock = makeWASocket({});\nstore.bind(sock.ev);\n\nsock.ev.on(\"chats.upsert\", () => console.log(store.chats.all()));\n```\n\n## Format ID WhatsApp (JID)\n\nID tujuan (disebut **JID**) wajib format `[kode negara][nomor]@s.whatsapp.net`:\n\n| Untuk | Format | Contoh |\n|---|---|---|\n| Pengguna | `nomor@s.whatsapp.net` | `6281234567890@s.whatsapp.net` |\n| Grup | `id-internal@g.us` | `120363012345678901@g.us` |\n| Broadcast list | `[waktu-dibuat]@broadcast` | — |\n| Status/story | `status@broadcast` | — |\n\nNomor **selalu** pakai kode negara tanpa `+` (Indonesia → `62`).\n\n## Panggilan Suara (VoIP)\n\nLibrary ini bisa **menelepon nomor WhatsApp** dan memutar audio ke dalam\npanggilan itu — mirip bot musik di Discord. Cocok untuk fitur *fake call*\natau pemutar musik lewat telepon WA.\n\n### Prasyarat tambahan\n\n**`ffmpeg` wajib terpasang** di server/PC Anda — dipakai untuk mengubah file\naudio menjadi PCM yang bisa dikirim ke panggilan.\n\n```bash\n# Ubuntu / Debian / VPS\nsudo apt install ffmpeg\n\n# Termux\npkg install ffmpeg\n```\n\nCek berhasil: `ffmpeg -version`.\n\n### Cara pakai\n\n`VoipClient` dipakai **menempel pada socket yang sudah tersambung**, jadi\nakun harus sudah login lebih dulu.\n\n```js\nimport makeWASocket, { useMultiFileAuthState, VoipClient } from \"@revizahoshii/baileys\";\n\nconst { state, saveCreds } = await useMultiFileAuthState(\"./auth\");\nconst sock = makeWASocket({ auth: state });\nsock.ev.on(\"creds.update\", saveCreds);\n\nsock.ev.on(\"connection.update\", async ({ connection }) => {\n  if (connection !== \"open\") return;\n\n  const voip = new VoipClient();\n  await voip.connectWithSocket(sock);\n\n  const call = await voip.call(\"6281234567890\", {\n    durationMs: 30_000,        // telepon otomatis ditutup setelah 30 detik\n    audioSource: \"./lagu.mp3\", // audio yang diputar ke lawan bicara\n  });\n\n  call.on(\"ringing\",   () => console.log(\"HP tujuan berdering...\"));\n  call.on(\"connected\", () => console.log(\"Panggilan diangkat, musik diputar\"));\n  call.on(\"ended\",     (alasan) => console.log(\"Panggilan selesai:\", alasan));\n\n  await call.waitForEnd();\n  voip.disconnect();\n});\n```\n\n### Pilihan `audioSource`\n\n| Nilai | Artinya |\n|---|---|\n| `\"silence\"` | **Default.** Tidak ada suara — murni *fake call*. |\n| `\"./lagu.mp3\"` | Putar file audio dari disk (format apa pun yang didukung ffmpeg). |\n| `\"https://...\"` | Putar audio langsung dari URL streaming. |\n| `\"lavfi:sine=frequency=440\"` | Nada buatan lewat filter ffmpeg. |\n\n### Method dan event\n\n| Anggota | Kegunaan |\n|---|---|\n| `new VoipClient()` | Membuat klien VoIP. |\n| `voip.connectWithSocket(sock)` | Menempel ke socket yang sudah login. **Wajib dipanggil dulu.** |\n| `voip.call(nomor, opsi)` | Memulai panggilan, mengembalikan objek `ActiveCall`. |\n| `voip.disconnect()` | Menutup semua dan melepas memori. |\n| `call.end()` | Menutup panggilan lebih awal. |\n| `call.mute(true)` | Membisukan mikrofon. |\n| `call.waitForEnd()` | `await` sampai panggilan berakhir. |\n| `call.state` | Status saat ini (lihat `CallState`). |\n| Event `ringing` | HP tujuan mulai berdering. |\n| Event `connected` | Panggilan diangkat. |\n| Event `audio` | Menerima PCM suara dari lawan bicara. |\n| Event `ended` | Panggilan berakhir, membawa alasannya. |\n\n`CallState` berisi: `Idle` `Calling` `PreacceptReceived` `ReceivedCall`\n`AcceptSent` `AcceptReceived` `Active` `ActiveElsewhere` `Ending`.\n\n### Catatan penting\n\n- Nomor tujuan ditulis **tanpa** `@s.whatsapp.net` — cukup `6281234567890`.\n- Panggilan berjalan dari akun yang sedang login, jadi tercatat di riwayat\n  telepon WhatsApp akun tersebut.\n- Modul ini memuat mesin WASM ±9,8 MB saat pertama dipakai. Wajar kalau\n  panggilan pertama sedikit lebih lambat.\n- Jangan dipakai untuk spam telepon — akun berisiko diblokir WhatsApp.\n\n## Kontak & Channel Reviza\n\nSemua tautan di bawah ini diambil dari situs resmi Reviza: <https://revizayowa.biz.id/>\n\n| Kanal | Tautan |\n|---|---|\n| WhatsApp (Admin) | https://wa.me/628978595858 |\n| Telegram | https://t.me/zayuyoo |\n| Instagram | https://instagram.com/Always_revizaa |\n| TikTok | https://www.tiktok.com/@reviza4ever |\n| YouTube | https://www.youtube.com/@reviza4ever |\n| Discord | https://discord.gg/7Nn352cN9b |\n| Grup WhatsApp | https://chat.whatsapp.com/BW0zgEgEPUOI5Arb80RWG0 |\n| Dukungan (Saweria) | https://saweria.co/REVIZAHOSHI |\n\n### Saluran (Channel) WhatsApp Reviza\n\n| Nama saluran | Kode undangan | JID untuk dipakai via library |\n|---|---|---|\n| Preset AM / Saluran preset | https://whatsapp.com/channel/0029Vb7xLulDJ6GrrJGtU51t | `120363426118421279@newsletter` |\n| Info Channel | https://whatsapp.com/channel/0029VbBc5ak3AzNL2pXnJJ1u | `120363423129630445@newsletter` |\n\nJID di atas berguna kalau Anda mengirim atau menjadwalkan konten ke saluran lewat `sock.sendMessage(jid, ...)`.\n\n### Auto-follow saluran\n\nSaat koneksi berhasil terbuka (`connection === 'open'`), socket otomatis mengikuti dua saluran di atas\nlewat `newsletterFollow()`. Perilaku ini **hanya sekali per proses** — reconnect tidak mengirim ulang\npermintaan join. Hasilnya dicatat ke log pada level `info`, jadi bisa Anda lihat langsung:\n\n```\n{\"level\":30,...,\"jid\":\"...@newsletter\",\"msg\":\"sukses follow saluran Reviza\"}\n{\"level\":30,...,\"jid\":\"...@newsletter\",\"alasan\":409,\"msg\":\"follow saluran Reviza dilewati\"}\n```\n\n`alasan: 409` artinya sudah pernah ikut, `429`/`503` artinya sedang dibatasi sementara. Keduanya\ntidak menghentikan bot.\n\n```js\n// matikan kalau tidak dipakai\nconst sock = makeWASocket({ auth: state, autoFollowSaluran: false });\n\n// atau ganti daftarnya\nconst sock2 = makeWASocket({ auth: state, autoFollowSaluran: [\"1234...@newsletter\"] });\n```\n\n## Kepemilikan & Identitas Proyek\n\nPaket ini adalah proyek pribadi **Reviza**, dikemas untuk kebutuhan bot dan aplikasinya sendiri.\n\n| Aspek | Keterangan |\n|---|---|\n| Nama paket | `@revizahoshii/baileys` |\n| Versi | `0.3.18-final` |\n| Pemegang hak cipta | **Reviza** — © 2026 (lihat `LICENSE`) |\n| Penulis di `package.json` | `author: \"Reviza\"` |\n| Lisensi | MIT |\n| Rumah proyek | https://github.com/revizahoshii-no/reviza-baileys |\n| Kontak & kanal | lihat [Kontak & Channel Reviza](#kontak--channel-reviza) |\n\n**Jejak perubahan Reviza di dalam source.** Fork ini bukan cuma ganti nama: ada **80 penanda**\n`Reviza@Changes` / `Reviza@Note` tersebar di **12 file** `lib/`, tercatat sejak 30-01-26.\nKebanyakan menambah jenis & opsi pesan yang tidak ada di Baileys upstream:\n\n- `album`, `quiz` (khusus saluran), `poll result snapshot`, `poll update`, `reaction`/`receipt` update\n- `request payment`, `invoice`, `order`, `groupStatus`, `spoiler`, `ephemeral`, `viewOnceV2`,\n  `lottieSticker`, `futureProofMessage`, `interactiveAsTemplate`, `native flow`\n- `single_select` shortcut, validasi `hasValidAlbumMedia` / `hasValidCarouselHeader`,\n  `getAggregateResponsesInEventMessage`, `normalizeMessageContent`\n- lapisan rich message (`lib/Utils/rich-message-utils.js`, bertanda `[WIP]`), `useSingleFileAuthState`\n  dengan LRUCache + mutex, perbaikan newsletter (`/m1/`, thumbnail server, `additionalNodes`),\n  `newsletterSubscribed`, pengurangan pemakaian RSS, `lib/Store/make-in-memory-store.js` (`[WIP]`)\n\n**Perlu Anda ketahui sebelum pakai:** ada nilai `DONATE_URL = \"https://saweria.co/REVIZAHOSHI\"` di\n`lib/Defaults/index.js` yang dipakai sebagai **nilai cadangan** pada tiga tempat:\n\n| Kondisi | Yang terjadi |\n|---|---|\n| `externalAdReply` dikirim tanpa `url` | `url` diisi `DONATE_URL` |\n| `offerText` diisi tapi `offerUrl` kosong | tombol offer menunjuk `DONATE_URL` (teks offer jatuh ke `LIBRARY_NAME`, yaitu `@revizahoshii/baileys`) |\n| `richResponseMessage` punya link tanpa `url` | memakai `DONATE_URL`, label sumbernya `\"Donate\"` / `\"Saweria\"` |\n\nSemuanya hanya kena kalau field-nya memang kosong — kirim `url` sendiri dan tidak ada yang berubah.\n\n**Yang tetap milik upstream:** basis kode Baileys, protokol `WAProto/`, implementasi Signal, dan\nseluruh dependency di `package.json`. Tidak ada klaim kepemilikan atas bagian ini — karena itu\n`LICENSE` MIT dibiarkan utuh beserta pemberitahuan hak ciptanya.\n\n## Lisensi\n\nKetentuan lisensi dan pemberitahuan hak cipta yang diwajibkan oleh komponen sumber tetap tersedia\ndi file `LICENSE`. File tersebut tidak dihapus atau diubah.\n\n## Catatan\n\nJangan menghapus file `LICENSE` ketika menyalin atau menggunakan paket ini apabila ketentuan\nlisensinya mewajibkan pemberitahuan tersebut tetap disertakan.\n\n### Kutipan bercentang biru tanpa akun terverifikasi\n\nMenampilkan header **WhatsApp Business (centang biru) · Status** pada balasan bot,\nlengkap dengan foto pada avatar kutipan, sambil tetap mempertahankan tombol saluran\ndan `externalAdReply` milikmu.\n\nDua hal yang bekerja terpisah:\n\n- **Lencana centang** berasal dari `participant`. Klien WhatsApp menggambar lencana\n  untuk JID sistem `0@s.whatsapp.net` dari daftar bawaan aplikasi, bukan dari\n  pengecekan sertifikat ke server. Akun yang menjalankan bot tidak perlu terverifikasi.\n- **Avatar bulat** berasal dari baris `TEL;waid=` di dalam vcard. WhatsApp menarik\n  foto profil nomor tersebut. Tanpa `waid`, avatar tampil abu-abu.\n\n```js\nawait sock.sendOfficialReply(jid, { text: 'Hasil HD IMAGE' }, {\n  name: 'REVIZA DELUXE',\n  waid: m.sender,\n})\n```\n\nIsi `waid` dengan nomor pengguna yang menjalankan perintah agar avatarnya mengikuti\nfoto profil mereka, atau satu nomor tetap agar avatarnya selalu sama.\n\n#### Digabung dengan tombol saluran dan gambar besar\n\n```js\nimport { withOfficialQuote } from '@revizahoshii/baileys'\n\nawait sock.sendMessage(jid, withOfficialQuote(\n  { text: 'Hasil HD IMAGE' },\n  {\n    name: 'REVIZA DELUXE',\n    waid: m.sender,\n    contextInfo: {\n      forwardedNewsletterMessageInfo: {\n        newsletterJid: '120363426118421279@newsletter',\n        newsletterName: 'Komunitas Reviza D Kink',\n        serverMessageId: 127,\n      },\n      externalAdReply: {\n        title: 'HD IMAGE',\n        body: 'Reply gambar yang mau dijernihkan',\n        sourceUrl: 'https://revizayowa.biz.id/',\n        mediaType: 1,\n        renderLargerThumbnail: true,\n      },\n    },\n  },\n))\n```\n\nTombol **Lihat saluran** tetap mengarah ke salurannmu sendiri.\n\n| Opsi | Keterangan |\n|---|---|\n| `name` | Nama yang tampil pada kutipan. Default `'WhatsApp'` |\n| `waid` | Nomor pemilik foto profil untuk avatar kutipan. Tanda plus dan spasi diabaikan |\n| `participant` | JID pengirim kutipan, penentu lencana. Default `0@s.whatsapp.net` |\n| `contact` | `true` (bawaan) kartu kontak, `false` teks biasa |\n| `thumbnail` | Buffer gambar. Bila diisi, kutipan memakai `imageMessage` dan `waid` diabaikan |\n| `contextInfo` | `contextInfo` tambahan, mis. saluran dan `externalAdReply` |\n\n### Pesan langsung tampil tanpa tombol Unduh\n\nSejak versi `0.5.1`, pesan AI Rich otomatis menyertakan `messageSecret` sehingga\nlangsung tampil di perangkat penerima. Sebelumnya WhatsApp menampilkan peringatan\n*\"WhatsApp tidak dapat memastikan pesan ini aman\"* beserta tombol **Unduh**, karena\npustaka ini mengirim `verificationMetadata` berisi sertifikat acak yang gagal divalidasi.\n\nTidak ada yang perlu kamu ubah — perilaku ini aktif secara bawaan.\n\nBila tetap ingin mengirim `verificationMetadata` seperti versi lama:\n\n```js\nawait sock.sendMessage(jid, {\n  contentText: 'Halo!',\n  fakeVerification: true,\n})\n```\n\nKamu juga bisa menentukan `messageSecret` sendiri:\n\n```js\nawait sock.sendMessage(jid, {\n  contentText: 'Halo!',\n  messageSecret: Buffer.alloc(32),\n})\n```\n\n## Balasan Bercentang Biru (Verified Reply)\n\nMembuat balasan bot tampil seolah mengutip pesan dari saluran terverifikasi, sehingga\nmuncul lencana centang biru pada kutipan. Tersedia preset **WhatsApp**, **Meta AI**,\ndan saluran **custom** milikmu sendiri.\n\n### Cara tercepat\n\nHelper ini otomatis terpasang pada socket:\n\n```js\nawait sock.sendVerifiedReply(jid, { text: 'Halo!' }, { preset: 'whatsapp' })\nawait sock.sendVerifiedReply(jid, { text: 'Halo!' }, { preset: 'meta' })\n```\n\n### Saluran custom\n\n```js\nawait sock.sendVerifiedReply(jid, { text: 'Halo!' }, {\n  name: 'Reviza Official',\n  jid: '120363420054181921@newsletter',\n  text: 'Pesan dari saluran resmi',\n})\n```\n\n### Membungkus isi pesan sendiri\n\n`withVerifiedReply` bisa dipakai pada jenis pesan apa pun (teks, gambar, video, dan lainnya):\n\n```js\nimport { withVerifiedReply } from '@revizahoshii/baileys'\n\nawait sock.sendMessage(jid, withVerifiedReply(\n  { image: { url: './gambar.jpg' }, caption: 'Halo!' },\n  { preset: 'meta' },\n))\n```\n\n### Sebagai objek `quoted`\n\n```js\nimport { createVerifiedQuote } from '@revizahoshii/baileys'\n\nawait sock.sendMessage(jid, { text: 'Halo' }, {\n  quoted: createVerifiedQuote({ preset: 'whatsapp', text: 'Pemberitahuan resmi' }),\n})\n```\n\n### Opsi\n\n| Opsi | Tipe | Keterangan |\n|---|---|---|\n| `preset` | `'whatsapp'` \\| `'meta'` | Identitas bawaan. Default `'whatsapp'` |\n| `name` | `string` | Nama yang tampil pada kutipan (menimpa preset) |\n| `jid` | `string` | JID saluran, wajib berakhiran `@newsletter` (menimpa preset) |\n| `text` | `string` | Isi pesan yang seolah dikutip |\n| `participant` | `string` | Pengirim kutipan. Default `0@s.whatsapp.net` |\n| `serverMessageId` | `number` | ID pesan pada saluran. Diacak bila dikosongkan |\n| `contentType` | `number` | Lihat `VerifiedContentType` (`UPDATE`, `UPDATE_CARD`, `LINK_CARD`) |\n| `quotedMessage` | `object` | Pesan kutipan custom, menimpa `text` |\n| `contextInfo` | `object` | `contextInfo` tambahan yang digabungkan |\n\n### Fungsi yang tersedia\n\n| Fungsi | Kegunaan |\n|---|---|\n| `sock.sendVerifiedReply(jid, content, options, sendOptions)` | Kirim langsung, cara paling singkat |\n| `withVerifiedReply(content, options)` | Bungkus isi pesan apa pun |\n| `createVerifiedQuote(options)` | Hasilkan objek `quoted` palsu |\n| `buildVerifiedContextInfo(options)` | Hasilkan `contextInfo` mentah |\n| `buildVerifiedNewsletterInfo(options)` | Hasilkan `forwardedNewsletterMessageInfo` saja |\n| `bindVerifiedReply(sock)` | Pasang manual ke socket (sudah otomatis) |\n\n> Fitur ini hanya mengubah tampilan kutipan di sisi penerima dan tidak memberi\n> verifikasi resmi apa pun pada akunmu. Gunakan dengan bijak.\n\n## Repository\n\nSumber resmi proyek: https://github.com/revizahoshii-no/reviza-baileys\n\nContoh penggunaan di halaman ini diadaptasi dari dokumentasi\n[Baileys (`WhiskeySockets/Baileys`)](https://github.com/WhiskeySockets/Baileys) dan diterjemahkan\nserta disesuaikan ke `@revizahoshii/baileys`.\n\n## Kredit & Terima Kasih\n\nPustaka ini tidak berdiri sendiri — ia berdiri di atas kerja banyak pihak. Terima kasih\nsebesar-besarnya untuk semua fork dan pengembang Baileys yang karyanya mengalir ke\n`@revizahoshii/baileys`:\n\n| Proyek / Pengembang | Peran |\n|---|---|\n| [**Baileys** — Adhiraj Singh (`adiwajshing`)](https://github.com/adiwajshing/Baileys) | Pustaka asal. Basis kode, protokol `WAProto/`, dan implementasi Signal berasal dari sini |\n| [**Baileys** — WhiskeySockets](https://github.com/WhiskeySockets/Baileys) | Kelanjutan resmi Baileys yang menjadi dasar fork ini |\n| [**ourin-baileys** — zanpiww (`@Zann`)](https://www.npmjs.com/package/ourin-baileys) | Pengembang Ourin MD. Modul **VoIP** (panggilan suara / *fake call* + putar musik) di pustaka ini berasal dari `ourin-baileys` (Lisensi MIT) — terima kasih banyak, zanpiww |\n| [**reviza-baileys** — Reviza](https://github.com/revizahoshii-no/reviza-baileys) | Proyek ini sendiri: penyesuaian, penambahan jenis & opsi pesan, dan pemeliharaan |\n\nTidak ada klaim kepemilikan atas bagian mana pun yang berasal dari proyek-proyek di atas.\nPemberitahuan hak cipta dan ketentuan lisensinya tetap tersedia di file `LICENSE`.\n","readmeFilename":"README.md"}