npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ryuu-reinzz/luna-lib

v4.1.4

Published

Library extra for bot WhatsApp

Downloads

906

Readme

@ryuu-reinzz/luna-lib - Advanced WhatsApp Interactive Message Builder

@ryuu-reinzz/luna-lib adalah library mutakhir untuk mempermudah pembuatan pesan interaktif di WhatsApp menggunakan library Baileys. Dengan pendekatan fluent chaining API, Anda dapat membuat komponen kompleks seperti Buttons, Carousel Cards, Native Flows, hingga AI Rich Response Payloads dengan struktur kode yang bersih, elegan, dan sangat scalable.


📑 Watermark & Credits

⚠️ DO NOT REMOVE THIS WATERMARK

@ryuu-reinzz/luna-lib - Advanced WhatsApp Interactive Message Builder
Built for creating buttons, carousels, native flows, and AI rich response payloads using Baileys with fluent chaining, flexible payload customization, and scalable architecture for modern bot development.

  • Runtime: Baileys: baileys (Latest)
  • Created by: Nixel
  • Contributors:
    • ~ Ahmad tumbuh kembang
    • ~ RyuuReinzz

Owner WhatsApp: wa.me/6288246552068 RyuuReinzz
(Added "messageBuilder" wrapper, "extendSocketsBotz", Owner of @ryuu-reinzz/baileys)

WhatsApp Creator: wa.me/6282139672290
Channel: https://whatsapp.com/channel/0029VbCV1ck8fewpdNb2TY2k

Note: This project is being sold because it has been modified and has been added to many other things that make it more valuable.

Copyright (c) 2026 Nixel
Copyright (c) 2026 RyuuReinzz


🚀 Fitur Utama

  • Fluent Chaining (messageBuilder): Menulis kode pembuatan pesan berantai yang rapi (.setType().setTitle().setBody().send()).
  • Native Flow Messages (Button V1): Dukungan penuh untuk quick replies, URL redirections, CTA Calls, Reminders, Address Input, dan Single Select Lists dengan opsi penyesuaian ikon.
  • Buttons V2: Formulasi tombol interaktif klasik berbasis location data fallback dan rendering thumbnail instan.
  • Carousel Cards: Mengirim deretan slider kartu interaktif berbasis media (Gambar/Video) sekaligus menggunakan integrasi instansiasi internal.
  • AI Rich Response (WhatsApp AI Format): Rendering elemen super premium eksklusif Meta AI seperti Markdown Text, Code Highlighting Tokenizer, Data Tables, Reels/HScroll Layout, Product Showcase, Social Media Posts, hingga rendering ekspresi LaTeX ke Gambar.
  • Socket Injection Extensions: Menambahkan prototype/method tambahan langsung ke objek socket Baileys Anda (sendAlbum, sendStickerPack, sendOrder, getPNFromLid, dll).

🛠️ Instalasi & Persiapan

Prasyarat Dependensi

Pastikan project Anda telah menginstal beberapa modul inti berikut:

npm install baileys sharp node-fetch @ryuu-reinzz/luna-lib

Inisialisasi Ekstensi addProperty

Untuk menyuntikkan seluruh fitur dari @ryuu-reinzz/luna-lib ke dalam instance bot Baileys Anda, panggil fungsi ekspor utama pada berkas koneksi bot Anda:

import makeWASocket, { useMultiFileAuthState } from 'baileys';
import {
    addProperty,
    Button,
    ButtonV2,
    Carousel,
    AIRich
} from '@ryuu-reinzz/luna-lib';
const { state, saveCreds } = await useMultiFileAuthState('session');
const sock = makeWASocket({
    auth: state,
    printQRInTerminal: true
});
// Suntikkan properti @ryuu-reinzz/luna-lib ke dalam socket Baileys
addProperty(sock, await import('baileys'));

📊 Detail Parameter & Opsi Method (API Reference)

1. Kelas Button (Native Flow / Button V1)

| Method | Parameter | Tipe Data | Deskripsi / Opsi Nilai | | :--- | :--- | :--- | :--- | | setTitle(text) | text | String | Judul di bagian paling atas (Header). | | setSubtitle(text) | text | String | Sub-judul / teks sekunder di bawah judul. | | setBody(text) | text | String | Konten teks utama di tengah bubble chat. | | setFooter(text) | text | String | Teks kecil abu-abu di bagian bawah pesan. | | setImage(url) | url | String | Mengatur media gambar pada header berupa URL / Buffer. | | addReply(txt, id, opt) | txt, id, opt | String, String, Object | Tombol Quick Reply. Opsi ikon: { icon: 'DEFAULT' }, { icon: 'REVIEW' }, dll. | | addUrl(txt, url, vw, opt) | txt, url, vw, opt | String, String, Boolean, Object | Tombol buka tautan. vw (webview) = true/false. Opsi ikon: { icon: 'PROMOTION' }. | | addCopy(txt, code, opt) | txt, code, opt | String, String, Object | Tombol salin kode cepat. Opsi ikon: { icon: 'DOCUMENT' }. | | addSelection(title) | title | String | Menginisialisasi komponen menu list baru. | | makeSection(title) | title | String | Membuat kategori/seksi baru di dalam list menu terakhir. | | makeRow(h, t, d, id) | h, t, d, id | String, String, String, String | Mengisi item baris. h (header), t (title), d (description), id (command). | ###

2. Kelas ButtonV2 (Classic Fallback Buttons)

| Method | Parameter | Tipe Data | Deskripsi | | :--- | :--- | :--- | :--- | | setTitle(text) | text | String | Judul pesan. | | setSubtitle(text) | text | String | Sub-judul pesan. | | setBody(text) | text | String | Isi konten utama teks pesan. | | setFooter(text) | text | String | Catatan kaki pesan. | | setThumbnail(url) | url | String | Mengatur thumbnail kecil di samping/dalam pesan. | | addButton(txt, id) | txt, id | String, String | Menambahkan tombol interaktif klasik. |

3. Skema Object Data AIRich Components

A. Properti Objek addProduct

{
  title: String,        // Nama produk resmi
  brand: String,        // Nama brand / pemilik produk
  price: String,        // Harga normal (Contoh: "Rp 1000")
  sale_price: String,   // Harga diskon (Contoh: "Rp 0")
  product_url: String,  // Tautan saat produk diklik (Gunakan key 'url' jika HScroll Array)
  icon_url: String,     // Logo brand mini di pojok (Gunakan key 'icon' jika HScroll Array)
  image_url: String     // Gambar visual produk utama (Gunakan key 'image' jika HScroll Array)
}

B. Properti Objek addReels

{
  username: String,     // Nama pembuat konten video
  profile_url: String,  // Foto avatar profil pembuat
  thumbnail: String,    // Cover preview video Reels
  url: String,          // Link redirect eksternal video
  title: String,        // Judul pendek / caption video
  like: Number,         // Jumlah visualisasi Like (e.g. 12000)
  share: Number,        // Jumlah visualisasi Share (e.g. 500)
  view: Number,         // Jumlah total tayangan (e.g. 999999)
  source: String,       // Tag asal platform (Contoh: 'IG', 'FB')
  verified: Boolean     // Lencana centang biru profil (true / false)
}

C. Properti Objek addPost

{
  profile_url: String,  // Foto avatar profil
  username: String,     // Nama akun
  title: String,        // Judul postingan
  subtitle: String,     // Sub-judul / detail lokasi
  caption: String,      // Deskripsi status postingan
  verified: Boolean,    // Status verifikasi centang biru
  url: String,          // Tautan utama postingan
  thumbnail: String,    // Gambar konten utama postingan
  source: String,       // Sumber platform: 'INSTAGRAM', 'FACEBOOK', 'THREADS', dsb.
  footer: String,       // Catatan kaki di dalam frame post
  deeplink: String,     // Tautan langsung aplikasi internal
  icon: String,         // Ikon kecil platform pendukung
  orientation: String,  // Orientasi layout gambar: 'LANDSCAPE' atau 'PORTRAIT'
  post_type: String,    // Tipe postingan: 'PHOTO' atau 'VIDEO'
  comment: Number,      // Statistik Jumlah Komentar
  share: Number,        // Statistik Jumlah Bagikan
  like: Number          // Statistik Jumlah Suka
}

📖 Contoh Penggunaan & Implementasi Kode

@ryuu-reinzz/luna-lib menyediakan dua metode penggunaan: menggunakan sock.messageBuilder(jid) (Sangat Direkomendasikan karena mendukung penulisan rantai metode langsung) atau menginisialisasi kelasnya secara mandiri via operator new.

🔄 Sintaks Pembungkus (Wrapper Syntax) messageBuilder

Pembungkus pintar ini mengekspos semua metode kelas target secara dinamis setelah tipe ditentukan.

// Contoh pola pemanggilan umum via messageBuilder
await sock.messageBuilder(m.chat, { quoted: m })
    .setType("Button") // Menerima: "Button" | "ButtonV2" | "Carousel" | "AIRich"
    .setTitle("Judul")
    .setBody("Isi Pesan")
    .addReply("Tombol 1", "id_1")
    .send();

1. Kelas Button (Native Flow Message)

Pembuatan komponen tombol canggih WhatsApp (Native Flow Components) lengkap dengan penyesuaian ikon interaktif.

💻 Contoh Menggunakan Operator new:

await new Button(conn)
	.setTitle('🚀 Ryuu')
	.setSubtitle('Interactive Message')
	.setBody('Pilih menu di bawah')
	.setFooter('© Ryuu')
	.setImage('[https://cdn.ornzora.eu.cc/b57c0d1e-d7a6-4277-8739-8f6b1d9894e6-FIORA.jpg](https://cdn.ornzora.eu.cc/b57c0d1e-d7a6-4277-8739-8f6b1d9894e6-FIORA.jpg)')
	.addReply('📦 Menu', '.menu', { icon: 'DEFAULT' })
	.addReply('👤 Profile', '.profile', { icon: 'REVIEW' })
	.addUrl('🌐 Website', '[https://example.com](https://example.com)', true, { icon: 'PROMOTION' })
	.addCopy('📋 Copy Code', 'NIX-2026', { icon: 'DOCUMENT' })
	.addSelection('📚 Pilih Kategori')
	.makeSection('Main Menu')
	.makeRow('🔥 HOT', 'Downloader', 'Download social media', '.dl')
	.makeRow('⚡ FAST', 'AI Chat', 'Chat dengan AI', '.ai')
	.send(m.chat, { quoted: m });

🔄 Menggunakan messageBuilder:

await sock.messageBuilder(m.chat, { quoted: m })
	.setType('Button')
	.setTitle('🚀 Ryuu')
	.setSubtitle('Interactive Message')
	.setBody('Pilih menu di bawah')
	.addReply('📦 Menu', '.menu', { icon: 'DEFAULT' })
	.addSelection('📚 Pilih Kategori')
	.makeSection('Main Menu')
	.makeRow('🔥 HOT', 'Downloader', 'Download social media', '.dl')
	.send();

2. Kelas ButtonV2 (Classic Buttons)

Formulasi alternatif tombol interaktif klasik berbasis location data fallback dan rendering thumbnail instan.

💻 Contoh Menggunakan Operator new:

await new ButtonV2(conn)
	.setTitle('🚀 Ryuu')
	.setSubtitle('Buttons Message')
	.setBody('Halo dunia')
	.setFooter('Footer Message')
	.setThumbnail('[https://cdn.ornzora.eu.cc/4d2905ce-3707-4ec0-998a-68a3d851629f-FIORA.jpg](https://cdn.ornzora.eu.cc/4d2905ce-3707-4ec0-998a-68a3d851629f-FIORA.jpg)')
	.addButton('📦 Menu', '.menu')
	.addButton('👤 Profile', '.profile')
	.send(m.chat);

🔄 Menggunakan messageBuilder:

await sock.messageBuilder(m.chat)
	.setTitle('🚀 Ryuu')
	.setSubtitle('Buttons Message')
	.setBody('Halo dunia')
	.setFooter('Footer Message')
	.setThumbnail(https://cdn.ornzora.eu.cc/4d2905ce-3707-4ec0-998a-68a3d851629f-FIORA.jpg')
	.addButton('📦 Menu', '.menu')
	.addButton('👤 Profile', '.profile')
	.send();

3. Kelas Carousel (Interactive Cards Slider)

Mengirimkan beberapa kartu media interaktif horizontal yang dapat digeser (swipe) oleh pengguna menggunakan fungsionalitas penarikan .toCard().

💻 Contoh Menggunakan Operator new:

await new Carousel(conn)
	.setBody('🛍️ Product List')
	.setFooter('Swipe untuk lihat')
	.addCard(
		await new Button(conn)
			.setTitle('🍔 Burger')
			.setBody('Burger terenak')
			.setFooter('$5')
			.setImage('https://cdn.ornzora.eu.cc/36df8c36-c74e-4dc2-bc03-87893f373cb4-FIORA.jpg')
			.addReply('🛒 Buy', '.buy burger')
			.toCard()
	)
	.addCard(
		await new Button(conn)
			.setTitle('🍕 Pizza')
			.setBody('Pizza mozzarella')
			.setFooter('$7')
			.setImage('https://cdn.ornzora.eu.cc/36df8c36-c74e-4dc2-bc03-87893f373cb4-FIORA.jpg')
			.addReply('🛒 Buy', '.buy pizza')
			.toCard()
	)
	.send(m.chat, { quoted: m });

🔄 Menggunakan messageBuilder:

await sock.messageBuilder(m.chat, { quoted: m })
	.setBody('🛍️ Product List')
	.setFooter('Swipe untuk lihat')
	.addCard(
		await new Button(conn)
			.setTitle('🍔 Burger')
			.setBody('Burger terenak')
			.setFooter('$5')
			.setImage('https://cdn.ornzora.eu.cc/36df8c36-c74e-4dc2-bc03-87893f373cb4-FIORA.jpg')
			.addReply('🛒 Buy', '.buy burger')
			.toCard()
	)
	.addCard(
		await new Button(conn)
			.setTitle('🍕 Pizza')
			.setBody('Pizza mozzarella')
			.setFooter('$7')
			.setImage('https://cdn.ornzora.eu.cc/36df8c36-c74e-4dc2-bc03-87893f373cb4-FIORA.jpg')
			.addReply('🛒 Buy', '.buy pizza')
			.toCard()
	)
	.send();

4. Kelas AIRich (Meta AI Response Styles)

Fitur premium berkelas tinggi untuk mereplikasi visualisasi platform Meta AI di WhatsApp resmi (Tabel data, Pewarnaan kode sintaks, Rendering rumus gambar LaTeX, Layout Reels, Galeri grid, Showcase produk komersial, & Social Post mockup).

Panduan Khusus Ekstraksi Sintaks Teks addText:

  • Hyperlink: Teks Di Sini -> Contoh: Google
  • Auto Citation: -> Contoh:
  • LaTeX Render Engine: [Identifier|Width|Height|Font_Height|Padding]<url_gambar> -> Contoh: [Shiroko|1429|1897]https://cdn.link.png

💻 Contoh Menggunakan Operator new:

await new AIRich(sock)
    .setType('AIRich')
    .setTitle('🚀 Ryuu')
    .setFooter('© Haruka')   
    .addSuggest(['Ryuu', 'Ryuu', 'Haruka'])    
    .addTip('Ini adalah text tip (Metadata Text)')
    .addText(`# Halo Dunia
=={ Yellow Text }==

Ini hyperlink:
[Google](https://google.com)

Ini auto citation:
[](https://openai.com)

Ini LaTeX:
[Shiroko|1429|1897]<https://cdn.ornzora.eu.cc/a3a756f2-6bb8-4814-a024-c325524a2308-FIORA.png>`)
    .addProduct({
        title: 'Nama Produk', 
        brand: 'Ryuu', 
        price: 'Rp 1000', 
        sale_price: 'Rp 0',
        product_url: 'https://wa.me/6288246552068', 
        icon_url: "https://static.nike.com/a/images/t_PDP_1280_v1/f_auto,q_auto:eco/additional_image_1.png",
        image_url: 'https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-10.jpg'
    })
    .addCode('javascript', `class Ryuu {
	static hello() {
		return 'Hello World';
	}
}`)
   .addText('HScroll Product (Array of Object Input):') 
   .addProduct(Array(5).fill({
		title: global.namabot, 
		brand: 'Ryuu', 
		price: 'Rp 1000', 
		sale_price: 'Rp 0', 
		url: 'https://wa.me/6288246552068', 
		icon: "https://static.nike.com/a/images/t_PDP_1280_v1/f_auto,q_auto:eco/additional_image_1.png", 
		image: "https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-10.jpg"
	}))
    .addTable([
        ['Nama', 'Role'],
        ['Ryuu', 'Developer'],
        ['Haruka', 'Assistant']
    ])
    .addSource([
        ['https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-09.jpg', 'https://github.com/reinzz556/', 'GitHub'],
        ['https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-09.jpg', 'https://api.ryuu-dev.my.id/', 'Haruka Botz']
    ])
    .addImage('https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-07.jpg')
    .addVideo("https://api.ryuu-dev.my.id/2026-06-01-064748592.mp4|10")
    .addReels(Array(5).fill({
        username: 'Ryuu',
        profile_url: 'https://api.ryuu-dev.my.id/logo.png',
        thumbnail: 'https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-08.jpg',
        url: 'https://api.ryuu-dev.my.id/',
        title: 'Demo Reel',
        like: 12000,
        share: 500,
        view: 999999,
        source: 'IG',
        verified: true
    }))
    .addPost(Array(5).fill({
        profile_url: "https://api.ryuu-dev.my.id/logo.png",
        username: 'Ryuu',
        title: "Demo Post",
        subtitle: 'Ryuu',
        caption: 'hii~ im haruka, just quietly observing things around here.',
        verified: true,
        url: 'https://api.ryuu-dev.my.id/',
        thumbnail: 'https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-07.jpg',
        source: 'INSTAGRAM',
        footer: 'Haruka',
        deeplink: 'https://api.ryuu-dev.my.id/',
        icon: "https://api.ryuu-dev.my.id/logo.png",
        orientation: 'LANDSCAPE',
        post_type: 'PHOTO',
        comment: 1,
        share: 1,
        like: 1
    }))
    .send(m.chat, { quoted: m });

🔄 Menggunakan messageBuilder:

await sock.messageBuilder(m.chat, { quoted: m })
    .setType('AIRich')
    .setTitle('🚀 Ryuu')
    .setFooter('© Haruka')   
    .addSuggest(['Ryuu', 'Ryuu', 'Haruka'])    
    .addTip('Ini adalah text tip (Metadata Text)')
    .addText(`# Halo Dunia
=={ Yellow Text }==

Ini hyperlink:
[Google](https://google.com)

Ini auto citation:
[](https://openai.com)

Ini LaTeX:
[Shiroko|1429|1897]<https://cdn.ornzora.eu.cc/a3a756f2-6bb8-4814-a024-c325524a2308-FIORA.png>`)
    .addProduct({
        title: 'Nama Produk', 
        brand: 'Ryuu', 
        price: 'Rp 1000', 
        sale_price: 'Rp 0',
        product_url: 'https://wa.me/6288246552068', 
        icon_url: "https://static.nike.com/a/images/t_PDP_1280_v1/f_auto,q_auto:eco/additional_image_1.png",
        image_url: 'https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-10.jpg'
    })
    .addCode('javascript', `class Ryuu {
	static hello() {
		return 'Hello World';
	}
}`)
   .addText('HScroll Product (Array of Object Input):') 
   .addProduct(Array(5).fill({
		title: global.namabot, 
		brand: 'Ryuu', 
		price: 'Rp 1000', 
		sale_price: 'Rp 0', 
		url: 'https://wa.me/6288246552068', 
		icon: "https://static.nike.com/a/images/t_PDP_1280_v1/f_auto,q_auto:eco/additional_image_1.png", 
		image: "https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-10.jpg"
	}))
    .addTable([
        ['Nama', 'Role'],
        ['Ryuu', 'Developer'],
        ['Haruka', 'Assistant']
    ])
    .addSource([
        ['https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-09.jpg', 'https://github.com/reinzz556/', 'GitHub'],
        ['https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-09.jpg', 'https://api.ryuu-dev.my.id/', 'Haruka Botz']
    ])
    .addImage('https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-07.jpg')
    .addVideo("https://api.ryuu-dev.my.id/2026-06-01-064748592.mp4|10")
    .addReels(Array(5).fill({
        username: 'Ryuu',
        profile_url: 'https://api.ryuu-dev.my.id/logo.png',
        thumbnail: 'https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-08.jpg',
        url: 'https://api.ryuu-dev.my.id/',
        title: 'Demo Reel',
        like: 12000,
        share: 500,
        view: 999999,
        source: 'IG',
        verified: true
    }))
    .addPost(Array(5).fill({
        profile_url: "https://api.ryuu-dev.my.id/logo.png",
        username: 'Ryuu',
        title: "Demo Post",
        subtitle: 'Ryuu',
        caption: 'hii~ im haruka, just quietly observing things around here.',
        verified: true,
        url: 'https://api.ryuu-dev.my.id/',
        thumbnail: 'https://api.ryuu-dev.offc.my.id/src/assest/mahiru/Mahiru-07.jpg',
        source: 'INSTAGRAM',
        footer: 'Haruka',
        deeplink: 'https://api.ryuu-dev.my.id/',
        icon: "https://api.ryuu-dev.my.id/logo.png",
        orientation: 'LANDSCAPE',
        post_type: 'PHOTO',
        comment: 1,
        share: 1,
        like: 1
    }))
    .send();

🔌 Prototip Tambahan Socket (sock.*)

@ryuu-reinzz/luna-lib secara otomatis menyuntikkan fungsi pembantu tingkat tinggi ke dalam variabel socket Baileys Anda melalui method addProperty:

A. sock.sendAlbum(jid, items, options)

Mengirimkan album galeri media terkompresi (kumpulan gambar/video) dalam satu kesatuan pesan tanpa berantakan.

await sock.sendAlbum(m.chat, [
    { image: { url: "https://placehold.co/600x400.png" }, caption: "Foto Keren 1" },
    { image: { url: "https://placehold.co/600x400.png" }, caption: "Foto Keren 2" }
], { quoted: m });

B. sock.sendStickerPack(jid, packData, options)

Mengirimkan file webp secara massal berwujud Paket Stiker Resmi (Third Party Sticker Pack).

await sock.sendStickerPack(m.chat, {
    name: "Stiker Pack Haruka V2",
    publisher: "RyuuReinzz Dev",
    description: "Kumpulan stiker interaktif buatan bot",
    cover: Buffer.from("..."), // Buffer gambar untuk cover kemasan stiker
    stickers: [
        { data: fs.readFileSync("./sticker1.webp"), emojis: ["🤣", "🔥"] },
        { data: fs.readFileSync("./sticker2.webp"), emojis: ["❤️"] }
    ]
});

C. sock.sendOrder(jid, orderData, options)

Mengirim kartu transaksi pesanan komersial formal katalog bisnis.

await sock.sendOrder(m.chat, {
    orderId: "ORDER-ID-99823",
    itemCount: 2,
    status: 1, // INQUIRY
    orderTitle: "Pembelian Source Code Haruka Bot",
    message: "Terima kasih telah berbelanja, mohon tunggu verifikasi pembayaran QRIS Midtrans.",
    totalAmount1000: 350000000, // Rp 350.000
    totalCurrencyCode: "IDR",
    thumbnail: "https://img.jpg" // Gambar produk terlampir
});

D. Konversi ID: sock.getPNFromLid & sock.getLidFromPN

Digunakan untuk menukarkan identitas terenkripsi WhatsApp terbaru (LID ID ke Nomor Telepon asli atau sebaliknya) dalam interaksi grup.

// Mengambil nomor telepon dari LID akun di grup
const phoneNumber = await sock.getPNFromLid(m, "123xxxx@lid");
console.log("Nomor Telepon Asli Pengguna:", phoneNumber);
// Mengambil LID dari nomor telepon akun di grup
const lid = await sock.getLidFromPN(m, "[email protected]");
console.log("LID Dari Pengguna:", lid);

⚠️ Ketentuan Penggunaan & Lisensi (Terms of Use)

  1. Izin Penggunaan: Anda diberikan izin penuh untuk menggunakan dan memodifikasi library ini untuk proyek pribadi maupun kebutuhan komersial Anda sendiri.
  2. Larangan Keras: Dilarang keras mengunggah ulang (reuploading), menjual kembali (reselling), melisensikan ulang (relicensing), atau mendistribusikan pustaka ini sebagai produk mandiri (standalone product) tanpa izin tertulis dari RyuuReinzz.
  3. Klaim Hak Cipta: Dilarang mengklaim proyek orisinal ini sebagai hasil karya murni Anda sendiri. Hormati hak kekayaan intelektual pemilik kode dengan tetap mempertahankan informasi kredit pembuka.