@pontasockets/baileys 0.1.6

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.
Files changed (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.MD +555 -0
  3. package/WAProto/GenerateStatics.sh +4 -0
  4. package/WAProto/WAProto.proto +4775 -0
  5. package/WAProto/index.js +169661 -0
  6. package/WAProto/p.html +1 -0
  7. package/engine-requirements.js +10 -0
  8. package/lib/Defaults/index.js +120 -0
  9. package/lib/Defaults/pontasockets-version.json +3 -0
  10. package/lib/Signal/Group/ciphertext-message.js +15 -0
  11. package/lib/Signal/Group/group-session-builder.js +64 -0
  12. package/lib/Signal/Group/group_cipher.js +96 -0
  13. package/lib/Signal/Group/index.js +57 -0
  14. package/lib/Signal/Group/keyhelper.js +55 -0
  15. package/lib/Signal/Group/queue-job.js +57 -0
  16. package/lib/Signal/Group/sender-chain-key.js +34 -0
  17. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  18. package/lib/Signal/Group/sender-key-message.js +69 -0
  19. package/lib/Signal/Group/sender-key-name.js +51 -0
  20. package/lib/Signal/Group/sender-key-record.js +53 -0
  21. package/lib/Signal/Group/sender-key-state.js +99 -0
  22. package/lib/Signal/Group/sender-message-key.js +29 -0
  23. package/lib/Signal/libsignal.js +174 -0
  24. package/lib/Socket/Client/index.js +18 -0
  25. package/lib/Socket/Client/types.js +13 -0
  26. package/lib/Socket/Client/websocket.js +72 -0
  27. package/lib/Socket/business.js +260 -0
  28. package/lib/Socket/chats.js +997 -0
  29. package/lib/Socket/groups.js +332 -0
  30. package/lib/Socket/index.js +10 -0
  31. package/lib/Socket/messages-recv.js +1106 -0
  32. package/lib/Socket/messages-send.js +890 -0
  33. package/lib/Socket/newsletter.js +250 -0
  34. package/lib/Socket/socket.js +646 -0
  35. package/lib/Socket/usync.js +70 -0
  36. package/lib/Store/index.js +8 -0
  37. package/lib/Store/make-in-memory-store.js +439 -0
  38. package/lib/Store/make-ordered-dictionary.js +81 -0
  39. package/lib/Store/object-repository.js +27 -0
  40. package/lib/Types/Auth.js +2 -0
  41. package/lib/Types/Call.js +2 -0
  42. package/lib/Types/Chat.js +4 -0
  43. package/lib/Types/Contact.js +2 -0
  44. package/lib/Types/Events.js +2 -0
  45. package/lib/Types/GroupMetadata.js +2 -0
  46. package/lib/Types/Label.js +27 -0
  47. package/lib/Types/LabelAssociation.js +9 -0
  48. package/lib/Types/Message.js +7 -0
  49. package/lib/Types/Newsletter.js +18 -0
  50. package/lib/Types/Product.js +2 -0
  51. package/lib/Types/Signal.js +2 -0
  52. package/lib/Types/Socket.js +2 -0
  53. package/lib/Types/State.js +2 -0
  54. package/lib/Types/USync.js +2 -0
  55. package/lib/Types/index.js +42 -0
  56. package/lib/Utils/auth-utils.js +199 -0
  57. package/lib/Utils/browser-utils.js +35 -0
  58. package/lib/Utils/business.js +234 -0
  59. package/lib/Utils/chat-utils.js +730 -0
  60. package/lib/Utils/crypto.js +193 -0
  61. package/lib/Utils/decode-wa-message.js +217 -0
  62. package/lib/Utils/event-buffer.js +518 -0
  63. package/lib/Utils/generics.js +467 -0
  64. package/lib/Utils/history.js +94 -0
  65. package/lib/Utils/index.js +35 -0
  66. package/lib/Utils/link-preview.js +126 -0
  67. package/lib/Utils/logger.js +7 -0
  68. package/lib/Utils/lt-hash.js +51 -0
  69. package/lib/Utils/make-mutex.js +43 -0
  70. package/lib/Utils/message-retry-manager.js +128 -0
  71. package/lib/Utils/messages-media.js +879 -0
  72. package/lib/Utils/messages.js +1067 -0
  73. package/lib/Utils/noise-handler.js +150 -0
  74. package/lib/Utils/pontasockets-event-stream.js +63 -0
  75. package/lib/Utils/process-message.js +404 -0
  76. package/lib/Utils/signal.js +153 -0
  77. package/lib/Utils/use-multi-file-auth-state.js +125 -0
  78. package/lib/Utils/validate-connection.js +229 -0
  79. package/lib/WABinary/constants.js +1303 -0
  80. package/lib/WABinary/decode.js +265 -0
  81. package/lib/WABinary/encode.js +250 -0
  82. package/lib/WABinary/generic-utils.js +110 -0
  83. package/lib/WABinary/index.js +21 -0
  84. package/lib/WABinary/jid-utils.js +85 -0
  85. package/lib/WABinary/types.js +2 -0
  86. package/lib/WAM/BinaryInfo.js +13 -0
  87. package/lib/WAM/constants.js +15350 -0
  88. package/lib/WAM/encode.js +155 -0
  89. package/lib/WAM/index.js +19 -0
  90. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  91. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  92. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  93. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  94. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  95. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  96. package/lib/WAUSync/Protocols/index.js +20 -0
  97. package/lib/WAUSync/USyncQuery.js +89 -0
  98. package/lib/WAUSync/USyncUser.js +26 -0
  99. package/lib/WAUSync/index.js +19 -0
  100. package/lib/index.js +62 -0
  101. package/package.json +115 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 pontasockets
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.MD ADDED
@@ -0,0 +1,555 @@
1
+ <div align="center">
2
+
3
+ ```
4
+ ██████╗ ██████╗ ███╗ ██╗████████╗ █████╗
5
+ ██╔══██╗██╔═══██╗████╗ ██║╚══██╔══╝██╔══██╗
6
+ ██████╔╝██║ ██║██╔██╗ ██║ ██║ ███████║
7
+ ██╔═══╝ ██║ ██║██║╚██╗██║ ██║ ██╔══██║
8
+ ██║ ╚██████╔╝██║ ╚████║ ██║ ██║ ██║
9
+ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝
10
+ ███████╗ ██████╗ ██████╗██╗ ██╗███████╗████████╗███████╗
11
+ ██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝██╔════╝
12
+ ███████╗██║ ██║██║ █████╔╝ █████╗ ██║ ███████╗
13
+ ╚════██║██║ ██║██║ ██╔═██╗ ██╔══╝ ██║ ╚════██║
14
+ ███████║╚██████╔╝╚██████╗██║ ██╗███████╗ ██║ ███████║
15
+ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝
16
+ ```
17
+
18
+ ### `@pontasockets/baileys`
19
+ **WhatsApp Web API — Fork dengan Full Button, Rich Response & LID Fix**
20
+
21
+ [![npm version](https://img.shields.io/npm/v/@pontasockets/baileys.svg?style=flat-square&color=crimson)](https://www.npmjs.com/package/@pontasockets/baileys)
22
+ [![Downloads](https://img.shields.io/npm/dm/@pontasockets/baileys.svg?style=flat-square&color=blue)](https://www.npmjs.com/package/@pontasockets/baileys)
23
+ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat-square)](LICENSE)
24
+ [![Node](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen?style=flat-square)](https://nodejs.org)
25
+
26
+ </div>
27
+
28
+ ---
29
+
30
+ ## 📦 Instalasi
31
+
32
+ ```bash
33
+ npm i @pontasockets/baileys
34
+ # atau
35
+ yarn add @pontasockets/baileys
36
+ ```
37
+
38
+ ```javascript
39
+ const { default: makeWASocket } = require('@pontasockets/baileys')
40
+ // ES Module
41
+ import makeWASocket from '@pontasockets/baileys'
42
+ ```
43
+
44
+ ---
45
+
46
+ ## ✨ Fitur Tambahan vs Baileys Resmi
47
+
48
+ | Fitur | Baileys Resmi | @pontasockets/baileys |
49
+ |---|---|---|
50
+ | Native Flow Buttons | ❌ | ✅ |
51
+ | Interactive Message | ❌ | ✅ |
52
+ | List Message | ❌ | ✅ |
53
+ | Template Message | ❌ | ✅ |
54
+ | Carousel Message | ❌ | ✅ |
55
+ | **Rich Response Message** | ❌ | ✅ |
56
+ | LID → JID Resolution | ❌ | ✅ |
57
+ | Bot JID Map (Meta AI) | ❌ | ✅ |
58
+ | `getBotJid()` Utility | ❌ | ✅ |
59
+
60
+ ---
61
+
62
+ ## ⚠️ Disclaimer
63
+
64
+ Proyek ini tidak berafiliasi, tidak diotorisasi, dan tidak terhubung secara resmi dengan WhatsApp atau Meta. Gunakan dengan bijak dan bertanggung jawab. Hindari spam dan otomatisasi berlebihan.
65
+
66
+ ---
67
+
68
+ ## 🚀 Quick Start
69
+
70
+ ```javascript
71
+ const { default: makeWASocket, DisconnectReason, useMultiFileAuthState } = require('@pontasockets/baileys')
72
+ const { Boom } = require('@hapi/boom')
73
+
74
+ async function connect() {
75
+ const { state, saveCreds } = await useMultiFileAuthState('auth_info')
76
+
77
+ const sock = makeWASocket({
78
+ auth: state,
79
+ printQRInTerminal: true,
80
+ browser: ['PontaSockets', 'Desktop', '3.0']
81
+ })
82
+
83
+ sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {
84
+ if (connection === 'close') {
85
+ const shouldReconnect = (lastDisconnect?.error as Boom)?.output?.statusCode !== DisconnectReason.loggedOut
86
+ if (shouldReconnect) connect()
87
+ } else if (connection === 'open') {
88
+ console.log('✅ Terhubung!')
89
+ }
90
+ })
91
+
92
+ sock.ev.on('creds.update', saveCreds)
93
+ return sock
94
+ }
95
+
96
+ connect()
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 🔌 Koneksi
102
+
103
+ ### QR Code
104
+
105
+ ```javascript
106
+ const { default: makeWASocket, Browsers } = require('@pontasockets/baileys')
107
+
108
+ const sock = makeWASocket({
109
+ browser: Browsers.ubuntu('MyBot'),
110
+ printQRInTerminal: true
111
+ })
112
+ ```
113
+
114
+ ### Pairing Code
115
+
116
+ ```javascript
117
+ const sock = makeWASocket({ printQRInTerminal: false })
118
+
119
+ if (!sock.authState.creds.registered) {
120
+ const code = await sock.requestPairingCode('628xxxxxxxxxx')
121
+ console.log('Kode:', code)
122
+ }
123
+ ```
124
+
125
+ ### Pairing Code Custom
126
+
127
+ ```javascript
128
+ const code = await sock.requestPairingCode('628xxxxxxxxxx', 'MYKODE12') // 8 karakter
129
+ ```
130
+
131
+ ---
132
+
133
+ ## 💾 Auth State
134
+
135
+ ```javascript
136
+ const { useMultiFileAuthState } = require('@pontasockets/baileys')
137
+
138
+ const { state, saveCreds } = await useMultiFileAuthState('session')
139
+ const sock = makeWASocket({ auth: state })
140
+ sock.ev.on('creds.update', saveCreds)
141
+ ```
142
+
143
+ ---
144
+
145
+ ## 📤 Kirim Pesan
146
+
147
+ ### Teks
148
+
149
+ ```javascript
150
+ await sock.sendMessage(jid, { text: 'Halo dunia!' })
151
+ ```
152
+
153
+ ### Quote
154
+
155
+ ```javascript
156
+ await sock.sendMessage(jid, { text: 'Ini reply' }, { quoted: message })
157
+ ```
158
+
159
+ ### Mention
160
+
161
+ ```javascript
162
+ await sock.sendMessage(jid, {
163
+ text: '@628xxxxxxxxxx halo!',
164
+ mentions: ['628xxxxxxxxxx@s.whatsapp.net']
165
+ })
166
+ ```
167
+
168
+ ### Gambar
169
+
170
+ ```javascript
171
+ await sock.sendMessage(jid, {
172
+ image: { url: './foto.jpg' },
173
+ caption: 'Halo!'
174
+ })
175
+ ```
176
+
177
+ ### Video
178
+
179
+ ```javascript
180
+ await sock.sendMessage(jid, {
181
+ video: { url: './video.mp4' },
182
+ caption: 'Video keren'
183
+ })
184
+ ```
185
+
186
+ ### Audio / PTT
187
+
188
+ ```javascript
189
+ await sock.sendMessage(jid, {
190
+ audio: { url: './audio.ogg' },
191
+ mimetype: 'audio/ogg; codecs=opus',
192
+ ptt: true
193
+ })
194
+ ```
195
+
196
+ ### Dokumen
197
+
198
+ ```javascript
199
+ await sock.sendMessage(jid, {
200
+ document: { url: './file.pdf' },
201
+ mimetype: 'application/pdf',
202
+ fileName: 'dokumen.pdf'
203
+ })
204
+ ```
205
+
206
+ ### Stiker
207
+
208
+ ```javascript
209
+ await sock.sendMessage(jid, {
210
+ sticker: { url: './stiker.webp' }
211
+ })
212
+ ```
213
+
214
+ ### Lokasi
215
+
216
+ ```javascript
217
+ await sock.sendMessage(jid, {
218
+ location: { degreesLatitude: -6.2, degreesLongitude: 106.8 }
219
+ })
220
+ ```
221
+
222
+ ### Kontak
223
+
224
+ ```javascript
225
+ const vcard = `BEGIN:VCARD\nVERSION:3.0\nFN:Nama Kontak\nTEL;waid=628xxxxxxxxxx:+62 8xx xxxx xxxx\nEND:VCARD`
226
+ await sock.sendMessage(jid, { contacts: { displayName: 'Nama', contacts: [{ vcard }] } })
227
+ ```
228
+
229
+ ### Reaksi
230
+
231
+ ```javascript
232
+ await sock.sendMessage(jid, { react: { text: '🔥', key: message.key } })
233
+ ```
234
+
235
+ ### Poll
236
+
237
+ ```javascript
238
+ await sock.sendMessage(jid, {
239
+ poll: {
240
+ name: 'Pilihan favoritmu?',
241
+ values: ['Opsi A', 'Opsi B', 'Opsi C'],
242
+ selectableCount: 1
243
+ }
244
+ })
245
+ ```
246
+
247
+ ### View Once
248
+
249
+ ```javascript
250
+ await sock.sendMessage(jid, {
251
+ image: { url: './foto.jpg' },
252
+ viewOnce: true,
253
+ caption: 'Lihat sekali saja'
254
+ })
255
+ ```
256
+
257
+ ---
258
+
259
+ ## 🤖 Fitur Eksklusif
260
+
261
+ ### Native Flow Buttons
262
+
263
+ ```javascript
264
+ await sock.sendMessage(jid, {
265
+ text: 'Pilih menu:',
266
+ buttons: [
267
+ { buttonId: 'btn1', buttonText: { displayText: 'Menu 1' }, type: 1 },
268
+ { buttonId: 'btn2', buttonText: { displayText: 'Menu 2' }, type: 1 }
269
+ ]
270
+ })
271
+ ```
272
+
273
+ ### Interactive Message (CTA URL, Quick Reply, Single Select)
274
+
275
+ ```javascript
276
+ await sock.sendMessage(jid, {
277
+ interactive: {
278
+ type: 'native_flow',
279
+ header: { title: 'PontaSockets Bot', hasMediaAttachment: false },
280
+ body: { text: 'Pilih salah satu:' },
281
+ footer: { text: '@pontasockets/baileys' },
282
+ nativeFlowMessage: {
283
+ buttons: [
284
+ {
285
+ name: 'quick_reply',
286
+ buttonParamsJson: JSON.stringify({ display_text: 'Info', id: 'info' })
287
+ },
288
+ {
289
+ name: 'cta_url',
290
+ buttonParamsJson: JSON.stringify({
291
+ display_text: 'NPM',
292
+ url: 'https://npmjs.com/package/@pontasockets/baileys',
293
+ merchant_url: 'https://npmjs.com'
294
+ })
295
+ }
296
+ ]
297
+ }
298
+ }
299
+ })
300
+ ```
301
+
302
+ ### List Message
303
+
304
+ ```javascript
305
+ await sock.sendMessage(jid, {
306
+ listMessage: {
307
+ title: 'Daftar Menu',
308
+ description: 'Pilih salah satu menu',
309
+ buttonText: 'Buka Menu',
310
+ listType: 1,
311
+ sections: [
312
+ {
313
+ title: 'Kategori 1',
314
+ rows: [
315
+ { title: 'Item A', description: 'Deskripsi A', rowId: 'item_a' },
316
+ { title: 'Item B', description: 'Deskripsi B', rowId: 'item_b' }
317
+ ]
318
+ }
319
+ ]
320
+ }
321
+ })
322
+ ```
323
+
324
+ ### Carousel Message
325
+
326
+ ```javascript
327
+ await sock.sendMessage(jid, {
328
+ carousel: {
329
+ cards: [
330
+ {
331
+ header: { imageMessage: { url: './card1.jpg' } },
332
+ body: { text: 'Kartu 1' },
333
+ buttons: [{ name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Pilih', id: 'card1' }) }]
334
+ },
335
+ {
336
+ header: { imageMessage: { url: './card2.jpg' } },
337
+ body: { text: 'Kartu 2' },
338
+ buttons: [{ name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Pilih', id: 'card2' }) }]
339
+ }
340
+ ]
341
+ }
342
+ })
343
+ ```
344
+
345
+ ### Rich Response Message (AI-style)
346
+
347
+ Pesan bergaya AI Meta dengan format rich content. Stanza otomatis dikirim dengan `type: 'bot'` dan node `biz_bot`.
348
+
349
+ ```javascript
350
+ await sock.sendMessage(jid, {
351
+ richResponse: {
352
+ messageType: 1, // 0 = UNKNOWN, 1 = STANDARD
353
+ submessages: [
354
+ {
355
+ messageType: 2, // AI_RICH_RESPONSE_TEXT
356
+ messageText: 'Ini adalah jawaban AI dalam format rich response.'
357
+ },
358
+ {
359
+ messageType: 5, // AI_RICH_RESPONSE_CODE
360
+ codeMetadata: {
361
+ codeLanguage: 'javascript',
362
+ codeBlocks: [{ code: 'console.log("Hello from PontaSockets!")' }]
363
+ }
364
+ }
365
+ ]
366
+ }
367
+ })
368
+ ```
369
+
370
+ **Sub-message type enum:**
371
+
372
+ | Value | Tipe |
373
+ |---|---|
374
+ | 0 | UNKNOWN |
375
+ | 1 | GRID_IMAGE |
376
+ | 2 | TEXT |
377
+ | 3 | INLINE_IMAGE |
378
+ | 4 | TABLE |
379
+ | 5 | CODE |
380
+ | 6 | DYNAMIC |
381
+ | 7 | MAP |
382
+ | 8 | LATEX |
383
+ | 9 | CONTENT_ITEMS |
384
+
385
+ ### Bot JID / Meta AI
386
+
387
+ ```javascript
388
+ const { getBotJid, META_AI_JID } = require('@pontasockets/baileys')
389
+
390
+ // Resolve bot JID dari persona ID
391
+ const jid = getBotJid('294997126699143@bot') // → '13135550023@s.whatsapp.net'
392
+
393
+ // Meta AI default JID
394
+ console.log(META_AI_JID) // 13135550002@c.us
395
+ ```
396
+
397
+ ### LID → JID Resolution
398
+
399
+ ```javascript
400
+ const { lidToJid } = require('@pontasockets/baileys')
401
+
402
+ const jid = lidToJid('628xxxxxxxxxx@lid') // → '628xxxxxxxxxx@s.whatsapp.net'
403
+ ```
404
+
405
+ ---
406
+
407
+ ## ✏️ Operasi Pesan
408
+
409
+ ### Hapus Pesan
410
+
411
+ ```javascript
412
+ const msg = await sock.sendMessage(jid, { text: 'test' })
413
+ await sock.sendMessage(jid, { delete: msg.key })
414
+ ```
415
+
416
+ ### Edit Pesan
417
+
418
+ ```javascript
419
+ await sock.sendMessage(jid, {
420
+ text: 'Teks yang sudah diedit',
421
+ edit: message.key
422
+ })
423
+ ```
424
+
425
+ ### Download Media
426
+
427
+ ```javascript
428
+ const { downloadMediaMessage } = require('@pontasockets/baileys')
429
+
430
+ const buffer = await downloadMediaMessage(message, 'buffer', {}, {
431
+ logger,
432
+ reuploadRequest: sock.updateMediaMessage
433
+ })
434
+ ```
435
+
436
+ ---
437
+
438
+ ## 👥 Grup
439
+
440
+ ```javascript
441
+ // Buat grup
442
+ const group = await sock.groupCreate('Nama Grup', ['628xxx@s.whatsapp.net'])
443
+
444
+ // Tambah / hapus / promote / demote
445
+ await sock.groupParticipantsUpdate(jid, ['628xxx@s.whatsapp.net'], 'add')
446
+
447
+ // Metadata
448
+ const meta = await sock.groupMetadata(jid)
449
+
450
+ // Kode undangan
451
+ const code = await sock.groupInviteCode(jid)
452
+ // Link: https://chat.whatsapp.com/ + code
453
+
454
+ // Keluar
455
+ await sock.groupLeave(jid)
456
+ ```
457
+
458
+ ---
459
+
460
+ ## 🔒 Privasi
461
+
462
+ ```javascript
463
+ await sock.updateBlockStatus(jid, 'block') // blokir
464
+ await sock.updateBlockStatus(jid, 'unblock') // buka blokir
465
+ await sock.updateLastSeenPrivacy('contacts')
466
+ await sock.updateOnlinePrivacy('all')
467
+ await sock.updateProfilePicturePrivacy('contacts')
468
+ await sock.updateReadReceiptsPrivacy('all')
469
+ ```
470
+
471
+ ---
472
+
473
+ ## 🗄️ In-Memory Store
474
+
475
+ ```javascript
476
+ const { makeInMemoryStore } = require('@pontasockets/baileys')
477
+
478
+ const store = makeInMemoryStore({})
479
+ store.readFromFile('./pontasockets_store.json')
480
+ setInterval(() => store.writeToFile('./pontasockets_store.json'), 10_000)
481
+
482
+ store.bind(sock.ev)
483
+ ```
484
+
485
+ ---
486
+
487
+ ## ⚙️ Konfigurasi Socket
488
+
489
+ ```javascript
490
+ const NodeCache = require('node-cache')
491
+ const groupCache = new NodeCache({ stdTTL: 300, useClones: false })
492
+
493
+ const sock = makeWASocket({
494
+ auth: state,
495
+ printQRInTerminal: true,
496
+ browser: ['PontaSockets', 'Desktop', '3.0'],
497
+ markOnlineOnConnect: false, // terima notifikasi push
498
+ syncFullHistory: false,
499
+ cachedGroupMetadata: async (jid) => groupCache.get(jid),
500
+ getMessage: async (key) => store.loadMessage(key.remoteJid, key.id)
501
+ })
502
+
503
+ sock.ev.on('groups.update', async ([e]) => {
504
+ groupCache.set(e.id, await sock.groupMetadata(e.id))
505
+ })
506
+ ```
507
+
508
+ ---
509
+
510
+ ## 📋 ID WhatsApp (JID)
511
+
512
+ | Tipe | Format |
513
+ |---|---|
514
+ | User | `628xxxxxxxxxx@s.whatsapp.net` |
515
+ | Grup | `120363xxxxxxxxx@g.us` |
516
+ | Newsletter | `120363xxxxxxxxx@newsletter` |
517
+ | Broadcast | `xxxxxxxxxx@broadcast` |
518
+ | Story | `status@broadcast` |
519
+ | Bot/Meta AI | `13135550xxx@s.whatsapp.net` |
520
+
521
+ ---
522
+
523
+ ## 🛠️ Utilitas
524
+
525
+ ```javascript
526
+ const {
527
+ getContentType,
528
+ getDevice,
529
+ makeCacheableSignalKeyStore,
530
+ downloadContentFromMessage,
531
+ getBotJid,
532
+ lidToJid,
533
+ isJidGroup,
534
+ isJidNewsletter,
535
+ isJidMetaAi,
536
+ isJidBot,
537
+ META_AI_JID
538
+ } = require('@pontasockets/baileys')
539
+ ```
540
+
541
+ ---
542
+
543
+ ## 📄 Lisensi
544
+
545
+ MIT License — bebas digunakan dan dimodifikasi.
546
+
547
+ ---
548
+
549
+ <div align="center">
550
+
551
+ **@pontasockets/baileys**
552
+ Fork dari Baileys dengan tambahan fitur button, interactive, rich response & LID fix
553
+ by **PontaSockets**
554
+
555
+ </div>
@@ -0,0 +1,4 @@
1
+ yarn pbjs -t static-module -w commonjs -o ./WAProto/index.js ./WAProto/WAProto.proto;
2
+ yarn pbts -o ./WAProto/index.d.ts ./WAProto/index.js;
3
+
4
+ #protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_opt=env=node,useOptionals=true,forceLong=long --ts_proto_out=. ./src/Binary/WAMessage.proto;