{"_id":"@aroyareinzu/baileys","name":"@aroyareinzu/baileys","dist-tags":{"latest":"2.0.0"},"versions":{"2.0.0":{"name":"@aroyareinzu/baileys","version":"2.0.0","description":"Baileys is a lightweight JavaScript library for interacting with the WhatsApp Web API using WebSocket.","keywords":["facebook","metaplatforms","baileys","interactive","meta","whatsapp","whatsapp-bot","ryuu-kun"],"homepage":"https://github.com/WhiskeySockets/Baileys/","repository":{"url":"git+ssh://git@github.com/WhiskeySockets/Baileys.git"},"license":"MIT","author":{"name":"ryuu reinzz"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"test":"jest"},"dependencies":{"@hapi/boom":"^9.1.3","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"1.5.3","@whiskeysockets/eslint-config":"^1.0.0","async-mutex":"^0.5.0","axios":"^1.12.1","audio-decode":"^2.2.2","cache-manager":"^5.7.6","fflate":"^0.8.2","lodash":"^4.17.21","libsignal":"npm:@meta.inc/libsignal@*","link-preview-js":"^3.0.14","lru-cache":"^11.1.0","music-metadata":"^7.12.3","pino":"^9.6","protobufjs":"^7.2.4","qrcode-terminal":"^0.12.0","ws":"^8.13.0"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^16.0.0","@types/ws":"^8.0.0","conventional-changelog-cli":"^2.2.2","eslint":"^8.0.0","jest":"^30.1.1","jimp":"^1.6.0","json":"^11.0.0","link-preview-js":"^3.0.5","open":"^8.4.2","release-it":"^15.10.3","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.27.9","typedoc-plugin-markdown":"4.4.2","typescript":"^5.8.2"},"peerDependencies":{"jimp":"^1.6.0"},"peerDependenciesMeta":{"jimp":{"optional":true}},"packageManager":"yarn@1.22.19","engines":{"node":">=20.0.0"},"directories":{"lib":"lib"},"_id":"@aroyareinzu/baileys@2.0.0","bugs":{"url":"https://github.com/WhiskeySockets/Baileys/issues"},"_nodeVersion":"24.9.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-quq98btO08PoXDUl8CLUSOk38QOhNVwqRDu3niOZ1/4ePv9nakczVvCQsY3ll0AGKFnKVwkm6u8Ert/F6dFhgA==","shasum":"97aa48f449342b7ff1b6cca6fd946adeae0d4ee6","tarball":"https://registry.npmjs.org/@aroyareinzu/baileys/-/baileys-2.0.0.tgz","fileCount":282,"unpackedSize":41379961,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC5APV3pmSSJDqF6ZUnTK/Z75SBLA+mZH7yHwckOiNnWQIhAKAk4AkN+fbMXvP9bU+B9DFxnVMfhI1KAr9f7nhTuEgE"}]},"_npmUser":{"name":"aroyareinzu","email":"faldrian311@gmail.com"},"maintainers":[{"name":"aroyareinzu","email":"faldrian311@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baileys_2.0.0_1760277331142_0.23041041712054944"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-12T13:55:30.726Z","2.0.0":"2025-10-12T13:55:31.411Z","modified":"2025-10-12T13:55:31.682Z"},"maintainers":[{"name":"aroyareinzu","email":"faldrian311@gmail.com"}],"description":"Baileys is a lightweight JavaScript library for interacting with the WhatsApp Web API using WebSocket.","homepage":"https://github.com/WhiskeySockets/Baileys/","keywords":["facebook","metaplatforms","baileys","interactive","meta","whatsapp","whatsapp-bot","ryuu-kun"],"repository":{"url":"git+ssh://git@github.com/WhiskeySockets/Baileys.git"},"author":{"name":"ryuu reinzz"},"bugs":{"url":"https://github.com/WhiskeySockets/Baileys/issues"},"license":"MIT","readme":"<div align=\"center\">\n  <img src=\"https://files.catbox.moe/gw41eq.png\" alt=\"WhatsApp Baileys\" width=\"450\"/>  \n\n  <h1>WhatsApp Baileys</h1>\n  <p><strong>Lightweight, Full-Featured WhatsApp Web for Node.js</strong></p>\n  \n  <p>\n    <a href=\"https://npmjs.com/package/@whiskeysockets/baileys\">\n      <img src=\"https://img.shields.io/npm/v/@whiskeysockets/baileys?color=blue&logo=npm\" alt=\"npm version\">\n    </a>\n    <a href=\"https://github.com/whiskeysockets/baileys/blob/main/LICENSE\">\n      <img src=\"https://img.shields.io/github/license/whiskeysockets/baileys?color=green\" alt=\"License\">\n    </a>\n    <a href=\"https://github.com/whiskeysockets/baileys/stargazers\">\n      <img src=\"https://img.shields.io/github/stars/whiskeysockets/baileys?color=yellow&logo=github\" alt=\"GitHub stars\">\n    </a>\n  </p>\n</div>\n\n<br>\n\n## 📚 Table of Contents  \n- [Features](#-features)  \n- [Installation](#-installation)  \n- [Quick Start](#-quick-start)  \n- [Documentation](#-documentation)  \n  - [Connecting Account](#-connecting-account)  \n  - [Handling Events](#-handling-events)  \n  - [Sending Messages](#-sending-messages)  \n  - [Groups](#-groups)  \n  - [Privacy](#-privacy)  \n  - [Advanced](#-advanced)  \n- [Disclaimer](#-disclaimer)  \n\n<br>\n\n## 🌟 Features\n- ✅ **Multi-Device Support**  \n- 🔄 **Real-Time Messaging** (text, media, polls, buttons)  \n- 🛠️ **Group & Channel Management** (create, modify, invite)  \n- 🔒 **End-to-End Encryption**  \n- 📦 **Session Persistence**  \n\n<br>\n\n## 🔥 Updated New (12 Oktober 2025)\n- 🍟 Convert LID Mentions to JID\n- 🤖 Convert Sender LID to JID\n- 👥 Convert Group ID LID to JID\n- 🩸 Fixed All Bug LID (participant - mentionedJid - sender - admins group)\n- ✨ Dependencities Update (vulnerabilities deleted)\n\n<br>\n\n## 🌱 Owner’s Notice  \n\nProyek ini bersifat **publik**, sehingga siapa pun dapat menggunakan atau melakukan *rename* untuk keperluan pribadi. Namun, penggunaan untuk tujuan **komersial** atau sekadar pencarian nama **tidak diperkenankan**.  \n\nProyek ini dikembangkan berdasarkan libary **Whiskeysocket**, dengan perbaikan dan peningkatan yang dilakukan oleh administrator.  \nTujuan utama dari proyek ini adalah untuk **memudahkan pengguna serta memperbaiki kesalahan bot yang sebelumnya sering dialami**.  \n\nSaat ini proyek masih dalam tahap **Beta**, sehingga kemungkinan masih terdapat bug atau kendala tak terduga saat proses instalasi maupun eksekusi.  \nJika Anda mengalami masalah yang berlanjut, silakan hubungi kami melalui kontak yang telah tersedia.  \n\nTerimakasih, salam hangat, ryuu!\n<br>\n\n## ⚡ Contact Admin\n- [Site](https://zass.cloud)\n- [Channel](https://zass.cloud/wa/channel/info)\n- [Script Gratis](https://neolabsofficial.my.id)\n- [Pterodactyl Murah](https://pteroku-desu.zass.cloud)\n\n<br>\n\n## 📜 License\n- This project is licensed for **personal and non-commercial use only**.  \n- Redistribution, modification, or renaming for personal purposes is allowed.  \n- **Commercial use, resale, or name-hunting is strictly prohibited.**\n\n<br>\n\n## 🤝 Contribution Guidelines\nWe welcome contributions to improve this project. To contribute:  \n1. Fork the repository  \n2. Create a new branch for your feature or fix  \n3. Submit a pull request with a clear explanation of the changes  \n\nAll contributions will be reviewed before merging.  \n\n<br>\n\n## 📥 Installation\n```bash\nnpm install @RyuuReinzz/baileys\n# or\nyarn add @RyuuReinzz/baileys\n```\n\n<br>\n\n## 🚀 Quick Start\n```javascript\nconst {\n  default: makeWASocket,\n  useMultiFileAuthState,\n} = require('@RyuuReinzz/baileys');\n\nconst {\n  state,\n  saveCreds\n} = await useMultiFileAuthState(\"./path/to/sessions/folder\")\n\n/*\n * const RyuuBotz = makeWASocket({ printQRInTerminal: true });\n * code to get WhatsApp web connection\n * QR code or pairing code type available\n */\n\nRyuuBotz.ev.on('messages.upsert', ({ messages }) => {\n  console.log('New message:', messages[0].message);\n});\n```\n\n<br>\n\n## 📖 Documentation\n\n### 🔌 Connecting Account\n<details>\n<summary><strong>🔗 Connect with QR Code</strong></summary>\n\n```javascript\nconst RyuuBotz = makeWASocket({\n  printQRInTerminal: true, // true to display QR Code\n  auth: state\n})\n```\n</details>\n\n<details>\n<summary><strong>🔢 Connect with Pairing Code</strong></summary>\n\n```javascript\nconst RyuuBotz = makeWASocket({\n  printQRInTerminal: false, // false so that the pairing code is not disturbed\n  auth: state\n})\n\nif (!RyuuBotz.authState.creds.registered) {\n  const number = \"62xxxx\"\n\n  // use default pairing code (default 1-8)\n  const code = await RyuuBotz.requestPairingCode(number)\n\n  // use customer code pairing (8 digit)\n  const customCode = \"ABCD4321\"\n  const code = await RyuuBotz.requestPairingCode(number, customCode)\n  console.log(code)\n}\n```\n</details>\n\n<br>\n\n### 📡 Handling Events\n<details>\n<summary><strong>📌 Example to Start</strong></summary>\n\n```javascript\nRyuuBotz.ev.on('messages.upsert', ({ messages }) => {\n  console.log('New message:', messages[0].message);\n});\n```\n</details>\n\n<details>\n<summary><strong>🗳️ Decrypt Poll Votes</strong></summary>\n\n```javascript\nRyuuBotz.ev.on('messages.update', (m) => {\n  if (m.pollUpdates) console.log('Poll vote:', m.pollUpdates);\n});\n```\n</details>\n\n<br>\n\n### 📨 Sending Messages\n\n```javascript\n/**\n * Sends a message using the WhatsApp socket connection.\n * \n * @param {string} jid - The JID (Jabber ID) of the recipient/user.\n *                       This is the unique identifier for the WhatsApp user/group.\n * @param {Object} content - The message content to be sent. Can be any valid message type\n *                           (text, image, video, document, etc.) with required parameters.\n * @param {Object} [options] - Optional parameters for message generation and sending.\n *                             Can include properties like:\n *                             - quoted: Message to reply to\n *                             - ephemeral: If message should disappear after viewing\n *                             - mediaUpload: Media upload options\n *                             - etc.\n * @returns {Promise<Object>} A promise that resolves with the sent message info or\n *                            rejects with an error if sending fails.\n */\nconst jid = '';        // Recipient's JID (WhatsApp ID) or LID\nconst content = {};     // Message content object\nconst options = {};     // Optional message options\n\n// Send the message using the WhatsApp socket connection\nRyuuBotz.sendMessage(jid, content, options)\n```\n\n<details>\n<summary><strong>📝 Text Message</strong></summary>\n\n```javascript\n// Simple Text\nawait RyuuBotz.sendMessage(jid, { text: 'Hello!' });\n```\n\n```javascript\n// Text with link preview\nawait RyuuBotz.sendMessage(jid, {\n  text: 'Visit https://example.com',\n  linkPreview: {\n    'canonical-url': 'https://example.com',\n    title: 'Example Domain',\n    description: 'A demo website',\n    jpegThumbnail: fs.readFileSync('preview.jpg')\n  }\n});\n```\n\n```javascript\n// With Quoted Reply\nawait RyuuBotz.sendMessage(jid, { text: 'Hello Shiroko!' }, { quoted: message });\n```\n</details>\n\n\n<details>\n<summary><strong>🖼️ Image Message</strong></summary>\n\n```javascript\n// With local file buffer\nawait RyuuBotz.sendMessage(jid, { \n  image: fs.readFileSync('shiroko.jpg'),\n  caption: 'My wife!',\n  mentions: ['1234567890@s.whatsapp.net'] // Tag users\n});\n```\n\n```javascript\n// With URL\nawait RyuuBotz.sendMessage(jid, { \n  image: { url: 'https://example.com/shiroko.jpg' },\n  caption: 'Emh ayang nya zass'\n});\n```\n</details>\n\n<details>\n<summary><strong>🎥 Video Message</strong></summary>\n\n```javascript\n// With Local File\nawait RyuuBotz.sendMessage(jid, { \n  video: fs.readFileSync('video.mp4'),\n  caption: 'Funny clip!'\n});\n```\n\n```javascript\n// With URL File\nawait RyuuBotz.sendMessage(jid, { \n  video: { url: 'https://example.com/video.mp4' },\n  caption: 'Streamed video'\n});\n```\n\n```javascript\n// View Once Message\nawait RyuuBotz.sendMessage(jid, {\n  video: fs.readFileSync('secret.mp4'),\n  viewOnce: true // Disappears after viewing\n});\n```\n</details>\n\n<details>\n<summary><strong>🎵 Audio/PTT Message</strong></summary>\n\n```javascript\n// Regular audio\nawait RyuuBotz.sendMessage(jid, { \n  audio: fs.readFileSync('audio.mp3'),\n  ptt: false // For music\n});\n```\n\n```javascript\n// Push-to-talk (PTT)\nawait RyuuBotz.sendMessage(jid, { \n  audio: fs.readFileSync('voice.ogg'),\n  ptt: true, // WhatsApp voice note\n  waveform: [0, 1, 0, 1, 0] // Optional waveform\n});\n```\n</details>\n\n<details>\n<summary><strong>👤 Contact Message</strong></summary>\n\n```javascript\nconst vcard = 'BEGIN:VCARD\\n' // metadata of the contact card\n  + 'VERSION:3.0\\n' \n  + 'FN:Jeff Singh\\n' // full name\n  + 'ORG:Ashoka Uni\\n' // the organization of the contact\n  + 'TELtype=CELLtype=VOICEwaid=911234567890:+91 12345 67890\\n' // WhatsApp ID + phone number\n  + 'END:VCARD'\n\nawait RyuuBotz.sendMessage(jid, { \n  contacts: { \n    displayName: 'Your Name', \n    contacts: [{ vcard }] \n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>💥 React Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  react: {\n    text: '👍', // use an empty string to remove the reaction\n    key: message.key\n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>📌 Pin & Keep Message</strong></summary>\n\n| Time  | Seconds        |\n|-------|----------------|\n| 24h    | 86.400        |\n| 7d     | 604.800       |\n| 30d    | 2.592.000     |\n\n```javascript\n// Pin Message\nawait RyuuBotz.sendMessage(jid, {\n  pin: {\n    type: 1, // 2 to remove\n    time: 86400,\n    key: message.key\n  }\n})\n```\n\n```javascript\n// Keep message\nawait RyuuBotz.sendMessage(jid, {\n  keep: {\n    key: message.key,\n    type: 1 // or 2 to remove\n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>📍 Location Message</strong></summary>\n\n```javascript\n// Static location\nawait RyuuBotz.sendMessage(jid, {\n  location: {\n    degreesLatitude: 37.422,\n    degreesLongitude: -122.084,\n    name: 'Google HQ'\n  }\n});\n```\n\n```javascript\n// Thumbnail location\nawait RyuuBotz.sendMessage(jid, {\n  location: {\n    degreesLatitude: 37.422,\n    degreesLongitude: -122.084,\n    name: 'Google HQ',\n    jpegThumbnail: fs.readFileSync('preview.jpg')\n  }\n});\n```\n\n```javascript\n// Live location (updates in real-time)\nawait RyuuBotz.sendMessage(jid, {\n  location: {\n    degreesLatitude: 37.422,\n    degreesLongitude: -122.084,\n    accuracyInMeters: 10\n  },\n  live: true, // Enable live tracking\n  caption: 'I’m here!'\n});\n```\n</details>\n\n<details>\n<summary><strong>📞 Call Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  call: {\n    name: 'Here is call message',\n    type: 1 // 2 for video\n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>🗓️ Event Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  event: {\n    isCanceled: false, // or true\n    name: 'Here is name event',\n    description: 'Short description here',\n    location: {\n      degreesLatitude: 0,\n      degreesLongitude: 0,\n      name: 'Gedung Tikus Kantor'\n    },\n    startTime: 17..., // timestamp date\n    endTime: 17..., // timestamp date\n    extraGuestsAllowed: true // or false\n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>🛒 Order Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  order: {\n    orderId: '123xxx',\n    thumbnail: fs.readFileSync('preview.jpg'),\n    itemCount: '123',\n    status: 'INQUIRY', // INQUIRY || ACCEPTED || DECLINED\n    surface: 'CATALOG',\n    message: 'Here is order message',\n    orderTitle: 'Here is title order',\n    sellerJid: '628xxx@s.whatsapp.net'',\n    token: 'token_here',\n    totalAmount1000: '300000',\n    totalCurrencyCode: 'IDR'\n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>📊 Poll Message</strong></summary>\n\n```javascript\n// Create a poll\nawait RyuuBotz.sendMessage(jid, {\n  poll: {\n    name: 'Favorite color?',\n    values: ['Red', 'Blue', 'Green'],\n    selectableCount: 1 // Single-choice\n  }\n});\n```\n\n```javascript\n// Poll results (snapshot)\nawait RyuuBotz.sendMessage(jid, {\n  pollResult: {\n    name: 'Favorite color?',\n    values: [['Red', 10], ['Blue', 20]] // [option, votes]\n  }\n});\n```\n</details>\n\n<details>\n<summary><strong>🛍️ Product Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  product: {\n    productId: '123',\n    title: 'Cool T-Shirt',\n    description: '100% cotton',\n    price: 1999, // In cents (e.g., $19.99)\n    currencyCode: 'USD',\n    productImage: fs.readFileSync('shirt.jpg')\n  }\n});\n```\n</details>\n\n\n<details>\n<summary><strong>💳 Payment Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  payment: {\n    note: 'Here is payment message',\n    currency: 'USD', // optional \n    offset: 0, // optional\n    amount: '100000', // optional\n    expiry: 0, // optional\n    from: '628xxx@s.whatsapp.net', // optional\n    image: { // optional\n      placeholderArgb: \"your_background\", // optional\n      textArgb: \"your_text\",  // optional\n      subtextArgb: \"your_subtext\" // optional\n    }\n  }\n})\n```\n</details>\n\n\n<details>\n<summary><strong>📜 Payment Invite Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, { \n  paymentInvite: {\n    type: 1, // 1 || 2 || 3\n    expiry: 0 \n  }   \n})\n```\n</details>\n\n\n<details>\n<summary><strong>👤 Channel Admin Invite</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  adminInvite: {\n    jid: '172xxx@newsletter',\n    name: 'Newsletter Title', \n    caption: 'Undangan admin channel saya',\n    expiration: 86400,\n    jpegThumbnail: fs.readFileSync('preview.jpg') // optional\n  }\n})\n```\n</details>\n\n\n<details>\n<summary><strong>👥 Group Invite Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  groupInvite: {\n    jid: '123xxx@g.us',\n    name: 'Group Name!', \n    caption: 'Invitation To Join My Whatsapp Group',\n    code: 'xYz3yAtf...', // code invite link\n    expiration: 86400,\n    jpegThumbnail: fs.readFileSync('preview.jpg') // optional            \n  }\n})\n```\n</details>\n\n<details>\n<summary><strong>🔢 Phone Number Message</strong></summary>\n\n```javascript\n// Request phone number\nawait RyuuBotz.sendMessage(jid, {\n  requestPhoneNumber: {}\n})\n```\n```javascript\n// Share phone number\nawait RyuuBotz.sendMessage(jid, {\n  sharePhoneNumber: {}\n})\n```\n</details>\n\n<details>\n<summary><strong>↪️  Reply Button Message</strong></summary>\n\n```javascript\n// Reply List Message\nawait RyuuBotz.sendMessage(jid, {\n  buttonReply: {\n    name: 'Hii',\n    description: 'description', \n    rowId: 'ID'\n  }, \n  type: 'list'\n})\n```\n\n```javascript\n// Reply Button Message\nawait RyuuBotz.sendMessage(jid, {\n  buttonReply: {\n    displayText: 'Hii', \n    id: 'ID'\n  }, \n  type: 'plain'\n})\n```\n\n```javascript\n// Reply Template Message\nawait RyuuBotz.sendMessage(jid, {\n  buttonReply: {\n    displayText: 'Hii',\n    id: 'ID',\n    index: 1 // number id button reply\n  }, \n  type: 'template'\n})\n```\n\n```javascript\n// Reply Interactive Message\nawait RyuuBotz.sendMessage(jid, {\n  buttonReply: {\n    body: 'Hii', \n    nativeFlows: {\n      name: 'menu_options', \n      paramsJson: JSON.stringify({ id: 'ID', description: 'description' }) \n      version: 1 // 2 | 3\n    }\n  }, \n  type: 'interactive'\n})\n```\n</details>\n\n<details>\n<summary><strong>#️⃣ Status Mentions Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendStatusMentions({\n  image: {\n    url: 'https://example.com/image.jpg'\n  }, \n  caption: 'Nice day!'\n}, [\"123@s.whatsapp.net\", \"123@s.whatsapp.net\"])\n```\n</details>\n\n<details>\n<summary><strong>📸 Album Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendAlbumMessage(jid,\n  [{\n    image: { url: 'https://example.com/image.jpg' },\n    caption: 'Hello World'\n  },\n  {\n    image: fs.readFileSync('image.jpg'), \n    caption: 'Hello World'\n  },\n  {\n    video: { url: 'https://example.com/video.mp4' },\n    caption: 'Hello World'\n  },\n  {\n    video: fs.readFileSync('video.mp4'),\n    caption: 'Hello World'\n  }],\n{ quoted: message, delay: 3000 })\n```\n</details>\n\n<details>\n<summary><strong>👨‍💻 Interactive Message</strong></summary>\n\n> This is an interactive chat created based on Proto WhatsApp business data, if the message does not work then there may be a change in the buttonParamsJson structure.\n\n<details>\n<summary><strong>Shop Flow Message</strong></summary>\n\n<div align=\"center\">\n  <img src=\"https://files.catbox.moe/pdeeq8.png\" alt=\"Example Shop Message\" width=\"450\"/>\n  <p>Preview the shop message display, usually used to direct customers to the Facebook page or account.</td>\n</div>\n\n```javascript\n// Headers Text\nawait RyuuBotz.sendMessage(jid, {      \n  text: 'Here is body message',\n  title: 'Here is title', \n  subtitle: 'Here is subtitle', \n  footer: '© WhatsApp Baileys',\n  viewOnce: true,\n  shop: {\n    surface: 1, // 2 | 3 | 4\n    id: 'facebook_store_name'\n  }\n})\n```\n\n```javascript\n// Headers Image\nawait RyuuBotz.sendMessage(jid, { \n  image: {\n    url: 'https://www.example.com/image.jpg'\n  },    \n  caption: 'Here is body message',\n  title: 'Here is title', \n  subtitle: 'Here is subtitle', \n  footer: '© WhatsApp Baileys',\n  shop: {\n    surface: 1, // 2 | 3 | 4\n    id: 'facebook_store_name'\n  }, \n  hasMediaAttachment: true, // or false\n  viewOnce: true\n})\n```\n\n```javascript\n// Headers Video\nawait RyuuBotz.sendMessage(jid, { \n  video: {\n    url: 'https://www.example.com/video.mp4'\n  },    \n  caption: 'Here is body message',\n  title: 'Here is title', \n  subtitle: 'Here is subtitle', \n  footer: '© WhatsApp Baileys',\n  shop: {\n    surface: 1, // 2 | 3 | 4\n    id: 'facebook_store_name'\n  }, \n  hasMediaAttachment: true, // or false\n  viewOnce: true\n})\n```\n\n```javascript\n// Headers Document\nawait RyuuBotz.sendMessage(jid, {\n  document: { \n    url: 'https://www.example.com/document.pdf' \n  }, \n  mimetype: 'application/pdf', \n  jpegThumbnail: await RyuuBotz.resize('https://www.example.com/thumbnail.jpg', 320, 320), \n  caption: 'Here is body message',\n  title: 'Here is title',\n  subtitle: 'Here is subtitle', \n  footer: '© WhatsApp Baileys',\n  shop: {\n    surface: 1, // 2 | 3 | 4\n    id: 'facebook_store_name'\n  }, \n  hasMediaAttachment: false, // or true, \n  viewOnce: true\n})\n```\n\n```javascript\n// Headers Location\nawait RyuuBotz.sendMessage(jid, { \n  location: {\n    degressLatitude: -0, \n    degressLongitude: 0,\n    name: 'Example Location'\n  },    \n  caption: 'Here is body message',\n  title: 'Here is title', \n  subtitle: 'Here is subtitle', \n  footer: '© WhatsApp Baileys',\n  shop: {\n    surface: 1, // 2 | 3 | 4\n    id: 'facebook_store_name'\n  }, \n  hasMediaAttachment: false, // or true\n  viewOnce: true\n})\n```\n\n```javascript\n// Headers Product\nawait RyuuBotz.sendMessage(jid, {\n  product: {\n    productImage: { \n      url: 'https://www.example.com/product.jpg'\n    },\n    productId: '23942543532047956', // catalog business ID\n    title: 'Example Product',\n    description: 'Example Product Description',\n    currencyCode: 'IDR',\n    priceAmount1000: '2000000',\n    retailerId: 'ExampleRetailer',\n    url: 'https://www.example.com/product',\n    productImageCount: 1\n  },\n  businessOwnerJid: '628xxx@s.whatsapp.net',\n  caption: 'Here is body message',\n  title: 'Here is title',\n  subtitle: 'Here is subtitle',\n  footer: '© WhatsApp Baileys',\n  shop: {\n    surface: 1, // 2 | 3 | 4\n    id: 'facebook_store_name'\n  }, \n  hasMediaAttachment: false, // or true\n  viewOnce: true\n})\n```\n</details>\n\n<details>\n<summary><strong>Carosell Message</strong></summary>\n\n<div align=\"center\">\n  <img src=\"https://files.catbox.moe/cf3hxd.png\" alt=\"Example Carosell Message\" width=\"450\"/>\n  <p>Preview the carosel message display, a scrollable message card that displays various items.</td>\n</div>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  text: 'Here is body message',\n  title: 'Here is title', \n  subtile: 'Here is subtitle', \n  footer: '© WhatsApp baileys',\n  cards: [{\n    image: { url: 'https://www.example.com/image.jpg' }, // or buffer\n    title: 'The title cards',\n    body: 'The body cards',\n    footer: '© WhatsApp',\n    buttons: [{\n      name: 'quick_reply',\n      buttonParamsJson: JSON.stringify({\n        display_text: 'Display Text',\n        id: '123'\n      })\n    },\n    {\n      name: 'cta_url',\n      buttonParamsJson: JSON.stringify({\n        display_text: 'Display Text',\n        url: 'https://www.example.com'\n      })\n    }]\n  },\n  {\n    video: { url: 'https://www.example.com/video.mp4' }, // or buffer\n    title: 'The title cards 2',\n    body: 'The body cards 2',\n    footer: '© WhatsApp',\n    buttons: [{\n      name: 'quick_reply',\n      buttonParamsJson: JSON.stringify({\n        display_text: 'Display Text',\n        id: 'ID'\n      })\n    },\n    {\n      name: 'cta_url',\n      buttonParamsJson: JSON.stringify({\n        display_text: 'Display Text',\n        url: 'https://www.example.com'\n      })\n    }]\n  }]\n})\n```\n</details>\n\n<details>\n<summary><strong>Native Flow Message</strong></summary>\n\n> Native flow messages are used to display various types of button messages, even for flow dialogs. These buttons are easy to use and are often able to accommodate many parameters.\n\n<details>\n<summary><strong>header_type</strong></summary>\n\n```javascript\n// Headers text\nawait RyuuBotz.sendMessage(jid, {\n  text: 'This is body message!',\n  title: 'This is title',\n  subtitle: 'This is subtitle',\n  footer: '© WhatsApp Baileys',\n  interactive: native_flow_button\n})\n```\n\n```javascript\n// Headers image\nawait RyuuBotz.sendMessage(jid, {\n  image: { url: 'https://www.example.com/image.jpg' },\n  caption: 'This is body message!',\n  title: 'This is title',\n  subtitle: 'This is subtitle',\n  footer: '© WhatsApp Baileys',\n  hasMediaAttachment: true,\n  interactive: native_flow_button\n})\n```\n\n```javascript\n// Headers Video\nawait RyuuBotz.sendMessage(jid, {\n  video: { url: 'https://www.example.com/video.mp4' },\n  caption: 'This is body message!',\n  title: 'This is title',\n  subtitle: 'This is subtitle',\n  footer: '© WhatsApp Baileys',\n  hasMediaAttachment: true,\n  interactive: native_flow_button\n})\n```\n\n```javascript\n// Headers Document\nawait RyuuBotz.sendMessage(jid, {\n  document: { url: 'https://www.example.com/document.pdf' },\n  jpegThumbnail: fs.readFileSync('preview.jpg'),\n  mimetype: 'application/pdf',\n  caption: 'This is body message!',\n  title: 'This is title',\n  subtitle: 'This is subtitle',\n  footer: '© WhatsApp Baileys',\n  hasMediaAttachment: true,\n  interactive: native_flow_button\n})\n```\n\n```javascript\n// Headers Location\nawait RyuuBotz.sendMessage(jid, {\n  location: { \n    degressLatitude: -0,\n    degressLongitude: 0,\n    name: 'Here is name location'\n  },\n  caption: 'This is body message!',\n  title: 'This is title',\n  subtitle: 'This is subtitle',\n  footer: '© WhatsApp Baileys',\n  hasMediaAttachment: true,\n  interactive: native_flow_button\n})\n```\n\n```javascript\n// Headers Product\nawait RyuuBotz.sendMessage(jid, {\n  product: {\n    productImage: { \n      url: 'https://www.example.com/product.jpg'\n    },\n    productId: '23942543532047956', // catalog business ID\n    title: 'Example Product',\n    description: 'Example Product Description',\n    currencyCode: 'IDR',\n    priceAmount1000: '2000000',\n    retailerId: 'ExampleRetailer',\n    url: 'https://www.example.com/product',\n    productImageCount: 1\n  },\n  businessOwnerJid: '628xxx@s.whatsapp.net',\n  caption: 'This is body message!',\n  title: 'This is title',\n  subtitle: 'This is subtitle',\n  footer: '© WhatsApp Baileys',\n  hasMediaAttachment: true,\n  interactive: native_flow_button\n})\n```\n</details>\n\n<details>\n<summary><strong>native_flow_button</strong></summary>\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/n3wqck.png\" alt=\"Shiroko Quick Reply\" width=\"300\">\n      </td>\n      <td>\n        quick_reply\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'quick_reply',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Quick Reply',\n    id: '123'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/0bbxj0.png\" alt=\"Shiroko CTA URL\" width=\"300\">\n      </td>\n      <td>\n        cta_url\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'cta_url',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Action URL',\n    url: 'https://www.example.com',\n    merchant_url: 'https://www.example.com'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/8vgfcw.png\" alt=\"Shiroko CTA Copy\" width=\"300\">\n      </td>\n      <td>\n        cta_copy\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'cta_copy',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Action Copy',\n    copy_code: '12345678'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/ftvx6v.png\" alt=\"Shiroko CTA Call\" width=\"300\">\n      </td>\n      <td>\n        cta_call\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'cta_call',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Action Call',\n    phone_number: '628xxx'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/hpswwj.png\" alt=\"Shiroko CTA Catalog\" width=\"300\">\n      </td>\n      <td>\n        cta_catalog\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'cta_catalog',\n  buttonParamsJson: JSON.stringify({\n    business_phone_number: '628xxx'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/buia02.png\" alt=\"Shiroko CTA Reminder\" width=\"300\">\n      </td>\n      <td>\n        cta_reminder\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'cta_reminder',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Action Reminder'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/mhhqrc.png\" alt=\"Shiroko CTA Reminder\" width=\"300\">\n      </td>\n      <td>\n        cta_cancel_reminder\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'cta_cancel_reminder',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Action Unreminder'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/gktote.png\" alt=\"Shiroko Address Message\" width=\"300\">\n      </td>\n      <td>\n        address_message\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'address_message',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Form Location'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/amzsvv.png\" alt=\"Shiroko Send Location\" width=\"300\">\n      </td>\n      <td>\n        send_location\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'send_location',\n  buttonParamsJson: JSON.stringify({\n    display_text: 'Send Location'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/hpswwj.png\" alt=\"Shiroko Open Web Views\" width=\"300\">\n      </td>\n      <td>\n        open_webview\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'open_webview',\n  buttonParamsJson: JSON.stringify({\n    title: 'URL Web View',\n    link: {\n      in_app_webview: true, // or false\n      url: 'https://www.example.com'\n    }\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/1zv71s.png\" alt=\"Shiroko Multi Product Message\" width=\"300\">\n      </td>\n      <td>\n        mpm\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'mpm',\n  buttonParamsJson: JSON.stringify({\n    product_id: '23942543532047956'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/b41mfc.png\" alt=\"Shiroko Transaction Details\" width=\"300\">\n      </td>\n      <td>\n        wa_payment_transaction_details\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'wa_payment_transaction_details',\n  buttonParamsJson: JSON.stringify({\n    transaction_id: '12345848'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/krp9fv.png\" alt=\"Shiroko Greeting Message\" width=\"300\">\n      </td>\n      <td>\n        automated_greeting_message_view_catalog\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'automated_greeting_message_view_catalog',\n  buttonParamsJson: JSON.stringify({\n    business_phone_number: '628xxx',\n    catalog_product_id: '23942543532047956'\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/vuqvmx.png\" alt=\"Shiroko Form Message\" width=\"300\">\n      </td>\n      <td>\n        galaxy_message\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'galaxy_message',\n  buttonParamsJson: JSON.stringify({\n    mode: 'published',\n    flow_message_version: '3',\n    flow_token: '1:1307913409923914:293680f87029f5a13d1ec5e35e718af3',\n    flow_id: '1307913409923914',\n    flow_cta: 'Here is button form',\n    flow_action: 'navigate',\n    flow_action_payload: {\n      screen: 'QUESTION_ONE',\n      params: {\n        user_id: '123456789',\n        referral: 'campaign_xyz'\n      }\n    },\n    flow_metadata: {\n      flow_json_version: '201',\n      data_api_protocol: 'v2',\n      flow_name: 'Lead Qualification [en]',\n      data_api_version: 'v2',\n      categories: ['Lead Generation', 'Sales']\n    }\n  })\n}]\n```\n---\n\n<table border=\"1\">\n  <thead>\n    <tr>\n      <th>display_flow_thumb</th>\n      <th>native_flow</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>\n        <img src=\"https://files.catbox.moe/zg4vs9.png\" alt=\"Shiroko Single Select\" width=\"300\">\n      </td>\n      <td>\n        single_select\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n```javascript\nconst native_flow_button = [{\n  name: 'single_select',\n  buttonParamsJson: JSON.stringify({\n    title: 'Selection Button',\n    sections: [{\n      title: 'Title 1',\n      highlight_label: 'Highlight label 1',\n      rows: [{\n          header: 'Header 1',\n          title: 'Title 1',\n          description: 'Description 1',\n          id: 'Id 1'\n        },\n        {\n          header: 'Header 2',\n          title: 'Title 2',\n          description: 'Description 2',\n          id: 'Id 2'\n        }\n      ]\n    }]\n  })\n}]\n```\n</details>\n</details>\n</details>\n\n<details>\n<summary><strong>🛍️ Product Message</strong></summary>\n\n```javascript\nawait RyuuBotz.sendMessage(jid, {\n  product: {\n    productId: '123',\n    title: 'Cool T-Shirt',\n    description: '100% cotton',\n    price: 1999, // In cents (e.g., $19.99)\n    currencyCode: 'USD',\n    productImage: fs.readFileSync('shirt.jpg')\n  }\n});\n```\n</details>\n\n<details>\n<summary><strong>🎭 Buttons Messages</strong></summary>\n\n<br>\n\n> This message button may not work if WhatsApp prohibits the free and open use of the message button. Use a WhatsApp partner if you still want to use the message button.\n\n<details>\n<summary><strong>header_type</strong></summary>\n\n```javascript\n// Button Headers Text\nawait RyuuBotz.sendMessage(jid, {\n  text: 'Choose an option:',\n  buttons: button_params,\n  footer: '© WhatsApp Baileys'\n});\n```\n\n```javascript\n// Button Headers Image\nawait RyuuBotz.sendMessage(jid, {\n  image: fs.readFileSync('image.jpg'),\n  caption: 'Choose an option:',\n  buttons: button_params,\n  footer: '© WhatsApp Baileys'\n});\n```\n\n```javascript\n// Button Headers Video\nawait RyuuBotz.sendMessage(jid, {\n  video: fs.readFileSync('video.mp4'),\n  caption: 'Choose an option:',\n  buttons: button_params,\n  footer: '© WhatsApp Baileys'\n});\n```\n\n```javascript\n// Button Headers Location\nawait RyuuBotz.sendMessage(jid, {\n  location: {\n    degreesLatitude: 37.422,\n    degreesLongitude: -122.084\n  },\n  caption: 'Choose an option:',\n  buttons: button_params,\n  footer: '© WhatsApp Baileys'\n});\n```\n</details>\n\n<details>\n<summary><strong>button_params</strong></summary>\n\n```javascript\n// Button Params Default\nconst button_params = [{\n  buttonId: 'id1',\n  buttonText: {\n    displayText: 'Option 1'\n  },\n  type: 1\n},{\n  buttonId: 'id2',\n  buttonText: {\n    displayText: 'Option 2'\n  },\n  type: 1\n}]\n```\n\n```javascript\n// Button Params NativeFlow\nconst button_params = [{\n  buttonId: 'id1',\n  buttonText: {\n    displayText: 'Option 1'\n  },\n  type: 1\n},{\n  buttonId: 'flow',\n  buttonText: {\n    displayText: 'flow'\n  },\n  nativeFlowInfo: {\n    name: 'cta_url',\n    buttonParamsJson: JSON.stringify({\n      display_text: 'Visit URL',\n      url: 'https://web.whatsapp.com',\n      merchant_url: 'https://web.whatsapp.com'\n    })\n  },\n  type: 2\n}]\n```\n</details>\n</details>\n\n<details>\n<summary><strong>🎭 List Messages </strong></summary>\n\n```javascript\n// Single Select\nawait RyuuBotz.sendMessage(jid, {\n  text: 'Menu:',\n  sections: [\n    { title: 'Food', rows: [\n      { title: 'Pizza', rowId: 'pizza' },\n      { title: 'Burger', rowId: 'burger' }\n    ]}\n  ],\n  buttonText: 'Browse'\n});\n```\n\n```javascript\n// Product List\nawait RyuuBotz.sendMessage(jid, {\n  title: 'Here is title product',\n  text: 'Text message',\n  footer: '© WhatsApp Baileys',\n  buttonText: 'Select Menu', \n  productList: [{\n    title: 'Product Collection', \n    products: [{\n      productId: '23942543532047956' // catalog business ID\n    }]\n  }], \n  businessOwnerJid: '6285643115199@s.whatsapp.net',\n  thumbnail: { url: 'https://www.example.com/file' }\n})\n```\n</details>\n\n<br>\n\n### 📣 Newsletter\n<details>\n<summary><strong>📋 Newsletter Metadata</strong></summary>\n\n```javascript\n// code can't have \"https://whatsapp.com/channel/\", only code\nconst newsletter = await RyuuBotz.newsletterMetadata(\"invite\", \"0029Vb6w7eO9sBIEUYRgeC30\")\nconsole.log(\"Newsletter metadata:\", newsletter)\n```\n\n```javascript\n// from jid newsletter\nconst newsletter = await RyuuBotz.newsletterMetadata(\"jid\", \"120363421570647022@newsletter\")\nconsole.log(\"Newsletter metadata:\", newsletter)\n```\n</details>\n\n<details>\n<summary><strong>👥 Newsletter Follow</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterFollow(\"120363421570647022@newsletter\")\n```\n</details>\n\n<details>\n<summary><strong>👥 Newsletter Unfollow</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterUnfollow(\"120363421570647022@newsletter\")\n```\n</details>\n\n<details>\n<summary><strong>🔈 Newsletter Mute</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterMute(\"120363421570647022@newsletter\")\n```\n</details>\n\n<details>\n<summary><strong>🔊 Newsletter Unmute</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterUnmute(\"120363421570647022@newsletter\")\n```\n</details>\n\n<details>\n<summary><strong>❤️ Newsletter Reaction Mode</strong></summary>\n\n```javascript\n// Allow all emoji\nawait RyuuBotz.newsletterReactionMode(\"120363421570647022@newsletter\", \"ALL\")\n```\n\n```javascript\n// Allow special emoji (👍, ❤️, 😯, 😢, 🙏)\nawait RyuuBotz.newsletterReactionMode(\"120363421570647022@newsletter\", \"BASIC\")\n```\n\n```javascript\n// No reaction allowed\nawait RyuuBotz.newsletterReactionMode(\"120363421570647022@newsletter\", \"NONE\")\n```\n</details>\n\n<details>\n<summary><strong>📋 Update Description</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterUpdateDescription(\"120363421570647022@newsletter\", \"News description here!\")\n```\n</details>\n\n<details>\n<summary><strong>👤 Update Name Newsletter</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterUpdateName(\"120363421570647022@newsletter\", \"New newsletter name!\")\n```\n</details>\n\n<details>\n<summary><strong>🖼️ Change Profile Newsletter</strong></summary>\n\n```javascript\n// Change\nawait RyuuBotz.newsletterUpdatePicture(\"120363421570647022@newsletter\", { url: 'https://example.com/image.jpg' })\n```\n\n```javascript\n// Remove\nawait RyuuBotz.newsletterRemovePicture(\"120363421570647022@newsletter\")\n```\n</details>\n\n<details>\n<summary><strong>📣 Newsletter Create</strong></summary>\n\n```javascript\nconst newsletter = await RyuuBotz.newsletterCreate(\"Here is name newsletter!\", \"Here is description!\", { url: 'https://example.com/image.jpg' })\nconsole.log(\"Here is data new created newsletter:\", newsletter)\n```\n</details>\n\n<details>\n<summary><strong>🔥 List Newsletter Join</strong></summary>\n\n```javascript\nconst list_newsletter = await RyuuBotz.newsletterFetchAllParticipating()\nconsole.log(\"Your list newsletter join:\", list_newsletter)\n```\n</details>\n\n<details>\n<summary><strong>😎 Newsletter Change Owner</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterChangeOwner(\"120363421570647022@newsletter\", \"123@lid\")\n```\n</details>\n\n<details>\n<summary><strong>😂 Newsletter Demote</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterDemote(\"120363421570647022@newsletter\", \"123@lid\")\n```\n</details>\n\n<details>\n<summary><strong>🌟 Newsletter Reaction Message</strong></summary>\n\n```javascript\nawait RyuuBotz.newsletterReactMessage(\"120363421570647022@newsletter\", \"12\", \"🦖\")\n```\n</details>\n\n<br>\n\n### 🛠️ Groups\n<details>\n<summary><strong>🔄 Create Group</strong></summary>\n\n```javascript\nconst group = await RyuuBotz.groupCreate(\"New Group Title\", [\"123@s.whatsapp.net\", \"456@s.whatsapp.net\"]);\nconsole.log(\"New group create data:\", group)\n```\n</details>\n\n<details>\n<summary><strong>⚙️ Change Group Settings</strong></summary>\n\n```javascript\n// only allow admins to send messages\nawait RyuuBotz.groupSettingUpdate(jid, 'announcement')\n```\n\n```javascript\n// allow everyone to send messages\nawait RyuuBotz.groupSettingUpdate(jid, 'not_announcement')\n```\n\n```javascript\n// allow everyone to modify the group's settings -- like display picture etc.\nawait RyuuBotz.groupSettingUpdate(jid, 'unlocked')\n```\n\n```javascript\n// only allow admins to modify the group's settings\nawait RyuuBotz.groupSettingUpdate(jid, 'locked')\n```\n</details>\n\n<details>\n<summary><strong>💯 Add, Remove, Promote, Demote</strong></summary>\n\n```javascript\n// add member\nawait RyuuBotz.groupParticipantsUpdate(jid, ['123@s.whatsapp.net', '456@s.whatsapp.net'], 'add')\n\n// remove member\nawait RyuuBotz.groupParticipantsUpdate(jid, ['123@s.whatsapp.net', '456@s.whatsapp.net'], 'remove')\n\n// promote member (admins)\nawait RyuuBotz.groupParticipantsUpdate(jid, ['123@s.whatsapp.net', '456@s.whatsapp.net'], 'promote')\n\n// demote member (unadmins)\nawait RyuuBotz.groupParticipantsUpdate(jid, ['123@s.whatsapp.net', '456@s.whatsapp.net'], 'demote')\n```\n</details>\n\n<details>\n<summary><strong>👥 Change Subject Title</strong></summary>\n\n```javascript\nawait RyuuBotz.groupUpdateSubject(jid, 'New Subject Title!')\n```\n</details>\n\n<details>\n<summary><strong>📋 Change Description</strong></summary>\n\n```javascript\nawait RyuuBotz.groupUpdateDescription(jid, 'New Description!')\n```\n</details>\n\n<details>\n<summary><strong>⛔ Leave Group</strong></summary>\n\n```javascript\nawait RyuuBotz.groupLeave(jid)\n```\n</details>\n\n<details>\n<summary><strong>🔗 Invite Code</strong></summary>\n\n```javascript\n// to create link with code use \"https://chat.whatsapp.com/\" + code\nconst code = await RyuuBotz.groupInviteCode(jid)\nconsole.log('group code: ' + code)\n```\n</details>\n\n<details>\n<summary><strong>🔁 Revoke/Reset Invite Code</strong></summary>\n\n```javascript\nconst code = await RyuuBotz.groupRevokeInvite(jid)\nconsole.log('New group code: ' + code)\n```\n</details>\n\n<details>\n<summary><strong>🟢 Join By Invite Code</strong></summary>\n\n```javascript\n// code can't have \"https://chat.whatsapp.com/\", only code\nconst response = await RyuuBotz.groupAcceptInvite(code)\nconsole.log('joined to: ' + response)\n```\n</details>\n\n<details>\n<summary><strong>📋 Group Metadata By Code</strong></summary>\n\n```javascript\nconst response = await RyuuBotz.groupGetInviteInfo(code)\nconsole.log('group information: ' + response)\n```\n</details>\n\n<details>\n<summary><strong>📋 Group Metadata</strong></summary>\n\n```javascript\nconst metadata = await RyuuBotz.groupMetadata(jid) \nconsole.log(metadata.id + ', title: ' + metadata.subject + ', description: ' + metadata.desc)\n```\n</details>\n\n<details>\n<summary><strong>🟢 Join using `groupInviteMessage`</strong></summary>\n\n```javascript\nconst response = await RyuuBotz.groupAcceptInviteV4(jid, groupInviteMessage)\nconsole.log('joined to: ' + response)\n```\n</details>\n\n<details>\n<summary><strong>👥 Join Request List</strong></summary>\n\n```javascript\nconst response = await RyuuBotz.groupRequestParticipantsList(jid)\nconsole.log(response)\n```\n</details>\n\n<details>\n<summary><strong>👥 Join Approve/Reject</strong></summary>\n\n```javascript\n// Approve\nconst response = await RyuuBotz.groupRequestParticipantsUpdate(jid, ['123@s.whatsapp.net', '456@s.whatsapp.net'], 'approve')\n```\n\n```javascript\n// Reject\nconst response = await RyuuBotz.groupRequestParticipantsUpdate(jid, ['123@s.whatsapp.net', '456@s.whatsapp.net'], 'reject')\n```\n</details>\n\n<details>\n<summary><strong>👥 Group Member List</strong></summary>\n\n```javascript\nconst response = await RyuuBotz.groupFetchAllParticipating()\nconsole.log(response)\n```\n</details>\n\n<details>\n<summary><strong>🕑 Ephemeral Toggle</strong></summary>\n\n- Ephemeral can be:\n\n| Time  | Seconds        |\n|-------|----------------|\n| Remove | 0          |\n| 24h    | 86.400     |\n| 7d     | 604.800    |\n| 90d    | 7.776.000  |\n\n```javascript\nawait RyuuBotz.groupToggleEphemeral(jid, 86400)\n```\n</details>\n\n<details>\n<summary><strong>👥 Member Add Mode</strong></summary>\n\n```javascript\n// Everyone Member\nawait RyuuBotz.groupMemberAddMode(jid, 'all_member_add')\n```\n\n```javascript\n// Only Admin\nawait RyuuBotz.groupMemberAddMode(jid, 'admin_add')\n```\n</details>\n\n<br>\n\n### 🔒 Privacy\n<details>\n<summary><strong>🖼️ Change Profile User or Group</strong></summary>\n\n```javascript\n// Change\nawait RyuuBotz.updateProfilePicture(jid, { url: 'https://example.com/image.jpg' })\n```\n\n```javascript\n// Remove\nawait RyuuBotz.removeProfilePicture(jid)\n```\n</details>\n\n<details>\n<summary><strong>🚫 Block/Unblock User</strong></summary>\n\n```javascript\n// Block\nawait RyuuBotz.updateBlockStatus(jid, 'block');\n```\n\n```javascript\n// Unblock\nawait RyuuBotz.updateBlockStatus(jid, 'unblock');\n```\n</details>\n\n<details>\n<summary><strong>👤 Metadata Privacy</strong></summary>\n\n```javascript\nconst privacySettings = await RyuuBotz.fetchPrivacySettings(true)\nconsole.log('privacy settings: ' + privacySettings)\n```\n</details>\n\n<details>\n<summary><strong>⛔ Metadata Blocklist</strong></summary>\n\n```javascript\nconst response = await RyuuBotz.fetchBlocklist()\nconsole.log(response)\n```\n</details>\n\n<details>\n<summary><strong>👀 Last Seen</strong></summary>\n\n```javascript\n// Everyone\nawait RyuuBotz.updateLastSeenPrivacy(\"all\")\n```\n\n```javascript\n// Contacts\nawait RyuuBotz.updateLastSeenPrivacy(\"contacts\")\n```\n\n```javascript\n// Contacts Blacklist\nawait RyuuBotz.updateLastSeenPrivacy(\"contact_blacklist\")\n```\n\n```javascript\n// Hide\nawait RyuuBotz.updateLastSeenPrivacy(\"none\")\n```\n</details>\n\n<details>\n<summary><strong>👀 Online Status</strong></summary>\n\n```javascript\n// Everyone\nawait RyuuBotz.updateOnlinePrivacy(\"all\")\n```\n\n```javascript\n// Match last seen\nawait RyuuBotz.updateOnlinePrivacy(\"match_last_seen\")\n```\n</details>\n\n<details>\n<summary><strong>🖼️ Profile Picture</strong></summary>\n\n```javascript\n// Everyone\nawait RyuuBotz.updateProfilePicturePrivacy(\"all\")\n```\n\n```javascript\n// Contacts\nawait RyuuBotz.updateProfilePicturePrivacy(\"contacts\")\n```\n\n```javascript\n// Contacts Blacklist\nawait RyuuBotz.updateProfilePicturePrivacy(\"contact_blacklist\")\n```\n\n```javascript\n// Hide\nawait RyuuBotz.updateProfilePicturePrivacy(\"none\")\n```\n</details>\n\n<details>\n<summary><strong>✨ Status WhatsApp</strong></summary>\n\n```javascript\n// Everyone\nawait RyuuBotz.updateStatusPrivacy(\"all\")\n```\n\n```javascript\n// Contacts\nawait RyuuBotz.updateStatusPrivacy(\"contacts\")\n```\n\n```javascript\n// Contacts Blacklist\nawait RyuuBotz.updateStatusPrivacy(\"contact_blacklist\")\n```\n\n```javascript\n// Hide\nawait RyuuBotz.updateStatusPrivacy(\"none\")\n```\n</details>\n\n<details>\n<summary><strong>👁️ Blue Tiks Read</strong></summary>\n\n```javascript\n// Show\nawait RyuuBotz.updateReadReceiptsPrivacy(\"all\")\n```\n\n```javascript\n// Hide\nawait RyuuBotz.updateReadReceiptsPrivacy(\"none\")\n```\n</details>\n\n<details>\n<summary><strong>👥 Group Add</strong></summary>\n\n```javascript\n// Everyone\nawait RyuuBotz.updateGroupsAddPrivacy(\"all\")\n```\n\n```javascript\n// Contacts\nawait RyuuBotz.updateGroupsAddPrivacy(\"contacts\")\n```\n\n```javascript\n// Contacts Blacklist\nawait RyuuBotz.updateGroupsAddPrivacy(\"contact_blacklist\")\n```\n</details>\n\n<details>\n<summary><strong>🕑 Default Disappearing Mode</strong></summary>\n\n| Time  | Seconds        |\n|-------|----------------|\n| Remove | 0          |\n| 24h    | 86.400     |\n| 7d     | 604.800    |\n| 90d    | 7.776.000  |\n\n```javascript\nawait RyuuBotz.updateDefaultDisappearingMode(86400)\n```\n</details>\n\n<br>\n\n### ⚙️ Advanced\n<details>\n<summary><strong>🔧 Debug Logs</strong></summary>\n\n```javascript\nconst RyuuBotz = makeWASocket({ logger: { level: 'debug' } });\n```\n</details>\n\n<details>\n<summary><strong>📡 Raw WebSocket Events</strong></summary>\n\n```javascript\nRyuuBotz.ws.on('CB:presence', (json) => console.log('Sockets update:', json));\n\n// for any message with tag 'edge_routing'\nRyuuBotz.ws.on('CB:edge_routing', (node) => console.log('Sockets update:', node));\n\n// for any message with tag 'edge_routing' and id attribute = abcd\nRyuuBotz.ws.on('CB:edge_routing,id:abcd', (node) => console.log('Sockets update:', node));\n\n// for any message with tag 'edge_routing', id attribute = abcd & first content node routing_info\nRyuuBotz.ws.on('CB:edge_routing,id:abcd,routing_info', (node) => console.log('Sockets update:', node));\n```\n</details>\n\n<br>\n\n## ⚠️ Disclaimer\nThis project is **not affiliated** with WhatsApp/Meta. Use at your own risk.  \nRefer to [WhatsApp's Terms](https://www.whatsapp.com/legal) for compliance.\n\n<br>\n\n### 🔗 Full Documentation\nExplore all features in the **[Baileys GitHub Wiki](https://github.com/whiskeysockets/baileys/wiki)**","readmeFilename":"README.md","_rev":"1-a702f08e47ba616d4f0b2393c7019491"}