@nuiisweety/baileys 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +679 -3
- package/README.md.bak +410 -476
- package/lib/Socket/index.js +4 -4
- package/lib/Socket/index.js.bak +6 -6
- package/lib/Types/RichType.js +1 -1
- package/lib/Types/RichType.js.bak +23 -0
- package/lib/Utils/rich-message-utils.js +545 -140
- package/lib/Utils/rich-message-utils.js.bak +246 -0
- package/lib/WABinary/constants.js +102 -0
- package/lib/WABinary/constants.js.bak +1373 -0
- package/package.json +1 -1
package/README.md.bak
CHANGED
|
@@ -1,62 +1,64 @@
|
|
|
1
|
-
<h1 align="center"
|
|
1
|
+
<h1 align="center">✨@nuiisweety/baileys</h1>
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
|
-
<img src="https://raw.githubusercontent.com/NuiiS4TORU/-nuisockets/refs/heads/main/
|
|
4
|
+
<img src="https://raw.githubusercontent.com/NuiiS4TORU/-nuisockets/refs/heads/main/nuiisweety.png" width="100%"/>
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
7
|
<div align="center">
|
|
8
|
-
Fork dari <code>@whiskeysockets/baileys</code> v7.0.0-rc11 —
|
|
8
|
+
<i>✨ Fork manis dari <code>@whiskeysockets/baileys</code> v7.0.0-rc11 — dikembangkan dengan sepenuh hati oleh <b>NuiiS4TORU</b> 💖</i>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
|
+
<br/>
|
|
12
|
+
|
|
11
13
|
<div align="center">
|
|
12
14
|
<blockquote>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
🌷 <b>@nuiisweety/baileys hanya pernah bercabang dari satu sumber yang ia percaya, yaitu <a href="https://github.com/WhiskeySockets/Baileys">@whiskeysockets/baileys</a>.</b><br/>
|
|
16
|
+
Setiap modifikasi adalah buah dari pengembangan mandiri yang penuh dedikasi~ 🍀
|
|
15
17
|
</blockquote>
|
|
16
18
|
</div>
|
|
17
19
|
|
|
18
20
|
---
|
|
19
21
|
|
|
20
|
-
##
|
|
22
|
+
## 🗺️ Navigasi Sayang
|
|
21
23
|
|
|
22
24
|
<div align="center">
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
[QR Code](#-koneksi-qr-code) · [Pairing Code](#-koneksi-pairing-code) · [Browser Identity](
|
|
26
|
+
**🔌 Koneksi**
|
|
27
|
+
[QR Code](#-koneksi-qr-code) · [Pairing Code](#-koneksi-pairing-code) · [Browser Identity](#️-browser-identity) · [Opsi Koneksi](#️-opsi-koneksi)
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
**📨 Handle Pesan**
|
|
28
30
|
[Terima Pesan](#-terima-pesan) · [Handle Grup](#-handle-grup)
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
[Teks](#-teks) · [Gambar](
|
|
32
|
+
**💌 Kirim Pesan**
|
|
33
|
+
[Teks](#-teks) · [Gambar](#️-gambar) · [Video](#-video) · [Audio & Voice Note](#-audio--voice-note) · [Dokumen](#-dokumen) · [Sticker](#-sticker) · [Lokasi](#-lokasi) · [Kontak](#-kontak)
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
[Reaksi](#-reaksi) · [Poll](
|
|
35
|
+
**💞 Interaksi**
|
|
36
|
+
[Reaksi](#-reaksi) · [Poll](#️-poll) · [Poll Result](#-poll-result) · [Poll Update](#️-poll-update) · [Forward](#️-forward) · [Hapus](#️-hapus-pesan) · [Edit](#️-edit-pesan) · [Pin](#-pin-pesan)
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
[Album](
|
|
38
|
+
**🌺 Tambahan**
|
|
39
|
+
[Album](#️-album) · [Event](#-event) · [Group Status](#-group-status--group-story) · [Status Mention](#️-status-mention) · [Flow Reply](#-flow-reply) · [Button Reply](#-button-reply) · [Keep In Chat](#-keep-in-chat) · [Scheduled Call](#-scheduled-call) · [Group Invite](#-group-invite) · [Product](#️-product)
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
[View Once](
|
|
41
|
+
**🎀 Wrapper**
|
|
42
|
+
[View Once](#️-view-once) · [View Once V2](#️-view-once-v2) · [Ephemeral](#️-ephemeral) · [Spoiler](#-spoiler) · [Group Status Wrap](#-group-status-wrap) · [Lottie Sticker](#-lottie-sticker) · [AI Icon](#-ai-icon) · [Secure Meta Label](#️-secure-meta-service-label)
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
[Buttons](#-buttons) · [List Message](#-list-message) · [Template Buttons](
|
|
44
|
+
**✨ Interactive**
|
|
45
|
+
[Buttons](#-buttons) · [List Message](#-list-message) · [Template Buttons](#️-template-buttons) · [Native Flow](#-native-flow) · [Carousel](#-carousel)
|
|
44
46
|
|
|
45
|
-
|
|
47
|
+
**🌟 Rich Message (AI)**
|
|
46
48
|
[Code Block](#-code-block) · [Links](#-links-rich) · [Table](#-table-rich) · [Rich Response (Gabungan)](#-rich-response-gabungan)
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
**🍃 Lainnya**
|
|
49
51
|
[List Reply](#-list-reply) · [Sticker Pack](#-sticker-pack) · [External Ad Reply](#-external-ad-reply) · [Request Payment](#-request-payment) · [Invoice](#-invoice) · [Order](#-order) · [Disappearing Messages](#-disappearing-messages) · [Raw Message](#-raw-message)
|
|
50
52
|
|
|
51
53
|
</div>
|
|
52
54
|
|
|
53
55
|
---
|
|
54
56
|
|
|
55
|
-
## Instalasi
|
|
57
|
+
## 🌸 Instalasi
|
|
56
58
|
|
|
57
59
|
```js
|
|
58
60
|
const { default: makeWASocket } = require('@nuiisweety/baileys')
|
|
59
|
-
// atau ESM
|
|
61
|
+
// atau ESM 🌿
|
|
60
62
|
import makeWASocket from '@nuiisweety/baileys'
|
|
61
63
|
```
|
|
62
64
|
|
|
@@ -88,7 +90,7 @@ async function start() {
|
|
|
88
90
|
const code = lastDisconnect?.error?.output?.statusCode
|
|
89
91
|
if (code !== DisconnectReason.loggedOut) start()
|
|
90
92
|
} else if (connection === 'open') {
|
|
91
|
-
console.log('
|
|
93
|
+
console.log('💖 Terhubung dengan indah!')
|
|
92
94
|
}
|
|
93
95
|
})
|
|
94
96
|
}
|
|
@@ -99,7 +101,7 @@ start()
|
|
|
99
101
|
|
|
100
102
|
## 🔑 Koneksi Pairing Code
|
|
101
103
|
|
|
102
|
-
|
|
104
|
+
> 🌷 Cocok untuk server/VPS tanpa tampilan terminal — tetap bisa terhubung dengan elegan~
|
|
103
105
|
|
|
104
106
|
```js
|
|
105
107
|
const sock = makeWASocket({
|
|
@@ -115,19 +117,19 @@ sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {
|
|
|
115
117
|
}
|
|
116
118
|
})
|
|
117
119
|
|
|
118
|
-
// Nomor HP format internasional tanpa +
|
|
120
|
+
// 💌 Nomor HP format internasional tanpa +
|
|
119
121
|
if (!sock.authState.creds.registered) {
|
|
120
122
|
const code = await sock.requestPairingCode('628123456789')
|
|
121
|
-
console.log('Pairing code:', code)
|
|
123
|
+
console.log('🌸 Pairing code:', code)
|
|
122
124
|
// Masukkan di WA → Perangkat Tertaut → Tautkan Perangkat
|
|
123
125
|
}
|
|
124
126
|
```
|
|
125
127
|
|
|
126
|
-
> Pairing code kadaluarsa dalam beberapa menit. Jalankan ulang jika gagal
|
|
128
|
+
> 🍀 Pairing code kadaluarsa dalam beberapa menit. Jalankan ulang jika gagal ya~
|
|
127
129
|
|
|
128
|
-
|
|
130
|
+
**🎀 Custom pairing code (8 karakter):**
|
|
129
131
|
```js
|
|
130
|
-
const code = await sock.requestPairingCode('628123456789', '
|
|
132
|
+
const code = await sock.requestPairingCode('628123456789', 'NUYY2822')
|
|
131
133
|
```
|
|
132
134
|
|
|
133
135
|
---
|
|
@@ -138,12 +140,12 @@ const code = await sock.requestPairingCode('628123456789', 'ABCD1234')
|
|
|
138
140
|
const { Browsers } = require('@nuiisweety/baileys')
|
|
139
141
|
|
|
140
142
|
makeWASocket({
|
|
141
|
-
browser: Browsers.macOS('Chrome'), // Mac OS — Chrome
|
|
142
|
-
browser: Browsers.macOS('Firefox'), // Mac OS — Firefox
|
|
143
|
-
browser: Browsers.windows('Chrome'), // Windows — Chrome
|
|
144
|
-
browser: Browsers.ubuntu('Chrome'), // Ubuntu — Chrome
|
|
145
|
-
browser: Browsers.baileys('Chrome'), // Baileys — Chrome
|
|
146
|
-
browser: ['MyBot', 'Chrome', '1.0.0'] // custom
|
|
143
|
+
browser: Browsers.macOS('Chrome'), // 🍎 Mac OS — Chrome
|
|
144
|
+
browser: Browsers.macOS('Firefox'), // 🦊 Mac OS — Firefox
|
|
145
|
+
browser: Browsers.windows('Chrome'), // 🪟 Windows — Chrome
|
|
146
|
+
browser: Browsers.ubuntu('Chrome'), // 🐧 Ubuntu — Chrome
|
|
147
|
+
browser: Browsers.baileys('Chrome'), // 🌸 Baileys — Chrome
|
|
148
|
+
browser: ['MyBot', 'Chrome', '1.0.0'] // ✨ custom
|
|
147
149
|
})
|
|
148
150
|
```
|
|
149
151
|
|
|
@@ -183,17 +185,17 @@ sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
|
183
185
|
const isGroup = jid.endsWith('@g.us')
|
|
184
186
|
const sender = isGroup ? m.key.participant : jid
|
|
185
187
|
|
|
186
|
-
// Ambil teks
|
|
188
|
+
// 💬 Ambil teks
|
|
187
189
|
const text =
|
|
188
190
|
m.message.conversation ||
|
|
189
191
|
m.message.extendedTextMessage?.text ||
|
|
190
192
|
m.message.imageMessage?.caption ||
|
|
191
193
|
m.message.videoMessage?.caption || ''
|
|
192
194
|
|
|
193
|
-
// Tandai dibaca
|
|
195
|
+
// 👀 Tandai dibaca
|
|
194
196
|
await sock.readMessages([m.key])
|
|
195
197
|
|
|
196
|
-
// Typing indicator
|
|
198
|
+
// 🌸 Typing indicator
|
|
197
199
|
await sock.sendPresenceUpdate('composing', jid)
|
|
198
200
|
}
|
|
199
201
|
})
|
|
@@ -204,36 +206,36 @@ sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
|
204
206
|
## 👥 Handle Grup
|
|
205
207
|
|
|
206
208
|
```js
|
|
207
|
-
// Anggota masuk/keluar
|
|
209
|
+
// 🌷 Anggota masuk/keluar
|
|
208
210
|
sock.ev.on('group-participants.update', ({ id, participants, action }) => {
|
|
209
211
|
// action: 'add' | 'remove' | 'promote' | 'demote'
|
|
210
212
|
})
|
|
211
213
|
|
|
212
|
-
// Info grup diupdate
|
|
214
|
+
// 📝 Info grup diupdate
|
|
213
215
|
sock.ev.on('groups.update', updates => {})
|
|
214
216
|
|
|
215
|
-
// Metadata grup
|
|
217
|
+
// 🔍 Metadata grup
|
|
216
218
|
const meta = await sock.groupMetadata(groupJid)
|
|
217
219
|
console.log(meta.subject, meta.participants)
|
|
218
220
|
|
|
219
|
-
// Semua grup
|
|
221
|
+
// 🌸 Semua grup
|
|
220
222
|
const groups = await sock.groupFetchAllParticipating()
|
|
221
223
|
|
|
222
|
-
// Tambah / keluarkan / promote / demote
|
|
224
|
+
// 💞 Tambah / keluarkan / promote / demote
|
|
223
225
|
await sock.groupParticipantsUpdate(groupJid, ['628xxx@s.whatsapp.net'], 'add')
|
|
224
226
|
await sock.groupParticipantsUpdate(groupJid, ['628xxx@s.whatsapp.net'], 'remove')
|
|
225
227
|
await sock.groupParticipantsUpdate(groupJid, ['628xxx@s.whatsapp.net'], 'promote')
|
|
226
228
|
await sock.groupParticipantsUpdate(groupJid, ['628xxx@s.whatsapp.net'], 'demote')
|
|
227
229
|
|
|
228
|
-
// Ubah nama / deskripsi
|
|
230
|
+
// ✏️ Ubah nama / deskripsi
|
|
229
231
|
await sock.groupUpdateSubject(groupJid, 'Nama Baru')
|
|
230
232
|
await sock.groupUpdateDescription(groupJid, 'Deskripsi baru')
|
|
231
233
|
|
|
232
|
-
// Kunci / buka grup
|
|
234
|
+
// 🔒 Kunci / buka grup
|
|
233
235
|
await sock.groupSettingUpdate(groupJid, 'announcement')
|
|
234
236
|
await sock.groupSettingUpdate(groupJid, 'not_announcement')
|
|
235
237
|
|
|
236
|
-
// Mention semua anggota
|
|
238
|
+
// 📣 Mention semua anggota
|
|
237
239
|
const meta2 = await sock.groupMetadata(groupJid)
|
|
238
240
|
const members = meta2.participants.map(p => p.id)
|
|
239
241
|
await sock.sendMessage(groupJid, {
|
|
@@ -247,9 +249,9 @@ await sock.sendMessage(groupJid, {
|
|
|
247
249
|
## 💬 Teks
|
|
248
250
|
|
|
249
251
|
```js
|
|
250
|
-
await sock.sendMessage(jid, { text: 'Halo
|
|
252
|
+
await sock.sendMessage(jid, { text: 'Halo sayang~ 🌸' })
|
|
251
253
|
|
|
252
|
-
// Dengan mention
|
|
254
|
+
// 💌 Dengan mention
|
|
253
255
|
await sock.sendMessage(jid, {
|
|
254
256
|
text: '@628xxx halo!',
|
|
255
257
|
mentions: ['628xxx@s.whatsapp.net']
|
|
@@ -261,16 +263,16 @@ await sock.sendMessage(jid, {
|
|
|
261
263
|
## 🖼️ Gambar
|
|
262
264
|
|
|
263
265
|
```js
|
|
264
|
-
// URL
|
|
266
|
+
// 🌐 URL
|
|
265
267
|
await sock.sendMessage(jid, {
|
|
266
268
|
image: { url: 'https://example.com/image.jpg' },
|
|
267
|
-
caption: 'Keterangan'
|
|
269
|
+
caption: 'Keterangan 🌷'
|
|
268
270
|
})
|
|
269
271
|
|
|
270
|
-
// Buffer / file
|
|
272
|
+
// 📁 Buffer / file
|
|
271
273
|
await sock.sendMessage(jid, {
|
|
272
274
|
image: fs.readFileSync('image.jpg'),
|
|
273
|
-
caption: 'Keterangan'
|
|
275
|
+
caption: 'Keterangan 💖'
|
|
274
276
|
})
|
|
275
277
|
```
|
|
276
278
|
|
|
@@ -281,11 +283,11 @@ await sock.sendMessage(jid, {
|
|
|
281
283
|
```js
|
|
282
284
|
await sock.sendMessage(jid, {
|
|
283
285
|
video: { url: 'https://example.com/video.mp4' },
|
|
284
|
-
caption: 'Keterangan',
|
|
285
|
-
gifPlayback: false // true = GIF looping
|
|
286
|
+
caption: 'Keterangan 🌸',
|
|
287
|
+
gifPlayback: false // true = GIF looping 🔁
|
|
286
288
|
})
|
|
287
289
|
|
|
288
|
-
// Video note (bubble)
|
|
290
|
+
// 🎞️ Video note (bubble)
|
|
289
291
|
await sock.sendMessage(jid, {
|
|
290
292
|
video: fs.readFileSync('video.mp4'),
|
|
291
293
|
ptv: true
|
|
@@ -297,13 +299,13 @@ await sock.sendMessage(jid, {
|
|
|
297
299
|
## 🎵 Audio & Voice Note
|
|
298
300
|
|
|
299
301
|
```js
|
|
300
|
-
// Audio biasa
|
|
302
|
+
// 🎶 Audio biasa
|
|
301
303
|
await sock.sendMessage(jid, {
|
|
302
304
|
audio: { url: 'https://example.com/audio.mp3' },
|
|
303
305
|
mimetype: 'audio/mpeg'
|
|
304
306
|
})
|
|
305
307
|
|
|
306
|
-
// Voice note (PTT)
|
|
308
|
+
// 🎙️ Voice note (PTT)
|
|
307
309
|
await sock.sendMessage(jid, {
|
|
308
310
|
audio: fs.readFileSync('voice.ogg'),
|
|
309
311
|
mimetype: 'audio/ogg; codecs=opus',
|
|
@@ -320,7 +322,7 @@ await sock.sendMessage(jid, {
|
|
|
320
322
|
document: fs.readFileSync('file.pdf'),
|
|
321
323
|
mimetype: 'application/pdf',
|
|
322
324
|
fileName: 'dokumen.pdf',
|
|
323
|
-
caption: 'File ini'
|
|
325
|
+
caption: 'File ini 🍃'
|
|
324
326
|
})
|
|
325
327
|
```
|
|
326
328
|
|
|
@@ -343,7 +345,7 @@ await sock.sendMessage(jid, {
|
|
|
343
345
|
location: {
|
|
344
346
|
degreesLatitude: -6.2088,
|
|
345
347
|
degreesLongitude: 106.8456,
|
|
346
|
-
name: 'Monas',
|
|
348
|
+
name: 'Monas 🌟',
|
|
347
349
|
address: 'Jakarta Pusat'
|
|
348
350
|
}
|
|
349
351
|
})
|
|
@@ -356,7 +358,7 @@ await sock.sendMessage(jid, {
|
|
|
356
358
|
```js
|
|
357
359
|
await sock.sendMessage(jid, {
|
|
358
360
|
contacts: {
|
|
359
|
-
displayName: 'Nama',
|
|
361
|
+
displayName: 'Nama 💕',
|
|
360
362
|
contacts: [{
|
|
361
363
|
vcard: 'BEGIN:VCARD\nVERSION:3.0\nFN:Nama\nTEL:+62812345678\nEND:VCARD'
|
|
362
364
|
}]
|
|
@@ -366,11 +368,11 @@ await sock.sendMessage(jid, {
|
|
|
366
368
|
|
|
367
369
|
---
|
|
368
370
|
|
|
369
|
-
##
|
|
371
|
+
## 😍 Reaksi
|
|
370
372
|
|
|
371
373
|
```js
|
|
372
|
-
await sock.sendMessage(jid, { react: { text: '
|
|
373
|
-
// Hapus reaksi
|
|
374
|
+
await sock.sendMessage(jid, { react: { text: '💖', key: m.key } })
|
|
375
|
+
// 🌸 Hapus reaksi
|
|
374
376
|
await sock.sendMessage(jid, { react: { text: '', key: m.key } })
|
|
375
377
|
```
|
|
376
378
|
|
|
@@ -381,36 +383,36 @@ await sock.sendMessage(jid, { react: { text: '', key: m.key } })
|
|
|
381
383
|
```js
|
|
382
384
|
await sock.sendMessage(jid, {
|
|
383
385
|
poll: {
|
|
384
|
-
name: 'Pilih salah satu
|
|
385
|
-
values: ['Opsi A', 'Opsi B', 'Opsi C'],
|
|
386
|
-
selectableCount: 1 // 0 = boleh pilih banyak
|
|
386
|
+
name: 'Pilih salah satu~ 🌷',
|
|
387
|
+
values: ['Opsi A 🌸', 'Opsi B 🌺', 'Opsi C 🌼'],
|
|
388
|
+
selectableCount: 1 // 0 = boleh pilih banyak 💞
|
|
387
389
|
}
|
|
388
390
|
})
|
|
389
391
|
```
|
|
390
392
|
|
|
391
|
-
|
|
393
|
+
**🌟 Poll dengan fitur tambahan:**
|
|
392
394
|
```js
|
|
393
395
|
await sock.sendMessage(jid, {
|
|
394
396
|
poll: {
|
|
395
|
-
name: 'Nama Poll',
|
|
397
|
+
name: 'Nama Poll 💌',
|
|
396
398
|
values: ['Opsi A', 'Opsi B'],
|
|
397
399
|
selectableCount: 1,
|
|
398
|
-
endDate: new Date('2025-12-31'), // tanggal berakhir
|
|
399
|
-
hideVoter: true, // sembunyikan nama pemilih
|
|
400
|
-
canAddOption: false, // larang tambah opsi
|
|
400
|
+
endDate: new Date('2025-12-31'), // 📅 tanggal berakhir
|
|
401
|
+
hideVoter: true, // 🙈 sembunyikan nama pemilih
|
|
402
|
+
canAddOption: false, // 🔒 larang tambah opsi
|
|
401
403
|
toAnnouncementGroup: false // true = community announcement group (pollV2)
|
|
402
404
|
}
|
|
403
405
|
})
|
|
404
406
|
```
|
|
405
407
|
|
|
406
|
-
|
|
408
|
+
**🧠 Quiz (Poll dengan jawaban benar):**
|
|
407
409
|
```js
|
|
408
410
|
await sock.sendMessage(jid, {
|
|
409
411
|
poll: {
|
|
410
|
-
name: 'Ibu kota Indonesia?',
|
|
412
|
+
name: 'Ibu kota Indonesia? 🌏',
|
|
411
413
|
values: ['Jakarta', 'Surabaya', 'Bandung'],
|
|
412
414
|
selectableCount: 1,
|
|
413
|
-
pollType: 1, // 1 = QUIZ
|
|
415
|
+
pollType: 1, // 1 = QUIZ 🎓
|
|
414
416
|
correctAnswer: 'Jakarta'
|
|
415
417
|
}
|
|
416
418
|
})
|
|
@@ -423,12 +425,12 @@ await sock.sendMessage(jid, {
|
|
|
423
425
|
```js
|
|
424
426
|
await sock.sendMessage(jid, {
|
|
425
427
|
pollResult: {
|
|
426
|
-
name: 'Nama Poll',
|
|
428
|
+
name: 'Nama Poll 🌸',
|
|
427
429
|
votes: [
|
|
428
|
-
{ name: 'Opsi A', voteCount: 10 },
|
|
429
|
-
{ name: 'Opsi B', voteCount: 5 }
|
|
430
|
+
{ name: 'Opsi A 💖', voteCount: 10 },
|
|
431
|
+
{ name: 'Opsi B 🌷', voteCount: 5 }
|
|
430
432
|
],
|
|
431
|
-
pollType: 0 // 0 = POLL, 1 = QUIZ
|
|
433
|
+
pollType: 0 // 0 = POLL, 1 = QUIZ 🎓
|
|
432
434
|
}
|
|
433
435
|
})
|
|
434
436
|
```
|
|
@@ -440,7 +442,7 @@ await sock.sendMessage(jid, {
|
|
|
440
442
|
```js
|
|
441
443
|
await sock.sendMessage(jid, {
|
|
442
444
|
pollUpdate: {
|
|
443
|
-
key: pollMessage.key, // key dari pesan poll yang mau di-vote
|
|
445
|
+
key: pollMessage.key, // 🗝️ key dari pesan poll yang mau di-vote
|
|
444
446
|
vote: encryptedVotePayload,
|
|
445
447
|
metadata: optionalMetadata
|
|
446
448
|
}
|
|
@@ -454,7 +456,7 @@ await sock.sendMessage(jid, {
|
|
|
454
456
|
```js
|
|
455
457
|
await sock.sendMessage(jid, {
|
|
456
458
|
forward: targetMessage,
|
|
457
|
-
force: true // paksa tampil sebagai forwarded
|
|
459
|
+
force: true // 💌 paksa tampil sebagai forwarded
|
|
458
460
|
})
|
|
459
461
|
```
|
|
460
462
|
|
|
@@ -472,7 +474,7 @@ await sock.sendMessage(jid, { delete: m.key })
|
|
|
472
474
|
|
|
473
475
|
```js
|
|
474
476
|
await sock.sendMessage(jid, {
|
|
475
|
-
text: 'Teks yang sudah diedit',
|
|
477
|
+
text: 'Teks yang sudah diedit dengan penuh kasih~ 🌸',
|
|
476
478
|
edit: m.key
|
|
477
479
|
})
|
|
478
480
|
```
|
|
@@ -482,13 +484,13 @@ await sock.sendMessage(jid, {
|
|
|
482
484
|
## 📌 Pin Pesan
|
|
483
485
|
|
|
484
486
|
```js
|
|
485
|
-
// Pin
|
|
487
|
+
// 📍 Pin
|
|
486
488
|
await sock.sendMessage(jid, {
|
|
487
489
|
pin: m.key,
|
|
488
490
|
type: 1,
|
|
489
|
-
time: 86400 // 86400=1hr | 604800=7hr | 2592000=30hr
|
|
491
|
+
time: 86400 // 86400=1hr 🕐 | 604800=7hr 🕰️ | 2592000=30hr 📆
|
|
490
492
|
})
|
|
491
|
-
// Unpin
|
|
493
|
+
// 🪄 Unpin
|
|
492
494
|
await sock.sendMessage(jid, { pin: m.key, type: 2 })
|
|
493
495
|
```
|
|
494
496
|
|
|
@@ -499,12 +501,12 @@ await sock.sendMessage(jid, { pin: m.key, type: 2 })
|
|
|
499
501
|
```js
|
|
500
502
|
await sock.sendMessage(jid, {
|
|
501
503
|
album: [
|
|
502
|
-
{ image: { url: 'https://example.com/1.jpg' }, caption: 'Foto 1' },
|
|
503
|
-
{ image: { url: 'https://example.com/2.jpg' }, caption: 'Foto 2' },
|
|
504
|
-
{ video: { url: 'https://example.com/vid.mp4' }, caption: 'Video' }
|
|
504
|
+
{ image: { url: 'https://example.com/1.jpg' }, caption: 'Foto 1 🌸' },
|
|
505
|
+
{ image: { url: 'https://example.com/2.jpg' }, caption: 'Foto 2 🌷' },
|
|
506
|
+
{ video: { url: 'https://example.com/vid.mp4' }, caption: 'Video 💕' }
|
|
505
507
|
]
|
|
506
508
|
})
|
|
507
|
-
// minimal 2 media
|
|
509
|
+
// 🌺 minimal 2 media ya~
|
|
508
510
|
```
|
|
509
511
|
|
|
510
512
|
---
|
|
@@ -514,27 +516,27 @@ await sock.sendMessage(jid, {
|
|
|
514
516
|
```js
|
|
515
517
|
await sock.sendMessage(jid, {
|
|
516
518
|
event: {
|
|
517
|
-
name: 'Nama Acara',
|
|
518
|
-
description: 'Deskripsi',
|
|
519
|
+
name: 'Nama Acara 🌟',
|
|
520
|
+
description: 'Deskripsi indah 🌸',
|
|
519
521
|
startDate: new Date('2025-12-01T10:00:00'),
|
|
520
522
|
endDate: new Date('2025-12-01T12:00:00'),
|
|
521
523
|
location: {
|
|
522
524
|
degreesLatitude: -6.2088,
|
|
523
525
|
degreesLongitude: 106.8456,
|
|
524
|
-
name: 'Monas, Jakarta'
|
|
526
|
+
name: 'Monas, Jakarta 🌆'
|
|
525
527
|
},
|
|
526
528
|
extraGuestsAllowed: true
|
|
527
529
|
}
|
|
528
530
|
})
|
|
529
531
|
```
|
|
530
532
|
|
|
531
|
-
|
|
533
|
+
**📞 Event dengan scheduled call (audio/video):**
|
|
532
534
|
```js
|
|
533
535
|
await sock.sendMessage(jid, {
|
|
534
536
|
event: {
|
|
535
|
-
name: 'Meeting Online',
|
|
537
|
+
name: 'Meeting Online 💻',
|
|
536
538
|
startDate: new Date('2025-12-01T10:00:00'),
|
|
537
|
-
call: 'audio', // 'audio' | 'video'
|
|
539
|
+
call: 'audio', // 🎙️ 'audio' | 📹 'video'
|
|
538
540
|
isScheduleCall: true
|
|
539
541
|
}
|
|
540
542
|
})
|
|
@@ -545,24 +547,24 @@ await sock.sendMessage(jid, {
|
|
|
545
547
|
## 📸 Group Status / Group Story
|
|
546
548
|
|
|
547
549
|
```js
|
|
548
|
-
// Teks
|
|
550
|
+
// 💬 Teks
|
|
549
551
|
await sock.sendMessage(groupJid, {
|
|
550
|
-
groupStatusMessage: { text: 'Status teks
|
|
552
|
+
groupStatusMessage: { text: 'Status teks yang manis~ 🌸' }
|
|
551
553
|
})
|
|
552
554
|
|
|
553
|
-
// Gambar
|
|
555
|
+
// 🖼️ Gambar
|
|
554
556
|
await sock.sendMessage(groupJid, {
|
|
555
557
|
groupStatusMessage: {
|
|
556
558
|
image: { url: 'https://example.com/image.jpg' },
|
|
557
|
-
caption: 'Keterangan'
|
|
559
|
+
caption: 'Keterangan 💖'
|
|
558
560
|
}
|
|
559
561
|
})
|
|
560
562
|
|
|
561
|
-
// Video
|
|
563
|
+
// 🎥 Video
|
|
562
564
|
await sock.sendMessage(groupJid, {
|
|
563
565
|
groupStatusMessage: {
|
|
564
566
|
video: { url: 'https://example.com/video.mp4' },
|
|
565
|
-
caption: 'Keterangan'
|
|
567
|
+
caption: 'Keterangan 🌷'
|
|
566
568
|
}
|
|
567
569
|
})
|
|
568
570
|
```
|
|
@@ -571,14 +573,14 @@ await sock.sendMessage(groupJid, {
|
|
|
571
573
|
|
|
572
574
|
## ⚡ Flow Reply
|
|
573
575
|
|
|
574
|
-
Balas pesan interaktif native flow
|
|
576
|
+
> 💫 Balas pesan interaktif native flow dengan anggun~
|
|
575
577
|
|
|
576
578
|
```js
|
|
577
579
|
await sock.sendMessage(jid, {
|
|
578
580
|
flowReply: {
|
|
579
|
-
name: 'quick_reply', // nama button yang ditekan
|
|
581
|
+
name: 'quick_reply', // 🔘 nama button yang ditekan
|
|
580
582
|
paramsJson: '{"id":"btn1"}',
|
|
581
|
-
text: 'Teks balasan',
|
|
583
|
+
text: 'Teks balasan 🌸',
|
|
582
584
|
format: 1,
|
|
583
585
|
version: 1
|
|
584
586
|
}
|
|
@@ -590,20 +592,20 @@ await sock.sendMessage(jid, {
|
|
|
590
592
|
## 🔘 Button Reply
|
|
591
593
|
|
|
592
594
|
```js
|
|
593
|
-
// Template button
|
|
595
|
+
// 🗂️ Template button
|
|
594
596
|
await sock.sendMessage(jid, {
|
|
595
597
|
buttonReply: {
|
|
596
|
-
displayText: 'Opsi yang dipilih',
|
|
598
|
+
displayText: 'Opsi yang dipilih 💕',
|
|
597
599
|
id: 'btn_id',
|
|
598
600
|
index: 0
|
|
599
601
|
},
|
|
600
602
|
type: 'template'
|
|
601
603
|
})
|
|
602
604
|
|
|
603
|
-
// Plain button
|
|
605
|
+
// 🔵 Plain button
|
|
604
606
|
await sock.sendMessage(jid, {
|
|
605
607
|
buttonReply: {
|
|
606
|
-
displayText: 'Opsi yang dipilih',
|
|
608
|
+
displayText: 'Opsi yang dipilih 🌸',
|
|
607
609
|
id: 'btn_id'
|
|
608
610
|
},
|
|
609
611
|
type: 'plain'
|
|
@@ -615,10 +617,10 @@ await sock.sendMessage(jid, {
|
|
|
615
617
|
## 📌 Keep In Chat
|
|
616
618
|
|
|
617
619
|
```js
|
|
618
|
-
// Simpan
|
|
620
|
+
// 💾 Simpan
|
|
619
621
|
await sock.sendMessage(jid, {
|
|
620
622
|
keep: m.key,
|
|
621
|
-
keepType: 1 // 1 = keep
|
|
623
|
+
keepType: 1 // 1 = keep 💖, 2 = unkeep 🍃
|
|
622
624
|
})
|
|
623
625
|
```
|
|
624
626
|
|
|
@@ -630,8 +632,8 @@ await sock.sendMessage(jid, {
|
|
|
630
632
|
await sock.sendMessage(jid, {
|
|
631
633
|
call: {
|
|
632
634
|
time: Date.now() + 3600000,
|
|
633
|
-
type: 1, // 1 = voice
|
|
634
|
-
title: 'Meeting'
|
|
635
|
+
type: 1, // 1 = voice 🎙️, 2 = video 📹
|
|
636
|
+
title: 'Meeting 🌸'
|
|
635
637
|
}
|
|
636
638
|
})
|
|
637
639
|
```
|
|
@@ -646,8 +648,8 @@ await sock.sendMessage(jid, {
|
|
|
646
648
|
jid: 'xxx@g.us',
|
|
647
649
|
inviteCode: 'kode',
|
|
648
650
|
inviteExpiration: Date.now() + 86400000,
|
|
649
|
-
subject: 'Nama Grup',
|
|
650
|
-
text: 'Bergabunglah
|
|
651
|
+
subject: 'Nama Grup 🌷',
|
|
652
|
+
text: 'Bergabunglah bersama kami~ 💕'
|
|
651
653
|
}
|
|
652
654
|
})
|
|
653
655
|
```
|
|
@@ -661,14 +663,14 @@ await sock.sendMessage(jid, {
|
|
|
661
663
|
product: {
|
|
662
664
|
productImage: fs.readFileSync('produk.jpg'),
|
|
663
665
|
productId: 'prod_123',
|
|
664
|
-
title: 'Nama Produk',
|
|
665
|
-
description: 'Deskripsi',
|
|
666
|
+
title: 'Nama Produk 🌸',
|
|
667
|
+
description: 'Deskripsi cantik 💖',
|
|
666
668
|
currencyCode: 'IDR',
|
|
667
669
|
priceAmount1000: 50000000,
|
|
668
670
|
retailerId: 'sku_001',
|
|
669
671
|
url: 'https://toko.example.com/produk'
|
|
670
672
|
},
|
|
671
|
-
businessOwnerJid: '628xxx@s.whatsapp.net' // wajib diisi
|
|
673
|
+
businessOwnerJid: '628xxx@s.whatsapp.net' // 🌟 wajib diisi ya~
|
|
672
674
|
})
|
|
673
675
|
```
|
|
674
676
|
|
|
@@ -679,7 +681,7 @@ await sock.sendMessage(jid, {
|
|
|
679
681
|
```js
|
|
680
682
|
await sock.sendMessage(jid, {
|
|
681
683
|
image: { url: 'https://example.com/image.jpg' },
|
|
682
|
-
viewOnce: true
|
|
684
|
+
viewOnce: true // 🌸 sekali lihat, hilang bagai mimpi~
|
|
683
685
|
})
|
|
684
686
|
```
|
|
685
687
|
|
|
@@ -690,10 +692,10 @@ await sock.sendMessage(jid, {
|
|
|
690
692
|
```js
|
|
691
693
|
await sock.sendMessage(jid, {
|
|
692
694
|
image: { url: 'https://example.com/image.jpg' },
|
|
693
|
-
viewOnceV2: true // wrap ke viewOnceMessageV2
|
|
695
|
+
viewOnceV2: true // 💫 wrap ke viewOnceMessageV2
|
|
694
696
|
})
|
|
695
697
|
|
|
696
|
-
// viewOnceV2Extension
|
|
698
|
+
// 🌟 viewOnceV2Extension
|
|
697
699
|
await sock.sendMessage(jid, {
|
|
698
700
|
image: { url: 'https://example.com/image.jpg' },
|
|
699
701
|
viewOnceV2Extension: true
|
|
@@ -704,11 +706,11 @@ await sock.sendMessage(jid, {
|
|
|
704
706
|
|
|
705
707
|
## ⏱️ Ephemeral
|
|
706
708
|
|
|
707
|
-
Wrap pesan ke dalam `ephemeralMessage
|
|
709
|
+
> 🍃 Wrap pesan ke dalam `ephemeralMessage` — pesan yang menghilang seperti embun pagi~
|
|
708
710
|
|
|
709
711
|
```js
|
|
710
712
|
await sock.sendMessage(jid, {
|
|
711
|
-
text: 'Pesan ini ephemeral',
|
|
713
|
+
text: 'Pesan ini ephemeral 🌸',
|
|
712
714
|
ephemeral: true
|
|
713
715
|
})
|
|
714
716
|
```
|
|
@@ -717,12 +719,12 @@ await sock.sendMessage(jid, {
|
|
|
717
719
|
|
|
718
720
|
## 🫣 Spoiler
|
|
719
721
|
|
|
720
|
-
Wrap pesan ke dalam `spoilerMessage
|
|
722
|
+
> 🎀 Wrap pesan ke dalam `spoilerMessage` — untuk kejutan yang manis~
|
|
721
723
|
|
|
722
724
|
```js
|
|
723
725
|
await sock.sendMessage(jid, {
|
|
724
726
|
image: { url: 'https://example.com/image.jpg' },
|
|
725
|
-
caption: 'Spoiler!',
|
|
727
|
+
caption: 'Spoiler! 🌷',
|
|
726
728
|
spoiler: true
|
|
727
729
|
})
|
|
728
730
|
```
|
|
@@ -731,11 +733,11 @@ await sock.sendMessage(jid, {
|
|
|
731
733
|
|
|
732
734
|
## 📢 Group Status Wrap
|
|
733
735
|
|
|
734
|
-
Wrap pesan biasa menjadi `groupStatusMessageV2
|
|
736
|
+
> 💕 Wrap pesan biasa menjadi `groupStatusMessageV2`~
|
|
735
737
|
|
|
736
738
|
```js
|
|
737
739
|
await sock.sendMessage(jid, {
|
|
738
|
-
text: 'Status di grup ini',
|
|
740
|
+
text: 'Status di grup ini 🌸',
|
|
739
741
|
groupStatus: true
|
|
740
742
|
})
|
|
741
743
|
```
|
|
@@ -744,7 +746,7 @@ await sock.sendMessage(jid, {
|
|
|
744
746
|
|
|
745
747
|
## 🌀 Lottie Sticker
|
|
746
748
|
|
|
747
|
-
Wrap sticker ke dalam `lottieStickerMessage
|
|
749
|
+
> ✨ Wrap sticker ke dalam `lottieStickerMessage` — animasi yang memukau~
|
|
748
750
|
|
|
749
751
|
```js
|
|
750
752
|
await sock.sendMessage(jid, {
|
|
@@ -757,43 +759,43 @@ await sock.sendMessage(jid, {
|
|
|
757
759
|
|
|
758
760
|
## 🔲 Buttons
|
|
759
761
|
|
|
760
|
-
Kirim pesan dengan tombol interaktif
|
|
762
|
+
> 💖 Kirim pesan dengan tombol interaktif yang menggemaskan~
|
|
761
763
|
|
|
762
764
|
```js
|
|
763
|
-
// Dengan teks biasa
|
|
765
|
+
// 💬 Dengan teks biasa
|
|
764
766
|
await sock.sendMessage(jid, {
|
|
765
|
-
text: 'Pilih salah satu
|
|
766
|
-
footer: 'Footer pesan',
|
|
767
|
+
text: 'Pilih salah satu ya sayang~ 🌸',
|
|
768
|
+
footer: 'Footer pesan 🍃',
|
|
767
769
|
buttons: [
|
|
768
|
-
{ id: 'btn1', text: 'Tombol 1' },
|
|
769
|
-
{ id: 'btn2', text: 'Tombol 2' },
|
|
770
|
-
{ id: 'btn3', text: 'Tombol 3' }
|
|
770
|
+
{ id: 'btn1', text: 'Tombol 1 💕' },
|
|
771
|
+
{ id: 'btn2', text: 'Tombol 2 🌷' },
|
|
772
|
+
{ id: 'btn3', text: 'Tombol 3 🌺' }
|
|
771
773
|
]
|
|
772
774
|
})
|
|
773
775
|
|
|
774
|
-
// Dengan gambar sebagai header
|
|
776
|
+
// 🖼️ Dengan gambar sebagai header
|
|
775
777
|
await sock.sendMessage(jid, {
|
|
776
778
|
image: { url: 'https://example.com/image.jpg' },
|
|
777
|
-
caption: 'Isi pesan',
|
|
778
|
-
footer: 'Footer',
|
|
779
|
+
caption: 'Isi pesan 💖',
|
|
780
|
+
footer: 'Footer 🌸',
|
|
779
781
|
buttons: [
|
|
780
|
-
{ id: 'btn1', text: 'Pilih A' },
|
|
781
|
-
{ id: 'btn2', text: 'Pilih B' }
|
|
782
|
+
{ id: 'btn1', text: 'Pilih A 🌷' },
|
|
783
|
+
{ id: 'btn2', text: 'Pilih B 🌺' }
|
|
782
784
|
]
|
|
783
785
|
})
|
|
784
786
|
|
|
785
|
-
// Native flow button (single select dengan sections)
|
|
787
|
+
// 🌊 Native flow button (single select dengan sections)
|
|
786
788
|
await sock.sendMessage(jid, {
|
|
787
|
-
text: 'Pilih menu
|
|
789
|
+
text: 'Pilih menu~ 🌸',
|
|
788
790
|
buttons: [
|
|
789
791
|
{
|
|
790
|
-
text: 'Buka Menu',
|
|
792
|
+
text: 'Buka Menu 💕',
|
|
791
793
|
sections: [
|
|
792
794
|
{
|
|
793
|
-
title: 'Kategori A',
|
|
795
|
+
title: 'Kategori A 🌷',
|
|
794
796
|
rows: [
|
|
795
|
-
{ id: 'row1', title: 'Item 1', description: 'Deskripsi' },
|
|
796
|
-
{ id: 'row2', title: 'Item 2' }
|
|
797
|
+
{ id: 'row1', title: 'Item 1 🌸', description: 'Deskripsi manis' },
|
|
798
|
+
{ id: 'row2', title: 'Item 2 🌺' }
|
|
797
799
|
]
|
|
798
800
|
}
|
|
799
801
|
]
|
|
@@ -801,11 +803,11 @@ await sock.sendMessage(jid, {
|
|
|
801
803
|
]
|
|
802
804
|
})
|
|
803
805
|
|
|
804
|
-
// Native flow button dengan name kustom
|
|
806
|
+
// ✨ Native flow button dengan name kustom
|
|
805
807
|
await sock.sendMessage(jid, {
|
|
806
|
-
text: 'Pilih
|
|
808
|
+
text: 'Pilih~ 💖',
|
|
807
809
|
buttons: [
|
|
808
|
-
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Quick Reply' }
|
|
810
|
+
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Quick Reply 🌸' }
|
|
809
811
|
]
|
|
810
812
|
})
|
|
811
813
|
```
|
|
@@ -814,26 +816,26 @@ await sock.sendMessage(jid, {
|
|
|
814
816
|
|
|
815
817
|
## 📋 List Message
|
|
816
818
|
|
|
817
|
-
Kirim pesan daftar pilihan
|
|
819
|
+
> 🌷 Kirim pesan daftar pilihan yang teratur dan elegan~
|
|
818
820
|
|
|
819
821
|
```js
|
|
820
822
|
await sock.sendMessage(jid, {
|
|
821
|
-
text: 'Silakan pilih
|
|
822
|
-
title: 'Judul List',
|
|
823
|
-
buttonText: 'Buka Daftar',
|
|
824
|
-
footer: 'Footer pesan',
|
|
823
|
+
text: 'Silakan pilih~ 🌸',
|
|
824
|
+
title: 'Judul List 💕',
|
|
825
|
+
buttonText: 'Buka Daftar 🌷',
|
|
826
|
+
footer: 'Footer pesan 🍃',
|
|
825
827
|
sections: [
|
|
826
828
|
{
|
|
827
|
-
title: 'Bagian 1',
|
|
829
|
+
title: 'Bagian 1 🌺',
|
|
828
830
|
rows: [
|
|
829
|
-
{ id: 'row1', title: 'Pilihan A', description: 'Deskripsi A' },
|
|
830
|
-
{ id: 'row2', title: 'Pilihan B', description: 'Deskripsi B' }
|
|
831
|
+
{ id: 'row1', title: 'Pilihan A 💖', description: 'Deskripsi A yang manis' },
|
|
832
|
+
{ id: 'row2', title: 'Pilihan B 🌸', description: 'Deskripsi B yang lembut' }
|
|
831
833
|
]
|
|
832
834
|
},
|
|
833
835
|
{
|
|
834
|
-
title: 'Bagian 2',
|
|
836
|
+
title: 'Bagian 2 🌼',
|
|
835
837
|
rows: [
|
|
836
|
-
{ id: 'row3', title: 'Pilihan C' }
|
|
838
|
+
{ id: 'row3', title: 'Pilihan C 🌷' }
|
|
837
839
|
]
|
|
838
840
|
}
|
|
839
841
|
]
|
|
@@ -844,30 +846,30 @@ await sock.sendMessage(jid, {
|
|
|
844
846
|
|
|
845
847
|
## 🗂️ Template Buttons
|
|
846
848
|
|
|
847
|
-
Tombol template (quick reply, URL, call) — tampil di WhatsApp Web/Desktop & iOS
|
|
849
|
+
> 💌 Tombol template (quick reply, URL, call) — tampil di WhatsApp Web/Desktop & iOS~
|
|
848
850
|
|
|
849
851
|
```js
|
|
850
|
-
// Dengan teks
|
|
852
|
+
// 💬 Dengan teks
|
|
851
853
|
await sock.sendMessage(jid, {
|
|
852
|
-
text: 'Pesan template',
|
|
853
|
-
footer: 'Footer',
|
|
854
|
+
text: 'Pesan template 🌸',
|
|
855
|
+
footer: 'Footer 🍃',
|
|
854
856
|
id: 'template-unik',
|
|
855
857
|
templateButtons: [
|
|
856
|
-
{ id: 'btn1', text: 'Quick Reply' },
|
|
857
|
-
{ url: 'https://example.com', text: 'Kunjungi Website' },
|
|
858
|
-
{ call: '+62812345678', text: 'Hubungi Kami' }
|
|
858
|
+
{ id: 'btn1', text: 'Quick Reply 💕' },
|
|
859
|
+
{ url: 'https://example.com', text: 'Kunjungi Website 🌐' },
|
|
860
|
+
{ call: '+62812345678', text: 'Hubungi Kami 📞' }
|
|
859
861
|
]
|
|
860
862
|
})
|
|
861
863
|
|
|
862
|
-
// Dengan gambar sebagai header
|
|
864
|
+
// 🖼️ Dengan gambar sebagai header
|
|
863
865
|
await sock.sendMessage(jid, {
|
|
864
866
|
image: { url: 'https://example.com/img.jpg' },
|
|
865
|
-
caption: 'Isi pesan',
|
|
866
|
-
title: 'Judul',
|
|
867
|
-
footer: 'Footer',
|
|
867
|
+
caption: 'Isi pesan 💖',
|
|
868
|
+
title: 'Judul 🌸',
|
|
869
|
+
footer: 'Footer 🌷',
|
|
868
870
|
templateButtons: [
|
|
869
|
-
{ id: 'btn1', text: 'Klik Sini' },
|
|
870
|
-
{ url: 'https://example.com', text: 'Buka Link' }
|
|
871
|
+
{ id: 'btn1', text: 'Klik Sini 💕' },
|
|
872
|
+
{ url: 'https://example.com', text: 'Buka Link 🌐' }
|
|
871
873
|
]
|
|
872
874
|
})
|
|
873
875
|
```
|
|
@@ -876,45 +878,45 @@ await sock.sendMessage(jid, {
|
|
|
876
878
|
|
|
877
879
|
## 🌊 Native Flow
|
|
878
880
|
|
|
879
|
-
Pesan interaktif dengan native flow buttons
|
|
881
|
+
> ✨ Pesan interaktif dengan native flow buttons yang indah — mendukung media header & audio footer~
|
|
880
882
|
|
|
881
883
|
```js
|
|
882
|
-
// Teks dengan native flow buttons
|
|
884
|
+
// 💬 Teks dengan native flow buttons
|
|
883
885
|
await sock.sendMessage(jid, {
|
|
884
|
-
text: 'Pilih aksi
|
|
885
|
-
footer: 'Footer pesan',
|
|
886
|
+
text: 'Pilih aksi~ 🌸',
|
|
887
|
+
footer: 'Footer pesan 🍃',
|
|
886
888
|
nativeFlow: [
|
|
887
|
-
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Opsi 1' },
|
|
888
|
-
{ name: 'quick_reply', paramsJson: '{"id":"2"}', text: 'Opsi 2' }
|
|
889
|
+
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Opsi 1 💕' },
|
|
890
|
+
{ name: 'quick_reply', paramsJson: '{"id":"2"}', text: 'Opsi 2 🌷' }
|
|
889
891
|
]
|
|
890
892
|
})
|
|
891
893
|
|
|
892
|
-
// Dengan gambar sebagai header
|
|
894
|
+
// 🖼️ Dengan gambar sebagai header
|
|
893
895
|
await sock.sendMessage(jid, {
|
|
894
896
|
image: { url: 'https://example.com/img.jpg' },
|
|
895
|
-
caption: 'Isi pesan',
|
|
896
|
-
title: 'Judul',
|
|
897
|
-
subtitle: 'Subjudul',
|
|
898
|
-
footer: 'Footer',
|
|
897
|
+
caption: 'Isi pesan 💖',
|
|
898
|
+
title: 'Judul 🌸',
|
|
899
|
+
subtitle: 'Subjudul 🌷',
|
|
900
|
+
footer: 'Footer 🍃',
|
|
899
901
|
nativeFlow: [
|
|
900
|
-
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Tombol 1' }
|
|
902
|
+
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Tombol 1 💕' }
|
|
901
903
|
]
|
|
902
904
|
})
|
|
903
905
|
|
|
904
|
-
// Dengan audio footer
|
|
906
|
+
// 🎵 Dengan audio footer
|
|
905
907
|
await sock.sendMessage(jid, {
|
|
906
|
-
text: 'Pesan dengan audio footer',
|
|
908
|
+
text: 'Pesan dengan audio footer 🎶',
|
|
907
909
|
audioFooter: fs.readFileSync('audio.ogg'),
|
|
908
910
|
nativeFlow: [
|
|
909
|
-
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'OK' }
|
|
911
|
+
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'OK 💖' }
|
|
910
912
|
]
|
|
911
913
|
})
|
|
912
914
|
|
|
913
|
-
// Wrap sebagai templateMessage
|
|
915
|
+
// 🎀 Wrap sebagai templateMessage
|
|
914
916
|
await sock.sendMessage(jid, {
|
|
915
|
-
text: 'Template interaktif',
|
|
917
|
+
text: 'Template interaktif 🌸',
|
|
916
918
|
nativeFlow: [
|
|
917
|
-
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Tombol' }
|
|
919
|
+
{ name: 'quick_reply', paramsJson: '{"id":"1"}', text: 'Tombol 💕' }
|
|
918
920
|
],
|
|
919
921
|
interactiveAsTemplate: true,
|
|
920
922
|
id: 'template-id-unik'
|
|
@@ -925,36 +927,28 @@ await sock.sendMessage(jid, {
|
|
|
925
927
|
|
|
926
928
|
## 🎠 Carousel
|
|
927
929
|
|
|
928
|
-
Pesan carousel dengan kartu-kartu (image/video/product per kartu)
|
|
930
|
+
> 🌺 Pesan carousel dengan kartu-kartu yang cantik (image/video/product per kartu)~
|
|
929
931
|
|
|
930
932
|
```js
|
|
931
933
|
await sock.sendMessage(jid, {
|
|
932
|
-
text: 'Carousel utama',
|
|
933
|
-
footer: 'Footer utama',
|
|
934
|
+
text: 'Carousel utama 🌸',
|
|
935
|
+
footer: 'Footer utama 🍃',
|
|
934
936
|
cards: [
|
|
935
937
|
{
|
|
936
938
|
image: { url: 'https://example.com/1.jpg' },
|
|
937
|
-
title: 'Kartu 1',
|
|
938
|
-
caption: 'Deskripsi kartu 1',
|
|
939
|
-
footer: 'Footer kartu 1',
|
|
939
|
+
title: 'Kartu 1 💕',
|
|
940
|
+
caption: 'Deskripsi kartu 1 yang manis 🌷',
|
|
941
|
+
footer: 'Footer kartu 1 🌸',
|
|
940
942
|
nativeFlow: [
|
|
941
|
-
{ name: 'quick_reply', paramsJson: '{"id":"c1"}', text: 'Pilih Ini' }
|
|
943
|
+
{ name: 'quick_reply', paramsJson: '{"id":"c1"}', text: 'Pilih Ini 💖' }
|
|
942
944
|
]
|
|
943
945
|
},
|
|
944
946
|
{
|
|
945
947
|
image: { url: 'https://example.com/2.jpg' },
|
|
946
|
-
title: 'Kartu 2',
|
|
947
|
-
caption: 'Deskripsi kartu 2',
|
|
948
|
-
nativeFlow: [
|
|
949
|
-
{ name: 'quick_reply', paramsJson: '{"id":"c2"}', text: 'Pilih Itu' },
|
|
950
|
-
{ url: 'https://example.com', text: 'Lihat Detail' }
|
|
951
|
-
]
|
|
952
|
-
},
|
|
953
|
-
{
|
|
954
|
-
video: { url: 'https://example.com/vid.mp4' },
|
|
955
|
-
caption: 'Video kartu',
|
|
948
|
+
title: 'Kartu 2 🌺',
|
|
949
|
+
caption: 'Deskripsi kartu 2 yang indah 🌼',
|
|
956
950
|
nativeFlow: [
|
|
957
|
-
{ name: 'quick_reply', paramsJson: '{"id":"
|
|
951
|
+
{ name: 'quick_reply', paramsJson: '{"id":"c2"}', text: 'Pilih Itu 🌸' }
|
|
958
952
|
]
|
|
959
953
|
}
|
|
960
954
|
]
|
|
@@ -963,414 +957,354 @@ await sock.sendMessage(jid, {
|
|
|
963
957
|
|
|
964
958
|
---
|
|
965
959
|
|
|
966
|
-
##
|
|
960
|
+
## 🗨️ Status Mention
|
|
967
961
|
|
|
968
|
-
|
|
962
|
+
> 💫 Mention seseorang di status/story dengan mengirim pesan ke array JID — otomatis mengirim `statusMentionMessage` atau `groupStatusMentionMessage` ke JID yang dituju~
|
|
969
963
|
|
|
970
964
|
```js
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
id: 'row1'
|
|
976
|
-
}
|
|
965
|
+
// 💬 Status teks dengan mention ke user/group
|
|
966
|
+
await sock.sendMessage(['628xxx@s.whatsapp.net', 'yyy@g.us'], {
|
|
967
|
+
text: 'Hei kamu~ 🌸',
|
|
968
|
+
backgroundColor: '#ff6b9d'
|
|
977
969
|
})
|
|
978
|
-
```
|
|
979
970
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
Kirim paket sticker:
|
|
985
|
-
|
|
986
|
-
```js
|
|
987
|
-
await sock.sendMessage(jid, {
|
|
988
|
-
stickers: [
|
|
989
|
-
{
|
|
990
|
-
sticker: fs.readFileSync('sticker1.webp'),
|
|
991
|
-
metadata: { stickerPackId: 'pack123', stickerPackName: 'My Pack' }
|
|
992
|
-
},
|
|
993
|
-
{
|
|
994
|
-
sticker: fs.readFileSync('sticker2.webp')
|
|
995
|
-
}
|
|
996
|
-
]
|
|
971
|
+
// 🖼️ Status gambar dengan mention
|
|
972
|
+
await sock.sendMessage(['628xxx@s.whatsapp.net'], {
|
|
973
|
+
image: { url: 'https://example.com/image.jpg' },
|
|
974
|
+
caption: 'Buat kamu~ 💕'
|
|
997
975
|
})
|
|
998
976
|
```
|
|
999
977
|
|
|
978
|
+
> 🍀 Kirim ke array JID untuk trigger status mention. Untuk grup, otomatis pakai `groupStatusMentionMessage`~
|
|
979
|
+
|
|
1000
980
|
---
|
|
1001
981
|
|
|
1002
|
-
##
|
|
982
|
+
## 🤖 AI Icon
|
|
1003
983
|
|
|
1004
|
-
Tambahkan
|
|
984
|
+
> ✨ Tambahkan AI icon pada pesan di private chat — hanya bisa digunakan untuk percakapan personal (bukan grup)~
|
|
1005
985
|
|
|
1006
986
|
```js
|
|
987
|
+
// 💬 Teks dengan AI icon
|
|
1007
988
|
await sock.sendMessage(jid, {
|
|
1008
|
-
text: 'Halo
|
|
1009
|
-
|
|
1010
|
-
title: 'Judul Iklan',
|
|
1011
|
-
body: 'Deskripsi singkat',
|
|
1012
|
-
url: 'https://example.com',
|
|
1013
|
-
thumbnail: fs.readFileSync('thumbnail.jpg'), // wajib Buffer
|
|
1014
|
-
mediaType: 1,
|
|
1015
|
-
largeThumbnail: true
|
|
1016
|
-
}
|
|
989
|
+
text: 'Halo! Aku asisten AI-mu~ 🌸',
|
|
990
|
+
ai: true
|
|
1017
991
|
})
|
|
1018
|
-
```
|
|
1019
992
|
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
## 💸 Request Payment
|
|
1023
|
-
|
|
1024
|
-
Minta pembayaran dari kontak (dibutuhkan teks atau sticker sebagai pesan catatan):
|
|
1025
|
-
|
|
1026
|
-
```js
|
|
1027
|
-
// Dengan teks
|
|
993
|
+
// 🖼️ Gambar dengan AI icon
|
|
1028
994
|
await sock.sendMessage(jid, {
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
currencyCodeIso4217: 'IDR',
|
|
1033
|
-
expiryTimestamp: Date.now() + 86400000
|
|
995
|
+
image: { url: 'https://example.com/image.jpg' },
|
|
996
|
+
caption: 'Dihasilkan oleh AI 💖',
|
|
997
|
+
ai: true
|
|
1034
998
|
})
|
|
1035
999
|
```
|
|
1036
1000
|
|
|
1001
|
+
> 🌷 `ai: true` hanya berlaku di private chat (JID `@s.whatsapp.net` atau LID). Akan error jika dikirim ke grup~
|
|
1002
|
+
|
|
1037
1003
|
---
|
|
1038
1004
|
|
|
1039
|
-
##
|
|
1005
|
+
## 🏷️ Secure Meta Service Label
|
|
1040
1006
|
|
|
1041
|
-
|
|
1007
|
+
> 🌿 Tambahkan label layanan bisnis pada pesan — memunculkan atribut biz pada relay~
|
|
1042
1008
|
|
|
1043
1009
|
```js
|
|
1044
|
-
// Invoice dengan gambar
|
|
1045
1010
|
await sock.sendMessage(jid, {
|
|
1046
|
-
|
|
1047
|
-
|
|
1011
|
+
text: 'Pesan layanan resmi kami~ 🌸',
|
|
1012
|
+
secureMetaServiceLabel: true
|
|
1048
1013
|
})
|
|
1049
1014
|
|
|
1050
|
-
//
|
|
1015
|
+
// 💌 Bisa dikombinasikan dengan pesan media
|
|
1051
1016
|
await sock.sendMessage(jid, {
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
invoiceNote: 'Invoice bulan ini'
|
|
1017
|
+
image: { url: 'https://example.com/banner.jpg' },
|
|
1018
|
+
caption: 'Promo spesial dari kami 💕',
|
|
1019
|
+
secureMetaServiceLabel: true
|
|
1056
1020
|
})
|
|
1057
1021
|
```
|
|
1058
1022
|
|
|
1059
1023
|
---
|
|
1060
1024
|
|
|
1061
|
-
##
|
|
1025
|
+
## 💻 Code Block
|
|
1062
1026
|
|
|
1063
|
-
Kirim pesan
|
|
1027
|
+
> 🌟 Kirim pesan kode dengan syntax highlighting — tampil sebagai AI Rich Response~
|
|
1064
1028
|
|
|
1065
1029
|
```js
|
|
1066
1030
|
await sock.sendMessage(jid, {
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1031
|
+
code: 'console.log("Hello World!")',
|
|
1032
|
+
language: 'javascript', // 🌸 default: 'javascript'
|
|
1033
|
+
headerText: 'Contoh kode:',
|
|
1034
|
+
footerText: 'Semoga membantu~ 💖',
|
|
1035
|
+
disclaimerText: 'Generated by AI'
|
|
1072
1036
|
})
|
|
1073
1037
|
```
|
|
1074
1038
|
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
## ⏳ Disappearing Messages
|
|
1078
|
-
|
|
1079
|
-
Aktifkan/nonaktifkan pesan menghilang di sebuah chat:
|
|
1080
|
-
|
|
1081
|
-
```js
|
|
1082
|
-
// Aktifkan (gunakan durasi default 7 hari)
|
|
1083
|
-
await sock.sendMessage(jid, { disappearingMessagesInChat: true })
|
|
1084
|
-
|
|
1085
|
-
// Nonaktifkan
|
|
1086
|
-
await sock.sendMessage(jid, { disappearingMessagesInChat: false })
|
|
1087
|
-
|
|
1088
|
-
// Durasi kustom (dalam detik)
|
|
1089
|
-
await sock.sendMessage(jid, { disappearingMessagesInChat: 86400 }) // 1 hari
|
|
1090
|
-
```
|
|
1039
|
+
> 💡 Bahasa yang didukung bergantung pada `LANGUAGE_KEYWORDS` — termasuk javascript, python, dll~
|
|
1091
1040
|
|
|
1092
1041
|
---
|
|
1093
1042
|
|
|
1094
|
-
##
|
|
1043
|
+
## 🔗 Links (Rich)
|
|
1095
1044
|
|
|
1096
|
-
Kirim
|
|
1045
|
+
> ✨ Kirim teks dengan referensi link yang kaya (inline citation) — tampil sebagai AI Rich Response~
|
|
1097
1046
|
|
|
1098
1047
|
```js
|
|
1099
1048
|
await sock.sendMessage(jid, {
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1049
|
+
links: [
|
|
1050
|
+
{
|
|
1051
|
+
text: 'Kunjungi dokumentasi',
|
|
1052
|
+
title: 'Docs',
|
|
1053
|
+
displayName: 'Baileys Docs',
|
|
1054
|
+
url: 'https://example.com/docs',
|
|
1055
|
+
sources: [
|
|
1056
|
+
{
|
|
1057
|
+
displayName: 'Source 1 💕',
|
|
1058
|
+
subtitle: 'Sumber terpercaya',
|
|
1059
|
+
url: 'https://example.com/source'
|
|
1060
|
+
}
|
|
1061
|
+
]
|
|
1062
|
+
}
|
|
1063
|
+
],
|
|
1064
|
+
headerText: 'Referensi~ 🌸',
|
|
1065
|
+
footerText: 'Semoga berguna 🍃'
|
|
1105
1066
|
})
|
|
1106
1067
|
```
|
|
1107
1068
|
|
|
1108
|
-
> ⚠️ Field `raw` akan di-delete sebelum dikirim. Sisa object digunakan apa adanya sebagai `WAProto.Message`.
|
|
1109
|
-
|
|
1110
1069
|
---
|
|
1111
1070
|
|
|
1112
|
-
##
|
|
1113
|
-
|
|
1114
|
-
Tipe pesan Rich — ditampilkan sebagai `botForwardedMessage` dengan rendering khusus (code highlight, tabel, links dengan citation). Cocok untuk bot AI.
|
|
1071
|
+
## 📊 Table (Rich)
|
|
1115
1072
|
|
|
1116
|
-
|
|
1073
|
+
> 🌷 Kirim tabel cantik — tampil sebagai AI Rich Response~
|
|
1117
1074
|
|
|
1118
1075
|
```js
|
|
1119
1076
|
await sock.sendMessage(jid, {
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1077
|
+
table: [
|
|
1078
|
+
['Nama 🌸', 'Usia 💕', 'Kota 🌆'], // baris pertama = header
|
|
1079
|
+
['Hana', '20', 'Jakarta'],
|
|
1080
|
+
['Risa', '22', 'Bandung'],
|
|
1081
|
+
['Yuki', '21', 'Surabaya']
|
|
1082
|
+
],
|
|
1083
|
+
title: 'Data Anggota 🌟',
|
|
1084
|
+
headerText: 'Berikut datanya~ 💖',
|
|
1085
|
+
footerText: 'Data per Juni 2025 🍃'
|
|
1124
1086
|
})
|
|
1125
|
-
```
|
|
1126
1087
|
|
|
1127
|
-
|
|
1088
|
+
// 🔒 Tanpa baris header
|
|
1089
|
+
await sock.sendMessage(jid, {
|
|
1090
|
+
table: [
|
|
1091
|
+
['Item A', 'Rp 10.000'],
|
|
1092
|
+
['Item B', 'Rp 20.000']
|
|
1093
|
+
],
|
|
1094
|
+
noHeading: true,
|
|
1095
|
+
title: 'Daftar Harga 🌺'
|
|
1096
|
+
})
|
|
1097
|
+
```
|
|
1128
1098
|
|
|
1129
1099
|
---
|
|
1130
1100
|
|
|
1131
|
-
|
|
1101
|
+
## 🌈 Rich Response (Gabungan)
|
|
1132
1102
|
|
|
1133
|
-
Kirim teks
|
|
1103
|
+
> 💞 Kirim gabungan teks, kode, dan tabel dalam satu pesan AI Rich Response~
|
|
1134
1104
|
|
|
1135
1105
|
```js
|
|
1136
1106
|
await sock.sendMessage(jid, {
|
|
1137
|
-
|
|
1107
|
+
richResponse: [
|
|
1108
|
+
{ text: 'Penjelasan singkat~ 🌸' },
|
|
1138
1109
|
{
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
url: 'https://source1.com'
|
|
1148
|
-
}
|
|
1149
|
-
]
|
|
1150
|
-
}
|
|
1110
|
+
code: 'const x = 1 + 1',
|
|
1111
|
+
language: 'javascript'
|
|
1112
|
+
},
|
|
1113
|
+
{
|
|
1114
|
+
table: [['Kolom A', 'Kolom B'], ['Nilai 1', 'Nilai 2']],
|
|
1115
|
+
title: 'Hasil 🌷'
|
|
1116
|
+
},
|
|
1117
|
+
{ text: 'Semoga membantu ya~ 💕' }
|
|
1151
1118
|
],
|
|
1152
|
-
|
|
1153
|
-
footerText: 'Sumber terpercaya'
|
|
1119
|
+
disclaimerText: 'Generated by AI 🤖'
|
|
1154
1120
|
})
|
|
1155
1121
|
```
|
|
1156
1122
|
|
|
1157
1123
|
---
|
|
1158
1124
|
|
|
1159
|
-
|
|
1125
|
+
## 📩 List Reply
|
|
1160
1126
|
|
|
1161
|
-
|
|
1127
|
+
> 🌷 Simulasi balasan dari list message (ketika user memilih item dari daftar)~
|
|
1162
1128
|
|
|
1163
1129
|
```js
|
|
1164
1130
|
await sock.sendMessage(jid, {
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
],
|
|
1171
|
-
title: 'Data Pengguna',
|
|
1172
|
-
noHeading: false, // true = baris pertama bukan header
|
|
1173
|
-
headerText: 'Daftar data:',
|
|
1174
|
-
footerText: 'Total: 3 pengguna'
|
|
1131
|
+
listReply: {
|
|
1132
|
+
title: 'Pilihan Saya 💕',
|
|
1133
|
+
description: 'Deskripsi pilihan',
|
|
1134
|
+
id: 'row1' // 🗝️ selectedRowId dari baris yang dipilih
|
|
1135
|
+
}
|
|
1175
1136
|
})
|
|
1176
1137
|
```
|
|
1177
1138
|
|
|
1178
1139
|
---
|
|
1179
1140
|
|
|
1180
|
-
|
|
1141
|
+
## 🎴 Sticker Pack
|
|
1181
1142
|
|
|
1182
|
-
|
|
1143
|
+
> ✨ Kirim paket sticker kustom — membutuhkan cover dan minimal 1 sticker~
|
|
1183
1144
|
|
|
1184
1145
|
```js
|
|
1185
1146
|
await sock.sendMessage(jid, {
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
{
|
|
1192
|
-
code: 'def greet(name):\n print(f"Hello, {name}!")',
|
|
1193
|
-
language: 'python'
|
|
1194
|
-
},
|
|
1147
|
+
cover: fs.readFileSync('cover.webp'), // 🖼️ wajib ada
|
|
1148
|
+
name: 'Pack Manis 🌸',
|
|
1149
|
+
publisher: 'NuiiS4TORU 💖',
|
|
1150
|
+
description: 'Sticker pack cantik~',
|
|
1151
|
+
stickers: [
|
|
1195
1152
|
{
|
|
1196
|
-
|
|
1153
|
+
data: fs.readFileSync('sticker1.webp'),
|
|
1154
|
+
emojis: ['🌸', '💕'],
|
|
1155
|
+
accessibilityLabel: 'stiker manis'
|
|
1197
1156
|
},
|
|
1198
1157
|
{
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
{ isHeading: false, items: ['Data 1', 'Data 2'] }
|
|
1202
|
-
],
|
|
1203
|
-
title: 'Tabel Data'
|
|
1158
|
+
data: { url: 'https://example.com/sticker2.webp' },
|
|
1159
|
+
emojis: ['🌷']
|
|
1204
1160
|
}
|
|
1205
|
-
|
|
1206
|
-
|
|
1161
|
+
// 🌺 maksimal 60 sticker ya~
|
|
1162
|
+
]
|
|
1207
1163
|
})
|
|
1208
1164
|
```
|
|
1209
1165
|
|
|
1166
|
+
> 🍀 Butuh library `sharp` atau `@napi-rs/image` untuk konversi WebP. Setiap sticker maks 1MB~
|
|
1167
|
+
|
|
1210
1168
|
---
|
|
1211
1169
|
|
|
1212
|
-
##
|
|
1170
|
+
## 📢 External Ad Reply
|
|
1213
1171
|
|
|
1214
|
-
|
|
1172
|
+
> 💌 Tambahkan tampilan iklan eksternal sebagai context info pada pesan~
|
|
1215
1173
|
|
|
1216
1174
|
```js
|
|
1217
|
-
//
|
|
1218
|
-
await sock.sendMessage(
|
|
1219
|
-
text: '
|
|
1175
|
+
// 💬 Teks dengan external ad reply
|
|
1176
|
+
await sock.sendMessage(jid, {
|
|
1177
|
+
text: 'Cek produk ini~ 🌸',
|
|
1178
|
+
externalAdReply: {
|
|
1179
|
+
title: 'Judul Iklan 💕',
|
|
1180
|
+
body: 'Deskripsi iklan yang menarik 🌷',
|
|
1181
|
+
thumbnail: fs.readFileSync('thumbnail.jpg'), // 🖼️ harus Buffer
|
|
1182
|
+
url: 'https://example.com/produk',
|
|
1183
|
+
mediaType: 1, // 1 = image 🖼️
|
|
1184
|
+
largeThumbnail: false
|
|
1185
|
+
}
|
|
1220
1186
|
})
|
|
1221
1187
|
|
|
1222
|
-
//
|
|
1223
|
-
await sock.sendMessage(
|
|
1224
|
-
image: { url: 'https://example.com/
|
|
1225
|
-
caption: '
|
|
1188
|
+
// 🖼️ Gambar dengan external ad reply
|
|
1189
|
+
await sock.sendMessage(jid, {
|
|
1190
|
+
image: { url: 'https://example.com/banner.jpg' },
|
|
1191
|
+
caption: 'Penawaran spesial 💖',
|
|
1192
|
+
externalAdReply: {
|
|
1193
|
+
title: 'Promo Hari Ini 🌸',
|
|
1194
|
+
url: 'https://example.com/promo',
|
|
1195
|
+
thumbnail: fs.readFileSync('thumb.jpg'),
|
|
1196
|
+
mediaType: 1
|
|
1197
|
+
}
|
|
1226
1198
|
})
|
|
1199
|
+
```
|
|
1227
1200
|
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1201
|
+
---
|
|
1202
|
+
|
|
1203
|
+
## 💸 Request Payment
|
|
1204
|
+
|
|
1205
|
+
> 🌷 Minta pembayaran dari seseorang — hanya untuk chat privat~
|
|
1206
|
+
|
|
1207
|
+
```js
|
|
1208
|
+
// 💬 Dengan teks sebagai note
|
|
1209
|
+
await sock.sendMessage(jid, {
|
|
1210
|
+
text: 'Tolong transfer ya sayang~ 🌸',
|
|
1211
|
+
requestPaymentFrom: '628xxx@s.whatsapp.net',
|
|
1212
|
+
amount1000: 50000000, // 💰 Rp 50.000 (dalam unit 1/1000)
|
|
1213
|
+
currencyCodeIso4217: 'IDR',
|
|
1214
|
+
expiryTimestamp: Date.now() + 86400000 // ⏰ kadaluarsa 1 hari
|
|
1231
1215
|
})
|
|
1232
1216
|
```
|
|
1233
1217
|
|
|
1234
|
-
>
|
|
1218
|
+
> 🍀 Note message harus berupa `extendedTextMessage` (teks) atau `stickerMessage`~
|
|
1235
1219
|
|
|
1236
1220
|
---
|
|
1237
1221
|
|
|
1238
|
-
##
|
|
1222
|
+
## 🧾 Invoice
|
|
1239
1223
|
|
|
1240
|
-
|
|
1224
|
+
> ✨ Kirim invoice dengan attachment gambar atau dokumen PDF~
|
|
1241
1225
|
|
|
1242
1226
|
```js
|
|
1227
|
+
// 🖼️ Invoice dengan gambar
|
|
1243
1228
|
await sock.sendMessage(jid, {
|
|
1244
|
-
|
|
1245
|
-
|
|
1229
|
+
image: fs.readFileSync('invoice.jpg'),
|
|
1230
|
+
invoiceNote: 'Invoice pembelian 🌸\nTotal: Rp 150.000 💕'
|
|
1246
1231
|
})
|
|
1247
1232
|
|
|
1248
|
-
//
|
|
1233
|
+
// 📄 Invoice dengan PDF
|
|
1249
1234
|
await sock.sendMessage(jid, {
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1235
|
+
document: fs.readFileSync('invoice.pdf'),
|
|
1236
|
+
mimetype: 'application/pdf',
|
|
1237
|
+
fileName: 'invoice.pdf',
|
|
1238
|
+
invoiceNote: 'Terima kasih atas pesananmu~ 🌷'
|
|
1239
|
+
})
|
|
1254
1240
|
```
|
|
1255
1241
|
|
|
1256
|
-
> ⚠️ `ai: true` hanya bisa dipakai di chat private. Di grup atau newsletter akan throw error.
|
|
1257
|
-
|
|
1258
1242
|
---
|
|
1259
1243
|
|
|
1260
|
-
##
|
|
1244
|
+
## 🛒 Order
|
|
1261
1245
|
|
|
1262
|
-
|
|
1246
|
+
> 🌟 Kirim detail pesanan (order message) — untuk fitur belanja WhatsApp~
|
|
1263
1247
|
|
|
1264
1248
|
```js
|
|
1265
1249
|
await sock.sendMessage(jid, {
|
|
1266
|
-
|
|
1267
|
-
|
|
1250
|
+
order: {
|
|
1251
|
+
orderId: 'order_001',
|
|
1252
|
+
thumbnail: fs.readFileSync('produk.jpg'), // 🖼️ wajib ada
|
|
1253
|
+
itemCount: 3,
|
|
1254
|
+
status: 'PAYMENT_PENDING', // 💰 status pesanan
|
|
1255
|
+
surface: 'CATALOG',
|
|
1256
|
+
message: 'Pesanan kamu sedang diproses ya~ 🌸',
|
|
1257
|
+
orderTitle: 'Pesanan #001 💕',
|
|
1258
|
+
sellerJid: '628xxx@s.whatsapp.net',
|
|
1259
|
+
token: 'token_unik',
|
|
1260
|
+
totalAmount1000: 150000000, // 💸 Rp 150.000
|
|
1261
|
+
totalCurrencyCode: 'IDR'
|
|
1262
|
+
}
|
|
1268
1263
|
})
|
|
1269
1264
|
```
|
|
1270
1265
|
|
|
1271
1266
|
---
|
|
1272
1267
|
|
|
1273
|
-
##
|
|
1268
|
+
## ⏳ Disappearing Messages
|
|
1274
1269
|
|
|
1275
|
-
|
|
1270
|
+
> 🍃 Aktifkan atau nonaktifkan pesan menghilang di obrolan grup~
|
|
1276
1271
|
|
|
1277
1272
|
```js
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
ephemeralExpiration: 86400, // pesan hilang (detik)
|
|
1281
|
-
statusJidList: ['628xxx@s.whatsapp.net'], // kirim status ke JID
|
|
1282
|
-
mediaUploadTimeoutMs: 30000,
|
|
1283
|
-
backgroundColor: '#FF0000',
|
|
1284
|
-
font: 1
|
|
1285
|
-
})
|
|
1286
|
-
```
|
|
1273
|
+
// ✅ Aktifkan (86400 detik = 24 jam default)
|
|
1274
|
+
await sock.sendMessage(groupJid, { disappearingMessagesInChat: true })
|
|
1287
1275
|
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
mentionAll: true, // mention semua (nonJidMentions)
|
|
1294
|
-
contextInfo: { ... } // contextInfo manual (di-merge)
|
|
1295
|
-
})
|
|
1276
|
+
// ❌ Nonaktifkan
|
|
1277
|
+
await sock.sendMessage(groupJid, { disappearingMessagesInChat: false })
|
|
1278
|
+
|
|
1279
|
+
// ⏱️ Durasi kustom (dalam detik)
|
|
1280
|
+
await sock.sendMessage(groupJid, { disappearingMessagesInChat: 604800 }) // 7 hari
|
|
1296
1281
|
```
|
|
1297
1282
|
|
|
1283
|
+
> 🌷 Hanya berfungsi di grup (`@g.us`). Nilai `true` menggunakan `WA_DEFAULT_EPHEMERAL` (86400 detik)~
|
|
1284
|
+
|
|
1298
1285
|
---
|
|
1299
1286
|
|
|
1300
|
-
##
|
|
1301
|
-
|
|
1302
|
-
| Property | Tipe Proto | Keterangan |
|
|
1303
|
-
|---|---|---|
|
|
1304
|
-
| `text` | `extendedTextMessage` | Teks dengan link preview |
|
|
1305
|
-
| `image` | `imageMessage` | Gambar |
|
|
1306
|
-
| `video` | `videoMessage` | Video |
|
|
1307
|
-
| `audio` | `audioMessage` | Audio / Voice note (`ptt: true`) |
|
|
1308
|
-
| `document` | `documentMessage` | File/dokumen |
|
|
1309
|
-
| `sticker` | `stickerMessage` | Sticker WebP |
|
|
1310
|
-
| `stickers` | `stickerPackMessage` | Paket sticker |
|
|
1311
|
-
| `location` | `locationMessage` | Lokasi GPS |
|
|
1312
|
-
| `contacts` | `contactMessage` / `contactsArrayMessage` | Kontak vCard |
|
|
1313
|
-
| `react` | `reactionMessage` | Reaksi emoji |
|
|
1314
|
-
| `poll` | `pollCreationMessage` / `V2` / `V3` / `V5` | Poll / Quiz |
|
|
1315
|
-
| `pollResult` | `pollResultSnapshotMessage` / `V3` | Hasil poll |
|
|
1316
|
-
| `pollUpdate` | `pollUpdateMessage` | Update vote poll |
|
|
1317
|
-
| `forward` | *(inherit)* | Forward pesan |
|
|
1318
|
-
| `delete` | `protocolMessage (REVOKE)` | Hapus pesan |
|
|
1319
|
-
| `edit` | `protocolMessage (MESSAGE_EDIT)` | Edit pesan |
|
|
1320
|
-
| `pin` | `pinInChatMessage` | Pin/unpin pesan |
|
|
1321
|
-
| `keep` | `keepInChatMessage` | Simpan pesan |
|
|
1322
|
-
| `album` | `albumMessage` | Album foto/video |
|
|
1323
|
-
| `event` | `eventMessage` | Event/acara |
|
|
1324
|
-
| `groupStatusMessage` | *(dugong handler)* | Group Story/Status |
|
|
1325
|
-
| jid as array | `statusMentionMessage` / `groupStatusMentionMessage` | Kirim status + mention ke user/grup |
|
|
1326
|
-
| `groupInvite` | `groupInviteMessage` | Undangan grup |
|
|
1327
|
-
| `product` | `productMessage` | Produk katalog |
|
|
1328
|
-
| `flowReply` | `interactiveResponseMessage` | Balas native flow |
|
|
1329
|
-
| `buttonReply` | `templateButtonReplyMessage` / `buttonsResponseMessage` | Balas tombol |
|
|
1330
|
-
| `listReply` | `listResponseMessage` | Balas list |
|
|
1331
|
-
| `call` | *(scheduled call handler)* | Panggilan terjadwal |
|
|
1332
|
-
| `buttons` | `buttonsMessage` | Tombol interaktif |
|
|
1333
|
-
| `sections` | `listMessage` | Daftar pilihan |
|
|
1334
|
-
| `templateButtons` | `templateMessage` | Template buttons |
|
|
1335
|
-
| `nativeFlow` | `interactiveMessage` | Native flow buttons |
|
|
1336
|
-
| `cards` | `interactiveMessage (carouselMessage)` | Carousel cards |
|
|
1337
|
-
| `externalAdReply` | *(contextInfo inject)* | Preview iklan eksternal |
|
|
1338
|
-
| `requestPaymentFrom` | `requestPaymentMessage` | Minta pembayaran |
|
|
1339
|
-
| `invoiceNote` | `invoiceMessage` | Invoice |
|
|
1340
|
-
| `orderText` | `orderMessage` | Pesanan/order |
|
|
1341
|
-
| `disappearingMessagesInChat` | `protocolMessage (EPHEMERAL_SETTING)` | Pesan menghilang |
|
|
1342
|
-
| `code` | `botForwardedMessage (richResponseMessage)` | Code block (AI) |
|
|
1343
|
-
| `links` | `botForwardedMessage (richResponseMessage)` | Links dengan citation (AI) |
|
|
1344
|
-
| `table` | `botForwardedMessage (richResponseMessage)` | Tabel (AI) |
|
|
1345
|
-
| `richResponse` | `botForwardedMessage (richResponseMessage)` | Gabungan rich message (AI) |
|
|
1346
|
-
| `raw` | *(passthrough)* | Kirim proto langsung |
|
|
1347
|
-
| `ai` | *(bot node inject)* | AI icon pada pesan (private chat only) |
|
|
1348
|
-
| `secureMetaServiceLabel` | *(addBizAttributes)* | Secure meta service label |
|
|
1349
|
-
| `viewOnce` | `viewOnceMessage` | Lihat sekali |
|
|
1350
|
-
| `viewOnceV2` | `viewOnceMessageV2` | Lihat sekali V2 |
|
|
1351
|
-
| `viewOnceV2Extension` | `viewOnceMessageV2Extension` | Lihat sekali V2 extension |
|
|
1352
|
-
| `ephemeral` | `ephemeralMessage` | Wrap ephemeral |
|
|
1353
|
-
| `spoiler` | `spoilerMessage` | Wrap spoiler |
|
|
1354
|
-
| `groupStatus` | `groupStatusMessageV2` | Wrap group status |
|
|
1355
|
-
| `isLottie` | `lottieStickerMessage` | Wrap lottie sticker |
|
|
1287
|
+
## 📦 Raw Message
|
|
1356
1288
|
|
|
1357
|
-
|
|
1289
|
+
> ⚡ Kirim pesan dalam bentuk raw WAProto — untuk kontrol penuh struktur pesan~
|
|
1358
1290
|
|
|
1359
|
-
|
|
1291
|
+
```js
|
|
1292
|
+
// 🌸 Properti 'raw' akan di-bypass langsung tanpa transformasi apapun
|
|
1293
|
+
await sock.sendMessage(jid, {
|
|
1294
|
+
raw: true,
|
|
1295
|
+
extendedTextMessage: {
|
|
1296
|
+
text: 'Pesan raw langsung ke proto~ 💕'
|
|
1297
|
+
}
|
|
1298
|
+
})
|
|
1299
|
+
```
|
|
1360
1300
|
|
|
1361
|
-
|
|
1362
|
-
|---|---|
|
|
1363
|
-
| `lib/Socket/dugong.js` | Handler GROUP_STORY, ALBUM, EVENT, POLL_RESULT |
|
|
1364
|
-
| `lib/Socket/messages-send.js` | Route pesan + `getBizBinaryNode` dinamis |
|
|
1365
|
-
| `lib/Utils/messages.js` | Semua handler tipe pesan lengkap |
|
|
1366
|
-
| `lib/Utils/rich-message-utils.js` | Helper Rich Message / AI Response |
|
|
1367
|
-
| `lib/WABinary/generic-utils.js` | `getBizBinaryNode` dengan FLOWS_MAP |
|
|
1368
|
-
| `lib/Types/Message.js` | Export `ButtonType`, `ListType`, dll |
|
|
1369
|
-
| `lib/WABinary/constants.js` | `LANGUAGE_KEYWORDS` untuk syntax highlight |
|
|
1370
|
-
| `lib/Defaults/index.js` | `LEXER_REGEX`, `DONATE_URL`, `LIBRARY_NAME` |
|
|
1301
|
+
> 💡 Ketika `raw: true` ada, semua properti lain diteruskan langsung sebagai WAProto message tanpa pemrosesan tambahan~
|
|
1371
1302
|
|
|
1372
1303
|
---
|
|
1373
1304
|
|
|
1374
|
-
<div align="center">
|
|
1375
|
-
|
|
1376
|
-
|
|
1305
|
+
<div align="center">
|
|
1306
|
+
<br/>
|
|
1307
|
+
<i>🌸 Dibuat dengan cinta dan dedikasi oleh <b>NuiiS4TORU</b> 💖</i><br/>
|
|
1308
|
+
<i>✨ Semoga library ini membawa kebahagiaan dalam setiap project-mu~ 🌷</i>
|
|
1309
|
+
<br/><br/>
|
|
1310
|
+
</div>
|