rynkai 0.3.1 → 0.4.1
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 +70 -41
- package/dist/core/Client.d.ts +29 -0
- package/dist/core/Client.d.ts.map +1 -1
- package/dist/core/Client.js +33 -0
- package/dist/core/Client.js.map +1 -1
- package/dist/core/broadcast.d.ts +23 -0
- package/dist/core/broadcast.d.ts.map +1 -0
- package/dist/core/broadcast.js +29 -0
- package/dist/core/broadcast.js.map +1 -0
- package/dist/core/broadcast.test.d.ts +2 -0
- package/dist/core/broadcast.test.d.ts.map +1 -0
- package/dist/core/broadcast.test.js +55 -0
- package/dist/core/broadcast.test.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/message/MessageBuilder.d.ts +5 -0
- package/dist/message/MessageBuilder.d.ts.map +1 -1
- package/dist/message/MessageBuilder.js +19 -0
- package/dist/message/MessageBuilder.js.map +1 -1
- package/dist/message/MessageParser.d.ts.map +1 -1
- package/dist/message/MessageParser.js +43 -5
- package/dist/message/MessageParser.js.map +1 -1
- package/dist/message/MessageParser.test.js +66 -0
- package/dist/message/MessageParser.test.js.map +1 -1
- package/dist/message/vcard.d.ts +19 -0
- package/dist/message/vcard.d.ts.map +1 -0
- package/dist/message/vcard.js +32 -0
- package/dist/message/vcard.js.map +1 -0
- package/dist/message/vcard.test.d.ts +2 -0
- package/dist/message/vcard.test.d.ts.map +1 -0
- package/dist/message/vcard.test.js +37 -0
- package/dist/message/vcard.test.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,8 +40,6 @@ await bot.connect();
|
|
|
40
40
|
|
|
41
41
|
## Plugin system
|
|
42
42
|
|
|
43
|
-
Plugin format-nya sengaja mirip gaya rynk4: `{ name, command, category, execute() }`.
|
|
44
|
-
|
|
45
43
|
```ts
|
|
46
44
|
// plugins/hello.ts
|
|
47
45
|
import type { Plugin } from 'rynkai';
|
|
@@ -64,6 +62,75 @@ await bot.plugins.loadFromDirectory('./plugins');
|
|
|
64
62
|
await bot.connect();
|
|
65
63
|
```
|
|
66
64
|
|
|
65
|
+
## Broadcast ke banyak chat
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import { MessageBuilder } from 'rynkai';
|
|
69
|
+
|
|
70
|
+
const results = await bot.broadcast(
|
|
71
|
+
['628111111111@s.whatsapp.net', '628222222222@s.whatsapp.net'],
|
|
72
|
+
MessageBuilder.text('Pengumuman: maintenance jam 10 malam ini.'),
|
|
73
|
+
{
|
|
74
|
+
onProgress: ({ sent, total, current }) => {
|
|
75
|
+
console.log(`${sent}/${total} — ${current.chatId}: ${current.success ? 'OK' : 'GAGAL'}`);
|
|
76
|
+
},
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
const gagal = results.filter((r) => !r.success);
|
|
81
|
+
console.log(`${gagal.length} chat gagal dikirim.`);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Tiap pengiriman tetap lewat **send queue** yang sama (throttle dari config `sendQueue` tetap berlaku — lihat bagian di atas), jadi broadcast tidak langsung membanjiri WA dalam waktu bersamaan. Satu chat gagal (nomor tidak valid, dsb) tidak menghentikan pengiriman ke chat lainnya.
|
|
85
|
+
|
|
86
|
+
> ⚠️ **Pakai dengan hati-hati.** Mengirim pesan masif ke banyak nomor asing (terutama yang belum pernah chat dengan bot) meningkatkan risiko akun WA kena flag/banned. Ini risiko bawaan ekosistem WhatsApp/Baileys, bukan sesuatu yang bisa dicegah sepenuhnya oleh library manapun — pertimbangkan cuma broadcast ke user yang sudah pernah interaksi dengan bot.
|
|
87
|
+
|
|
88
|
+
## Deteksi pesan "lihat sekali" (view once)
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
bot.on('message', async (msg) => {
|
|
92
|
+
if (msg.isViewOnce) {
|
|
93
|
+
console.log(`Pesan view-once masuk, tipe aslinya: ${msg.type}`); // image/video/dst
|
|
94
|
+
|
|
95
|
+
// Download medianya segera saat masuk — berguna kalau mau menyimpan
|
|
96
|
+
// sebelum "kesempatan lihat" terpakai di WhatsApp resmi.
|
|
97
|
+
const buffer = await bot.downloadMedia(msg);
|
|
98
|
+
// simpan buffer, forward ke chat lain, dst — terserah kebutuhanmu
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`msg.type` tetap menunjukkan tipe konten aslinya (`'image'`, `'video'`, dst) — `isViewOnce` cuma penanda tambahan, bukan tipe terpisah. `bot.downloadMedia()` bekerja normal untuk pesan view-once, tidak perlu penanganan khusus.
|
|
104
|
+
|
|
105
|
+
> Perlu diingat secara etis: fitur ini murni teknis (baca metadata & media yang memang terkirim ke akun bot). Pemakaiannya tetap tanggung jawabmu — hormati privasi orang yang mengirim pesan view-once.
|
|
106
|
+
|
|
107
|
+
## Contact / vcard sharing
|
|
108
|
+
|
|
109
|
+
```ts
|
|
110
|
+
import { MessageBuilder, extractPhoneFromVCard } from 'rynkai';
|
|
111
|
+
await bot.sendContact(chatId, { name: 'Budi', phone: '628123456789' });
|
|
112
|
+
|
|
113
|
+
// Atau lewat MessageBuilder kalau butuh payload-nya langsung
|
|
114
|
+
await bot.send(chatId, MessageBuilder.contact({ name: 'Budi', phone: '628123456789', organization: 'PT Maju' }));
|
|
115
|
+
|
|
116
|
+
// Kirim beberapa kontak sekaligus
|
|
117
|
+
await bot.sendContacts(chatId, [
|
|
118
|
+
{ name: 'Budi', phone: '628123456789' },
|
|
119
|
+
{ name: 'Ani', phone: '628987654321' },
|
|
120
|
+
]);
|
|
121
|
+
|
|
122
|
+
// Terima kontak yang di-share orang lain ke bot
|
|
123
|
+
bot.on('message', (msg) => {
|
|
124
|
+
if (msg.type === 'contact' && msg.contacts) {
|
|
125
|
+
for (const c of msg.contacts) {
|
|
126
|
+
console.log(c.displayName, extractPhoneFromVCard(c.vcard));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Nomor telepon otomatis dibersihkan dari spasi/strip/tanda plus — cukup isi `phone` dengan format apapun asal ada kode negaranya (`'+62 812-3456-789'` atau `'628123456789'` sama-sama valid).
|
|
133
|
+
|
|
67
134
|
## Sticker maker
|
|
68
135
|
|
|
69
136
|
Butuh package tambahan:
|
|
@@ -99,8 +166,6 @@ await bot.sendAnimatedSticker(chatId, videoBuffer, { packname: 'Bot Aku' });
|
|
|
99
166
|
// otomatis dipotong maksimal 6 detik pertama
|
|
100
167
|
```
|
|
101
168
|
|
|
102
|
-
> **Catatan kompatibilitas:** `sharp` adalah native binding (butuh libvips terkompilasi). Di kebanyakan platform (Linux x64/arm64 server, macOS, Windows, GitHub Actions) ini terinstall otomatis lewat prebuilt binary. Tapi di **Termux/Android ARM64**, prebuilt binary sharp sering tidak tersedia — kalau kamu develop bot di HP lewat Termux, fitur sticker gambar mungkin tidak berfungsi sampai kamu install libvips manual (lihat [dokumentasi instalasi sharp](https://sharp.pixelplumbing.com/install)) atau pakai varian WASM-nya. Ini bukan bug di rynkai, melainkan keterbatasan platform Termux itu sendiri.
|
|
103
|
-
|
|
104
169
|
## Blocklist / whitelist user & grup
|
|
105
170
|
|
|
106
171
|
```ts
|
|
@@ -346,17 +411,6 @@ bot.on('error', (err, { source, message }) => {
|
|
|
346
411
|
});
|
|
347
412
|
```
|
|
348
413
|
|
|
349
|
-
## Hal yang perlu diperhatikan sebelum produksi
|
|
350
|
-
|
|
351
|
-
rynkai membungkus Baileys dan menambah fitur di atasnya, tapi ada beberapa hal di luar kendali library ini yang tetap perlu kamu pertimbangkan sendiri:
|
|
352
|
-
|
|
353
|
-
- **Baileys itu unofficial API** — bukan API resmi Meta/WhatsApp. Risiko akun kena banned/flag selalu ada terlepas library apapun yang dipakai di atasnya, terutama kalau kirim pesan masif/spam ke banyak nomor asing.
|
|
354
|
-
- **`FileSessionStore` menyimpan kredensial sesi sebagai file JSON polos di disk**, tidak dienkripsi. Kalau server/device kamu diakses orang lain, sesi WA bisa dicuri. Untuk deployment produksi, pastikan folder `.rynkai-sessions/` dijaga (permission file, tidak masuk backup publik, dst), atau implement `SessionStore` custom yang enkripsi datanya.
|
|
355
|
-
- **Plugin loader pakai `require()` dinamis** — kalau folder plugin bisa diisi orang lain (misal upload file dari user tanpa validasi), itu sama saja dengan remote code execution. Jangan expose folder plugin ke input yang tidak terpercaya.
|
|
356
|
-
- **Belum ada integration test** terhadap koneksi WhatsApp asli (test suite yang ada murni unit test logic internal seperti parser/plugin loader/rate limiter) — karena butuh akun WA aktif buat testing end-to-end.
|
|
357
|
-
|
|
358
|
-
Ini normal untuk semua project di atas Baileys, bukan hal yang bisa "diselesaikan" library — tapi penting untuk disadari sebelum menganggap sesuatu "aman" secara menyeluruh.
|
|
359
|
-
|
|
360
414
|
## Testing
|
|
361
415
|
|
|
362
416
|
```bash
|
|
@@ -364,29 +418,4 @@ npm test # run sekali
|
|
|
364
418
|
npm run test:watch # mode watch
|
|
365
419
|
```
|
|
366
420
|
|
|
367
|
-
Test coverage saat ini: `MessageParser`, `PluginLoader` (termasuk cooldown), `RateLimiter`, `Middleware` (compose/onion), `SendQueue`.
|
|
368
|
-
|
|
369
|
-
## Status
|
|
370
|
-
|
|
371
|
-
Masih tahap awal (0.1.0). Yang sudah ada:
|
|
372
|
-
- [x] Core client (connect, reconnect, QR/pairing code)
|
|
373
|
-
- [x] Normalized message parsing (text, media, quoted)
|
|
374
|
-
- [x] Plugin loader + cooldown
|
|
375
|
-
- [x] FileSessionStore default
|
|
376
|
-
- [x] MessageBuilder helper
|
|
377
|
-
- [x] Middleware/hooks sebelum plugin dieksekusi
|
|
378
|
-
- [x] Rate limiter global (terpisah dari cooldown per-plugin)
|
|
379
|
-
- [x] Media downloader helper (`client.downloadMedia()`)
|
|
380
|
-
- [x] Message send queue dengan throttle (anti rate-limit WA)
|
|
381
|
-
- [x] Presence helper (`sendTyping`, `sendPresence`)
|
|
382
|
-
- [x] Group helpers (metadata, add/remove/promote/demote, join-leave event)
|
|
383
|
-
- [x] Interactive messages (button, list, poll)
|
|
384
|
-
- [x] Test suite (MessageParser, PluginLoader, RateLimiter, Middleware, SendQueue)
|
|
385
|
-
- [x] GitHub Actions CI (auto build+test tiap push/PR, matrix Node 20 & 22)
|
|
386
|
-
- [x] Message reactions (`react`, `removeReaction`) & read receipt (`markAsRead`, `autoRead`)
|
|
387
|
-
- [x] Graceful shutdown (`disconnect()`) + reconnect exponential backoff dengan jitter
|
|
388
|
-
- [x] Blocklist/whitelist user & grup built-in (`AccessControl`)
|
|
389
|
-
- [x] Sticker maker (`createSticker`, `createAnimatedSticker`, `sendSticker`, `sendAnimatedSticker`)
|
|
390
|
-
|
|
391
|
-
Belum ada (rencana selanjutnya):
|
|
392
|
-
- [x] ~~CLI scaffold (`npx create-rynkai-bot`)~~ — sudah tersedia sebagai package terpisah
|
|
421
|
+
Test coverage saat ini: `MessageParser`, `PluginLoader` (termasuk cooldown), `RateLimiter`, `Middleware` (compose/onion), `SendQueue`.
|
package/dist/core/Client.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type WASocket, type AnyMessageContent, type WAPresence, type GroupMetadata, type ParticipantAction } from '@whiskeysockets/baileys';
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import type { NormalizedMessage, RynkaiConfig } from '../types';
|
|
4
|
+
import type { VCardOptions } from '../message/vcard';
|
|
4
5
|
import { PluginLoader } from '../plugin/PluginLoader';
|
|
5
6
|
import { type Middleware } from './Middleware';
|
|
6
7
|
import { type StickerOptions } from '../sticker/createSticker';
|
|
8
|
+
import { type BroadcastResult, type BroadcastProgress } from './broadcast';
|
|
7
9
|
export interface GroupParticipantsEvent {
|
|
8
10
|
groupId: string;
|
|
9
11
|
action: ParticipantAction;
|
|
@@ -80,6 +82,33 @@ export declare class Client extends EventEmitter {
|
|
|
80
82
|
* Butuh `ffmpeg` terinstall di sistem (lihat dokumentasi createAnimatedSticker).
|
|
81
83
|
*/
|
|
82
84
|
sendAnimatedSticker(chatId: string, videoBuffer: Buffer, options?: StickerOptions): Promise<void>;
|
|
85
|
+
/** Bagikan satu kontak (nama + nomor telepon) sebagai vcard ke sebuah chat. */
|
|
86
|
+
sendContact(chatId: string, contact: VCardOptions): Promise<void>;
|
|
87
|
+
/** Bagikan beberapa kontak sekaligus dalam satu pesan. */
|
|
88
|
+
sendContacts(chatId: string, contacts: VCardOptions[]): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Kirim pesan yang sama ke banyak chat sekaligus, dengan progress callback.
|
|
91
|
+
* Tiap pengiriman tetap lewat send queue yang sama (throttle dari config
|
|
92
|
+
* `sendQueue` tetap berlaku), jadi broadcast tidak langsung membanjiri WA
|
|
93
|
+
* dalam waktu bersamaan. Satu chat gagal tidak menghentikan chat lainnya.
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* const results = await bot.broadcast(
|
|
97
|
+
* ['628111@s.whatsapp.net', '628222@s.whatsapp.net'],
|
|
98
|
+
* MessageBuilder.text('Pengumuman penting!'),
|
|
99
|
+
* { onProgress: ({ sent, total }) => console.log(`${sent}/${total}`) }
|
|
100
|
+
* );
|
|
101
|
+
* const gagal = results.filter((r) => !r.success);
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* ⚠️ Pakai dengan hati-hati: mengirim pesan masif ke banyak nomor asing
|
|
105
|
+
* (terutama yang belum pernah chat dengan bot) meningkatkan risiko akun
|
|
106
|
+
* WA kena flag/banned. Ini risiko bawaan ekosistem WhatsApp, bukan sesuatu
|
|
107
|
+
* yang bisa dicegah sepenuhnya oleh library manapun.
|
|
108
|
+
*/
|
|
109
|
+
broadcast(chatIds: string[], content: AnyMessageContent, options?: {
|
|
110
|
+
onProgress?: (progress: BroadcastProgress) => void;
|
|
111
|
+
}): Promise<BroadcastResult[]>;
|
|
83
112
|
/** Beri reaction emoji ke sebuah pesan. Lewat send queue juga (throttle sama seperti send/reply). */
|
|
84
113
|
react(message: NormalizedMessage, emoji: string): Promise<void>;
|
|
85
114
|
/** Hapus reaction yang sudah dikirim ke sebuah pesan. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"AAAA,OAAqB,EAGnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAiB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Client.js
CHANGED
|
@@ -42,6 +42,7 @@ const events_1 = require("events");
|
|
|
42
42
|
const pino_1 = __importDefault(require("pino"));
|
|
43
43
|
const FileSessionStore_1 = require("../session/FileSessionStore");
|
|
44
44
|
const MessageParser_1 = require("../message/MessageParser");
|
|
45
|
+
const MessageBuilder_1 = require("../message/MessageBuilder");
|
|
45
46
|
const PluginLoader_1 = require("../plugin/PluginLoader");
|
|
46
47
|
const Middleware_1 = require("./Middleware");
|
|
47
48
|
const RateLimiter_1 = require("./RateLimiter");
|
|
@@ -49,6 +50,7 @@ const SendQueue_1 = require("./SendQueue");
|
|
|
49
50
|
const Backoff_1 = require("./Backoff");
|
|
50
51
|
const downloadMedia_1 = require("../media/downloadMedia");
|
|
51
52
|
const createSticker_1 = require("../sticker/createSticker");
|
|
53
|
+
const broadcast_1 = require("./broadcast");
|
|
52
54
|
/**
|
|
53
55
|
* Client utama rynkai. Bungkus WASocket Baileys dan expose API yang lebih
|
|
54
56
|
* sederhana: client.on('message', ...), client.send(...), plugin otomatis
|
|
@@ -260,6 +262,37 @@ class Client extends events_1.EventEmitter {
|
|
|
260
262
|
const sticker = await (0, createSticker_1.createAnimatedSticker)(videoBuffer, options);
|
|
261
263
|
await this.send(chatId, { sticker });
|
|
262
264
|
}
|
|
265
|
+
/** Bagikan satu kontak (nama + nomor telepon) sebagai vcard ke sebuah chat. */
|
|
266
|
+
async sendContact(chatId, contact) {
|
|
267
|
+
await this.send(chatId, MessageBuilder_1.MessageBuilder.contact(contact));
|
|
268
|
+
}
|
|
269
|
+
/** Bagikan beberapa kontak sekaligus dalam satu pesan. */
|
|
270
|
+
async sendContacts(chatId, contacts) {
|
|
271
|
+
await this.send(chatId, MessageBuilder_1.MessageBuilder.contacts(contacts));
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Kirim pesan yang sama ke banyak chat sekaligus, dengan progress callback.
|
|
275
|
+
* Tiap pengiriman tetap lewat send queue yang sama (throttle dari config
|
|
276
|
+
* `sendQueue` tetap berlaku), jadi broadcast tidak langsung membanjiri WA
|
|
277
|
+
* dalam waktu bersamaan. Satu chat gagal tidak menghentikan chat lainnya.
|
|
278
|
+
*
|
|
279
|
+
* ```ts
|
|
280
|
+
* const results = await bot.broadcast(
|
|
281
|
+
* ['628111@s.whatsapp.net', '628222@s.whatsapp.net'],
|
|
282
|
+
* MessageBuilder.text('Pengumuman penting!'),
|
|
283
|
+
* { onProgress: ({ sent, total }) => console.log(`${sent}/${total}`) }
|
|
284
|
+
* );
|
|
285
|
+
* const gagal = results.filter((r) => !r.success);
|
|
286
|
+
* ```
|
|
287
|
+
*
|
|
288
|
+
* ⚠️ Pakai dengan hati-hati: mengirim pesan masif ke banyak nomor asing
|
|
289
|
+
* (terutama yang belum pernah chat dengan bot) meningkatkan risiko akun
|
|
290
|
+
* WA kena flag/banned. Ini risiko bawaan ekosistem WhatsApp, bukan sesuatu
|
|
291
|
+
* yang bisa dicegah sepenuhnya oleh library manapun.
|
|
292
|
+
*/
|
|
293
|
+
async broadcast(chatIds, content, options = {}) {
|
|
294
|
+
return (0, broadcast_1.runBroadcast)(chatIds, (chatId) => this.send(chatId, content), options.onProgress);
|
|
295
|
+
}
|
|
263
296
|
/** Beri reaction emoji ke sebuah pesan. Lewat send queue juga (throttle sama seperti send/reply). */
|
|
264
297
|
async react(message, emoji) {
|
|
265
298
|
if (!this.sock)
|
package/dist/core/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface BroadcastResult {
|
|
2
|
+
chatId: string;
|
|
3
|
+
success: boolean;
|
|
4
|
+
error?: unknown;
|
|
5
|
+
}
|
|
6
|
+
export interface BroadcastProgress {
|
|
7
|
+
/** Jumlah chat yang sudah diproses (berhasil maupun gagal) */
|
|
8
|
+
sent: number;
|
|
9
|
+
/** Total chat yang jadi target broadcast */
|
|
10
|
+
total: number;
|
|
11
|
+
/** Hasil pengiriman ke chat yang baru saja diproses */
|
|
12
|
+
current: BroadcastResult;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Jalankan pengiriman ke banyak chatId secara berurutan, panggil sendFn
|
|
16
|
+
* untuk tiap chat, dan laporkan progress lewat callback opsional. Satu
|
|
17
|
+
* chat gagal tidak menghentikan broadcast — chat berikutnya tetap diproses.
|
|
18
|
+
*
|
|
19
|
+
* Dipisah dari Client supaya logic ini bisa di-test tanpa perlu koneksi
|
|
20
|
+
* WhatsApp asli (sendFn di-mock di test).
|
|
21
|
+
*/
|
|
22
|
+
export declare function runBroadcast(chatIds: string[], sendFn: (chatId: string) => Promise<void>, onProgress?: (progress: BroadcastProgress) => void): Promise<BroadcastResult[]>;
|
|
23
|
+
//# sourceMappingURL=broadcast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/core/broadcast.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACzC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GACjD,OAAO,CAAC,eAAe,EAAE,CAAC,CAmB5B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runBroadcast = runBroadcast;
|
|
4
|
+
/**
|
|
5
|
+
* Jalankan pengiriman ke banyak chatId secara berurutan, panggil sendFn
|
|
6
|
+
* untuk tiap chat, dan laporkan progress lewat callback opsional. Satu
|
|
7
|
+
* chat gagal tidak menghentikan broadcast — chat berikutnya tetap diproses.
|
|
8
|
+
*
|
|
9
|
+
* Dipisah dari Client supaya logic ini bisa di-test tanpa perlu koneksi
|
|
10
|
+
* WhatsApp asli (sendFn di-mock di test).
|
|
11
|
+
*/
|
|
12
|
+
async function runBroadcast(chatIds, sendFn, onProgress) {
|
|
13
|
+
const results = [];
|
|
14
|
+
for (let i = 0; i < chatIds.length; i++) {
|
|
15
|
+
const chatId = chatIds[i];
|
|
16
|
+
let result;
|
|
17
|
+
try {
|
|
18
|
+
await sendFn(chatId);
|
|
19
|
+
result = { chatId, success: true };
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
result = { chatId, success: false, error };
|
|
23
|
+
}
|
|
24
|
+
results.push(result);
|
|
25
|
+
onProgress?.({ sent: i + 1, total: chatIds.length, current: result });
|
|
26
|
+
}
|
|
27
|
+
return results;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=broadcast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../src/core/broadcast.ts"],"names":[],"mappings":";;AAuBA,oCAuBC;AA/BD;;;;;;;GAOG;AACI,KAAK,UAAU,YAAY,CAChC,OAAiB,EACjB,MAAyC,EACzC,UAAkD;IAElD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAuB,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.test.d.ts","sourceRoot":"","sources":["../../src/core/broadcast.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const broadcast_1 = require("./broadcast");
|
|
5
|
+
(0, vitest_1.describe)('runBroadcast', () => {
|
|
6
|
+
(0, vitest_1.it)('mengirim ke semua chatId secara berurutan', async () => {
|
|
7
|
+
const sent = [];
|
|
8
|
+
const sendFn = vitest_1.vi.fn(async (chatId) => {
|
|
9
|
+
sent.push(chatId);
|
|
10
|
+
});
|
|
11
|
+
const results = await (0, broadcast_1.runBroadcast)(['a', 'b', 'c'], sendFn);
|
|
12
|
+
(0, vitest_1.expect)(sent).toEqual(['a', 'b', 'c']);
|
|
13
|
+
(0, vitest_1.expect)(results).toHaveLength(3);
|
|
14
|
+
(0, vitest_1.expect)(results.every((r) => r.success)).toBe(true);
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('mencatat chat yang gagal tanpa menghentikan chat berikutnya', async () => {
|
|
17
|
+
const sendFn = vitest_1.vi.fn(async (chatId) => {
|
|
18
|
+
if (chatId === 'b')
|
|
19
|
+
throw new Error('gagal kirim ke b');
|
|
20
|
+
});
|
|
21
|
+
const results = await (0, broadcast_1.runBroadcast)(['a', 'b', 'c'], sendFn);
|
|
22
|
+
(0, vitest_1.expect)(sendFn).toHaveBeenCalledTimes(3); // tetap lanjut ke 'c' walau 'b' gagal
|
|
23
|
+
(0, vitest_1.expect)(results[0]).toEqual({ chatId: 'a', success: true });
|
|
24
|
+
(0, vitest_1.expect)(results[1].success).toBe(false);
|
|
25
|
+
(0, vitest_1.expect)(results[1].error).toBeInstanceOf(Error);
|
|
26
|
+
(0, vitest_1.expect)(results[2]).toEqual({ chatId: 'c', success: true });
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('memanggil onProgress setelah tiap chat diproses, dengan angka yang benar', async () => {
|
|
29
|
+
const sendFn = vitest_1.vi.fn(async () => { });
|
|
30
|
+
const onProgress = vitest_1.vi.fn();
|
|
31
|
+
await (0, broadcast_1.runBroadcast)(['a', 'b'], sendFn, onProgress);
|
|
32
|
+
(0, vitest_1.expect)(onProgress).toHaveBeenCalledTimes(2);
|
|
33
|
+
(0, vitest_1.expect)(onProgress).toHaveBeenNthCalledWith(1, {
|
|
34
|
+
sent: 1,
|
|
35
|
+
total: 2,
|
|
36
|
+
current: { chatId: 'a', success: true },
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.expect)(onProgress).toHaveBeenNthCalledWith(2, {
|
|
39
|
+
sent: 2,
|
|
40
|
+
total: 2,
|
|
41
|
+
current: { chatId: 'b', success: true },
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)('return array kosong untuk daftar chatId kosong, tanpa memanggil sendFn', async () => {
|
|
45
|
+
const sendFn = vitest_1.vi.fn(async () => { });
|
|
46
|
+
const results = await (0, broadcast_1.runBroadcast)([], sendFn);
|
|
47
|
+
(0, vitest_1.expect)(results).toEqual([]);
|
|
48
|
+
(0, vitest_1.expect)(sendFn).not.toHaveBeenCalled();
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.it)('onProgress bersifat opsional, tidak error kalau tidak diisi', async () => {
|
|
51
|
+
const sendFn = vitest_1.vi.fn(async () => { });
|
|
52
|
+
await (0, vitest_1.expect)((0, broadcast_1.runBroadcast)(['a'], sendFn)).resolves.toHaveLength(1);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=broadcast.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.test.js","sourceRoot":"","sources":["../../src/core/broadcast.test.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAClD,2CAA2C;AAE3C,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,WAAE,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,WAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAY,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5D,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,MAAM,GAAG,WAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;YAC5C,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAY,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;QAC/E,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAG,WAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAE3B,MAAM,IAAA,wBAAY,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE;YAC5C,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;SACxC,CAAC,CAAC;QACH,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE;YAC5C,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,MAAM,GAAG,WAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAY,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,MAAM,GAAG,WAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,MAAM,IAAA,eAAM,EAAC,IAAA,wBAAY,EAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export { Backoff } from './core/Backoff';
|
|
|
9
9
|
export { AccessControl } from './core/AccessControl';
|
|
10
10
|
export { downloadMedia } from './media/downloadMedia';
|
|
11
11
|
export { createSticker, createAnimatedSticker } from './sticker/createSticker';
|
|
12
|
+
export { buildVCard, extractPhoneFromVCard } from './message/vcard';
|
|
13
|
+
export { runBroadcast } from './core/broadcast';
|
|
12
14
|
export type { NormalizedMessage, NormalizedMessageType, SessionStore, Plugin, PluginContext, RynkaiConfig, } from './types';
|
|
13
15
|
export type { Middleware, NextFunction } from './core/Middleware';
|
|
14
16
|
export type { RateLimitConfig } from './core/RateLimiter';
|
|
@@ -16,5 +18,7 @@ export type { SendQueueConfig } from './core/SendQueue';
|
|
|
16
18
|
export type { BackoffConfig } from './core/Backoff';
|
|
17
19
|
export type { AccessControlConfig, AccessControlMode } from './core/AccessControl';
|
|
18
20
|
export type { StickerOptions } from './sticker/createSticker';
|
|
21
|
+
export type { VCardOptions } from './message/vcard';
|
|
22
|
+
export type { BroadcastResult, BroadcastProgress } from './core/broadcast';
|
|
19
23
|
export type { GroupParticipantsEvent, RynkaiEvents } from './core/Client';
|
|
20
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createAnimatedSticker = exports.createSticker = exports.downloadMedia = exports.AccessControl = exports.Backoff = exports.SendQueue = exports.compose = exports.RateLimiter = exports.PluginLoader = exports.MessageBuilder = exports.FileSessionStore = exports.Client = void 0;
|
|
3
|
+
exports.runBroadcast = exports.extractPhoneFromVCard = exports.buildVCard = exports.createAnimatedSticker = exports.createSticker = exports.downloadMedia = exports.AccessControl = exports.Backoff = exports.SendQueue = exports.compose = exports.RateLimiter = exports.PluginLoader = exports.MessageBuilder = exports.FileSessionStore = exports.Client = void 0;
|
|
4
4
|
var Client_1 = require("./core/Client");
|
|
5
5
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
|
|
6
6
|
var FileSessionStore_1 = require("./session/FileSessionStore");
|
|
@@ -24,4 +24,9 @@ Object.defineProperty(exports, "downloadMedia", { enumerable: true, get: functio
|
|
|
24
24
|
var createSticker_1 = require("./sticker/createSticker");
|
|
25
25
|
Object.defineProperty(exports, "createSticker", { enumerable: true, get: function () { return createSticker_1.createSticker; } });
|
|
26
26
|
Object.defineProperty(exports, "createAnimatedSticker", { enumerable: true, get: function () { return createSticker_1.createAnimatedSticker; } });
|
|
27
|
+
var vcard_1 = require("./message/vcard");
|
|
28
|
+
Object.defineProperty(exports, "buildVCard", { enumerable: true, get: function () { return vcard_1.buildVCard; } });
|
|
29
|
+
Object.defineProperty(exports, "extractPhoneFromVCard", { enumerable: true, get: function () { return vcard_1.extractPhoneFromVCard; } });
|
|
30
|
+
var broadcast_1 = require("./core/broadcast");
|
|
31
|
+
Object.defineProperty(exports, "runBroadcast", { enumerable: true, get: function () { return broadcast_1.runBroadcast; } });
|
|
27
32
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AACzB,2DAA0D;AAAjD,gHAAA,cAAc,OAAA;AACvB,sDAAqD;AAA5C,4GAAA,YAAY,OAAA;AACrB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,gDAA4C;AAAnC,qGAAA,OAAO,OAAA;AAChB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AACtB,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,yDAA+E;AAAtE,8GAAA,aAAa,OAAA;AAAE,sHAAA,qBAAqB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,+DAA8D;AAArD,oHAAA,gBAAgB,OAAA;AACzB,2DAA0D;AAAjD,gHAAA,cAAc,OAAA;AACvB,sDAAqD;AAA5C,4GAAA,YAAY,OAAA;AACrB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,gDAA4C;AAAnC,qGAAA,OAAO,OAAA;AAChB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AACtB,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,yDAA+E;AAAtE,8GAAA,aAAa,OAAA;AAAE,sHAAA,qBAAqB,OAAA;AAC7C,yCAAoE;AAA3D,mGAAA,UAAU,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AAC1C,8CAAgD;AAAvC,yGAAA,YAAY,OAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AnyMessageContent } from '@whiskeysockets/baileys';
|
|
2
|
+
import { type VCardOptions } from './vcard';
|
|
2
3
|
/**
|
|
3
4
|
* Kumpulan helper buat bikin payload pesan dengan cara yang lebih deklaratif
|
|
4
5
|
* dibanding manual bikin object AnyMessageContent-nya Baileys.
|
|
@@ -49,5 +50,9 @@ export declare const MessageBuilder: {
|
|
|
49
50
|
description?: string;
|
|
50
51
|
}[];
|
|
51
52
|
}[], footer?: string): AnyMessageContent;
|
|
53
|
+
/** Bagikan satu kontak (nama + nomor telepon) sebagai vcard. */
|
|
54
|
+
contact(options: VCardOptions): AnyMessageContent;
|
|
55
|
+
/** Bagikan beberapa kontak sekaligus dalam satu pesan. */
|
|
56
|
+
contacts(list: VCardOptions[]): AnyMessageContent;
|
|
52
57
|
};
|
|
53
58
|
//# sourceMappingURL=MessageBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,cAAc;eACd,MAAM,GAAG,iBAAiB;kBAIvB,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,YAAY,MAAM,GAAG,iBAAiB;kBAI9D,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,YAAY,MAAM,GAAG,iBAAiB;kBAI9D,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,kBAAgB,iBAAiB;oBAIvD,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB;qBAI3C,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,YAAY,MAAM,sBAA0C,iBAAiB;IAItH;;;OAGG;eACQ,MAAM,WAAW,MAAM,EAAE,6BAAwB,iBAAiB;IAU7E;;;;;;OAMG;kBACW,MAAM,WAAW;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,MAAM,GAAG,iBAAiB;IAalG;;;OAGG;eAEK,MAAM,cACA,MAAM,YACR;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,EAAE,WACjF,MAAM,GACd,iBAAiB;IASpB,gEAAgE;qBAC/C,YAAY,GAAG,iBAAiB;IASjD,0DAA0D;mBAC3C,YAAY,EAAE,GAAG,iBAAiB;CAQlD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MessageBuilder = void 0;
|
|
4
|
+
const vcard_1 = require("./vcard");
|
|
4
5
|
/**
|
|
5
6
|
* Kumpulan helper buat bikin payload pesan dengan cara yang lebih deklaratif
|
|
6
7
|
* dibanding manual bikin object AnyMessageContent-nya Baileys.
|
|
@@ -69,5 +70,23 @@ exports.MessageBuilder = {
|
|
|
69
70
|
sections,
|
|
70
71
|
};
|
|
71
72
|
},
|
|
73
|
+
/** Bagikan satu kontak (nama + nomor telepon) sebagai vcard. */
|
|
74
|
+
contact(options) {
|
|
75
|
+
return {
|
|
76
|
+
contacts: {
|
|
77
|
+
displayName: options.name,
|
|
78
|
+
contacts: [{ vcard: (0, vcard_1.buildVCard)(options) }],
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
/** Bagikan beberapa kontak sekaligus dalam satu pesan. */
|
|
83
|
+
contacts(list) {
|
|
84
|
+
return {
|
|
85
|
+
contacts: {
|
|
86
|
+
displayName: `${list.length} kontak`,
|
|
87
|
+
contacts: list.map((options) => ({ vcard: (0, vcard_1.buildVCard)(options) })),
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
},
|
|
72
91
|
};
|
|
73
92
|
//# sourceMappingURL=MessageBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":";;;AACA,mCAAwD;AAExD;;;;GAIG;AACU,QAAA,cAAc,GAAG;IAC5B,IAAI,CAAC,IAAY;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAgC,EAAE,OAAgB;QACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAgC,EAAE,OAAgB;QACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAgC,EAAE,GAAG,GAAG,KAAK;QACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,MAAgC;QACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,MAAgC,EAAE,QAAgB,EAAE,QAAQ,GAAG,0BAA0B;QAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAY,EAAE,OAAiB,EAAE,eAAe,GAAG,CAAC;QACvD,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI;gBACJ,MAAM,EAAE,OAAO;gBACf,eAAe;aAChB;SACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,IAAY,EAAE,OAAuC,EAAE,MAAe;QAC5E,OAAO;YACL,IAAI;YACJ,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,QAAQ,EAAE,CAAC,CAAC,EAAE;gBACd,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;gBACnC,IAAI,EAAE,CAAC;aACR,CAAC,CAAC;YACH,UAAU,EAAE,CAAC;SACO,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAI,CACF,IAAY,EACZ,UAAkB,EAClB,QAA0F,EAC1F,MAAe;QAEf,OAAO;YACL,IAAI;YACJ,MAAM;YACN,UAAU;YACV,QAAQ;SACY,CAAC;IACzB,CAAC;IAED,gEAAgE;IAChE,OAAO,CAAC,OAAqB;QAC3B,OAAO;YACL,QAAQ,EAAE;gBACR,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAA,kBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;aAC3C;SACF,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,QAAQ,CAAC,IAAoB;QAC3B,OAAO;YACL,QAAQ,EAAE;gBACR,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,SAAS;gBACpC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAA,kBAAU,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAClE;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageParser.d.ts","sourceRoot":"","sources":["../../src/message/MessageParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageParser.d.ts","sourceRoot":"","sources":["../../src/message/MessageParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AA8GzE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAqB1E"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseMessage = parseMessage;
|
|
4
|
+
/**
|
|
5
|
+
* WhatsApp membungkus pesan "lihat sekali" (view once) dalam wrapper terpisah
|
|
6
|
+
* (ada 3 varian tergantung versi klien: viewOnceMessage, viewOnceMessageV2,
|
|
7
|
+
* viewOnceMessageV2Extension). Kita buka wrapper-nya biar deteksi tipe &
|
|
8
|
+
* ekstraksi teks tetap bekerja normal terhadap konten aslinya (image/video/dst),
|
|
9
|
+
* sambil tetap mencatat bahwa pesan ini bertipe view-once.
|
|
10
|
+
*/
|
|
11
|
+
function unwrapViewOnce(msg) {
|
|
12
|
+
const inner = msg?.viewOnceMessage?.message || msg?.viewOnceMessageV2?.message || msg?.viewOnceMessageV2Extension?.message;
|
|
13
|
+
if (inner) {
|
|
14
|
+
return { inner, isViewOnce: true };
|
|
15
|
+
}
|
|
16
|
+
return { inner: msg, isViewOnce: false };
|
|
17
|
+
}
|
|
4
18
|
/**
|
|
5
19
|
* Deteksi tipe pesan dari struktur proto Baileys yang aslinya
|
|
6
20
|
* nested & berbeda-beda per jenis media. Kita ratain jadi satu enum simpel.
|
|
@@ -22,7 +36,7 @@ function detectType(msg) {
|
|
|
22
36
|
return 'document';
|
|
23
37
|
if (msg.locationMessage)
|
|
24
38
|
return 'location';
|
|
25
|
-
if (msg.contactMessage)
|
|
39
|
+
if (msg.contactMessage || msg.contactsArrayMessage)
|
|
26
40
|
return 'contact';
|
|
27
41
|
if (msg.reactionMessage)
|
|
28
42
|
return 'reaction';
|
|
@@ -46,16 +60,19 @@ function parseQuoted(msg) {
|
|
|
46
60
|
const quotedRaw = ctx?.quotedMessage;
|
|
47
61
|
if (!quotedRaw || !ctx?.stanzaId)
|
|
48
62
|
return null;
|
|
63
|
+
const { inner, isViewOnce } = unwrapViewOnce(quotedRaw);
|
|
49
64
|
return {
|
|
50
65
|
id: ctx.stanzaId,
|
|
51
66
|
sender: ctx.participant || '',
|
|
52
67
|
chatId: ctx.participant || '',
|
|
53
68
|
isGroup: false,
|
|
54
|
-
type: detectType(
|
|
55
|
-
text: extractText(
|
|
69
|
+
type: detectType(inner),
|
|
70
|
+
text: extractText(inner),
|
|
56
71
|
fromMe: false,
|
|
57
72
|
timestamp: 0,
|
|
73
|
+
isViewOnce,
|
|
58
74
|
reaction: null,
|
|
75
|
+
contacts: null,
|
|
59
76
|
raw: { key: { id: ctx.stanzaId }, message: quotedRaw },
|
|
60
77
|
};
|
|
61
78
|
}
|
|
@@ -69,6 +86,24 @@ function parseReaction(msg) {
|
|
|
69
86
|
emoji: reactionMsg.text || '',
|
|
70
87
|
};
|
|
71
88
|
}
|
|
89
|
+
/** Ambil daftar kontak dari contactMessage (satu) atau contactsArrayMessage (banyak) */
|
|
90
|
+
function parseContacts(msg) {
|
|
91
|
+
if (msg?.contactMessage) {
|
|
92
|
+
return [
|
|
93
|
+
{
|
|
94
|
+
displayName: msg.contactMessage.displayName || '',
|
|
95
|
+
vcard: msg.contactMessage.vcard || '',
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
if (msg?.contactsArrayMessage?.contacts?.length) {
|
|
100
|
+
return msg.contactsArrayMessage.contacts.map((c) => ({
|
|
101
|
+
displayName: c.displayName || '',
|
|
102
|
+
vcard: c.vcard || '',
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
72
107
|
/**
|
|
73
108
|
* Ubah proto.IWebMessageInfo mentah dari Baileys jadi NormalizedMessage
|
|
74
109
|
* yang lebih enak dipakai plugin/consumer library.
|
|
@@ -77,17 +112,20 @@ function parseMessage(raw) {
|
|
|
77
112
|
const chatId = raw.key.remoteJid || '';
|
|
78
113
|
const isGroup = chatId.endsWith('@g.us');
|
|
79
114
|
const sender = isGroup ? raw.key.participant || chatId : chatId;
|
|
115
|
+
const { inner, isViewOnce } = unwrapViewOnce(raw.message);
|
|
80
116
|
return {
|
|
81
117
|
id: raw.key.id || '',
|
|
82
118
|
sender,
|
|
83
119
|
chatId,
|
|
84
120
|
isGroup,
|
|
85
|
-
type: detectType(
|
|
86
|
-
text: extractText(
|
|
121
|
+
type: detectType(inner),
|
|
122
|
+
text: extractText(inner),
|
|
87
123
|
fromMe: raw.key.fromMe || false,
|
|
88
124
|
timestamp: Number(raw.messageTimestamp) || Math.floor(Date.now() / 1000),
|
|
125
|
+
isViewOnce,
|
|
89
126
|
quoted: parseQuoted(raw.message),
|
|
90
127
|
reaction: parseReaction(raw.message),
|
|
128
|
+
contacts: parseContacts(raw.message),
|
|
91
129
|
raw,
|
|
92
130
|
};
|
|
93
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageParser.js","sourceRoot":"","sources":["../../src/message/MessageParser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"MessageParser.js","sourceRoot":"","sources":["../../src/message/MessageParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,5 +100,71 @@ function fakeRaw(overrides = {}) {
|
|
|
100
100
|
const result = (0, MessageParser_1.parseMessage)(fakeRaw());
|
|
101
101
|
(0, vitest_1.expect)(result.reaction).toBeNull();
|
|
102
102
|
});
|
|
103
|
+
(0, vitest_1.it)('parse pesan contact tunggal (contactMessage)', () => {
|
|
104
|
+
const raw = fakeRaw({
|
|
105
|
+
message: {
|
|
106
|
+
contactMessage: {
|
|
107
|
+
displayName: 'Budi',
|
|
108
|
+
vcard: 'BEGIN:VCARD\nVERSION:3.0\nFN:Budi\nEND:VCARD',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
113
|
+
(0, vitest_1.expect)(result.type).toBe('contact');
|
|
114
|
+
(0, vitest_1.expect)(result.contacts).toHaveLength(1);
|
|
115
|
+
(0, vitest_1.expect)(result.contacts?.[0].displayName).toBe('Budi');
|
|
116
|
+
(0, vitest_1.expect)(result.contacts?.[0].vcard).toContain('FN:Budi');
|
|
117
|
+
});
|
|
118
|
+
(0, vitest_1.it)('parse pesan multi-contact (contactsArrayMessage)', () => {
|
|
119
|
+
const raw = fakeRaw({
|
|
120
|
+
message: {
|
|
121
|
+
contactsArrayMessage: {
|
|
122
|
+
contacts: [
|
|
123
|
+
{ displayName: 'Budi', vcard: 'BEGIN:VCARD\nFN:Budi\nEND:VCARD' },
|
|
124
|
+
{ displayName: 'Ani', vcard: 'BEGIN:VCARD\nFN:Ani\nEND:VCARD' },
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
130
|
+
(0, vitest_1.expect)(result.type).toBe('contact');
|
|
131
|
+
(0, vitest_1.expect)(result.contacts).toHaveLength(2);
|
|
132
|
+
(0, vitest_1.expect)(result.contacts?.map((c) => c.displayName)).toEqual(['Budi', 'Ani']);
|
|
133
|
+
});
|
|
134
|
+
(0, vitest_1.it)('contacts bernilai null untuk pesan biasa', () => {
|
|
135
|
+
const result = (0, MessageParser_1.parseMessage)(fakeRaw());
|
|
136
|
+
(0, vitest_1.expect)(result.contacts).toBeNull();
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.it)('parse pesan view-once (viewOnceMessage) dan buka tipe konten aslinya', () => {
|
|
139
|
+
const raw = fakeRaw({
|
|
140
|
+
message: {
|
|
141
|
+
viewOnceMessage: {
|
|
142
|
+
message: { imageMessage: { caption: 'foto rahasia' } },
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
147
|
+
(0, vitest_1.expect)(result.isViewOnce).toBe(true);
|
|
148
|
+
(0, vitest_1.expect)(result.type).toBe('image');
|
|
149
|
+
(0, vitest_1.expect)(result.text).toBe('foto rahasia');
|
|
150
|
+
});
|
|
151
|
+
(0, vitest_1.it)('parse pesan view-once varian V2 (viewOnceMessageV2)', () => {
|
|
152
|
+
const raw = fakeRaw({
|
|
153
|
+
message: {
|
|
154
|
+
viewOnceMessageV2: {
|
|
155
|
+
message: { videoMessage: { caption: 'video rahasia' } },
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
160
|
+
(0, vitest_1.expect)(result.isViewOnce).toBe(true);
|
|
161
|
+
(0, vitest_1.expect)(result.type).toBe('video');
|
|
162
|
+
(0, vitest_1.expect)(result.text).toBe('video rahasia');
|
|
163
|
+
});
|
|
164
|
+
(0, vitest_1.it)('isViewOnce bernilai false untuk pesan media biasa (bukan view-once)', () => {
|
|
165
|
+
const raw = fakeRaw({ message: { imageMessage: { caption: 'foto biasa' } } });
|
|
166
|
+
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
167
|
+
(0, vitest_1.expect)(result.isViewOnce).toBe(false);
|
|
168
|
+
});
|
|
103
169
|
});
|
|
104
170
|
//# sourceMappingURL=MessageParser.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageParser.test.js","sourceRoot":"","sources":["../../src/message/MessageParser.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageParser.test.js","sourceRoot":"","sources":["../../src/message/MessageParser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface VCardOptions {
|
|
2
|
+
/** Nama yang ditampilkan untuk kontak ini. */
|
|
3
|
+
name: string;
|
|
4
|
+
/** Nomor telepon, boleh pakai "+" atau spasi/strip — otomatis dibersihkan. Contoh: "+62 812-3456-789". */
|
|
5
|
+
phone: string;
|
|
6
|
+
/** Nama organisasi/perusahaan, opsional. */
|
|
7
|
+
organization?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Bikin string VCARD 3.0 yang dikenali WhatsApp (termasuk field "waid" yang
|
|
11
|
+
* bikin kontak bisa langsung di-chat tanpa nomor tersimpan sebelumnya).
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildVCard(options: VCardOptions): string;
|
|
14
|
+
/**
|
|
15
|
+
* Ambil nomor telepon dari string vcard (misal dari kontak yang di-share
|
|
16
|
+
* orang lain ke bot). Return null kalau tidak ketemu field TEL.
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractPhoneFromVCard(vcard: string): string | null;
|
|
19
|
+
//# sourceMappingURL=vcard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcard.d.ts","sourceRoot":"","sources":["../../src/message/vcard.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,0GAA0G;IAC1G,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAYxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIlE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildVCard = buildVCard;
|
|
4
|
+
exports.extractPhoneFromVCard = extractPhoneFromVCard;
|
|
5
|
+
function normalizePhone(phone) {
|
|
6
|
+
return phone.replace(/[^\d]/g, '');
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Bikin string VCARD 3.0 yang dikenali WhatsApp (termasuk field "waid" yang
|
|
10
|
+
* bikin kontak bisa langsung di-chat tanpa nomor tersimpan sebelumnya).
|
|
11
|
+
*/
|
|
12
|
+
function buildVCard(options) {
|
|
13
|
+
const digits = normalizePhone(options.phone);
|
|
14
|
+
const lines = ['BEGIN:VCARD', 'VERSION:3.0', `FN:${options.name}`, `N:;${options.name};;;`];
|
|
15
|
+
if (options.organization) {
|
|
16
|
+
lines.push(`ORG:${options.organization};`);
|
|
17
|
+
}
|
|
18
|
+
lines.push(`TEL;type=CELL;type=VOICE;waid=${digits}:+${digits}`);
|
|
19
|
+
lines.push('END:VCARD');
|
|
20
|
+
return lines.join('\n');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Ambil nomor telepon dari string vcard (misal dari kontak yang di-share
|
|
24
|
+
* orang lain ke bot). Return null kalau tidak ketemu field TEL.
|
|
25
|
+
*/
|
|
26
|
+
function extractPhoneFromVCard(vcard) {
|
|
27
|
+
const match = vcard.match(/^TEL[^:]*:(.+)$/m);
|
|
28
|
+
if (!match)
|
|
29
|
+
return null;
|
|
30
|
+
return match[1].trim();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=vcard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcard.js","sourceRoot":"","sources":["../../src/message/vcard.ts"],"names":[],"mappings":";;AAiBA,gCAYC;AAMD,sDAIC;AA9BD,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAAqB;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IAE5F,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,iCAAiC,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAExB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcard.test.d.ts","sourceRoot":"","sources":["../../src/message/vcard.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const vcard_1 = require("./vcard");
|
|
5
|
+
(0, vitest_1.describe)('buildVCard', () => {
|
|
6
|
+
(0, vitest_1.it)('membuat vcard valid dengan nama & nomor', () => {
|
|
7
|
+
const vcard = (0, vcard_1.buildVCard)({ name: 'Budi', phone: '628123456789' });
|
|
8
|
+
(0, vitest_1.expect)(vcard).toContain('BEGIN:VCARD');
|
|
9
|
+
(0, vitest_1.expect)(vcard).toContain('VERSION:3.0');
|
|
10
|
+
(0, vitest_1.expect)(vcard).toContain('FN:Budi');
|
|
11
|
+
(0, vitest_1.expect)(vcard).toContain('waid=628123456789');
|
|
12
|
+
(0, vitest_1.expect)(vcard).toContain('END:VCARD');
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)('membersihkan format nomor (spasi, strip, tanda plus)', () => {
|
|
15
|
+
const vcard = (0, vcard_1.buildVCard)({ name: 'Ani', phone: '+62 812-3456-789' });
|
|
16
|
+
(0, vitest_1.expect)(vcard).toContain('waid=628123456789');
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('menyertakan organisasi kalau diisi', () => {
|
|
19
|
+
const vcard = (0, vcard_1.buildVCard)({ name: 'Budi', phone: '628123456789', organization: 'PT Maju' });
|
|
20
|
+
(0, vitest_1.expect)(vcard).toContain('ORG:PT Maju;');
|
|
21
|
+
});
|
|
22
|
+
(0, vitest_1.it)('tidak menyertakan baris ORG kalau organization tidak diisi', () => {
|
|
23
|
+
const vcard = (0, vcard_1.buildVCard)({ name: 'Budi', phone: '628123456789' });
|
|
24
|
+
(0, vitest_1.expect)(vcard).not.toContain('ORG:');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.describe)('extractPhoneFromVCard', () => {
|
|
28
|
+
(0, vitest_1.it)('mengambil nomor dari vcard yang dibuat buildVCard', () => {
|
|
29
|
+
const vcard = (0, vcard_1.buildVCard)({ name: 'Budi', phone: '628123456789' });
|
|
30
|
+
(0, vitest_1.expect)((0, vcard_1.extractPhoneFromVCard)(vcard)).toBe('+628123456789');
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('return null kalau tidak ada field TEL', () => {
|
|
33
|
+
const vcard = 'BEGIN:VCARD\nVERSION:3.0\nFN:Tanpa Nomor\nEND:VCARD';
|
|
34
|
+
(0, vitest_1.expect)((0, vcard_1.extractPhoneFromVCard)(vcard)).toBeNull();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=vcard.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vcard.test.js","sourceRoot":"","sources":["../../src/message/vcard.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,mCAA4D;AAE5D,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAElE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC7C,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3F,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAClE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAClE,IAAA,eAAM,EAAC,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,KAAK,GAAG,qDAAqD,CAAC;QACpE,IAAA,eAAM,EAAC,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -18,6 +18,12 @@ export interface NormalizedMessage {
|
|
|
18
18
|
fromMe: boolean;
|
|
19
19
|
/** Unix timestamp (detik) */
|
|
20
20
|
timestamp: number;
|
|
21
|
+
/**
|
|
22
|
+
* true kalau ini pesan "lihat sekali" (view once) — image/video yang cuma
|
|
23
|
+
* bisa dibuka sekali di WhatsApp resmi. `type` tetap menunjukkan tipe
|
|
24
|
+
* konten aslinya (image/video/dst), field ini cuma penanda tambahan.
|
|
25
|
+
*/
|
|
26
|
+
isViewOnce: boolean;
|
|
21
27
|
/** Pesan yang di-quote/reply, kalau ada (sudah dinormalisasi juga, minus quotedMessage-nya sendiri) */
|
|
22
28
|
quoted: Omit<NormalizedMessage, 'quoted'> | null;
|
|
23
29
|
/** Detail reaction, terisi hanya kalau type === 'reaction' (orang lain react ke suatu pesan) */
|
|
@@ -25,6 +31,14 @@ export interface NormalizedMessage {
|
|
|
25
31
|
targetMessageId: string;
|
|
26
32
|
emoji: string;
|
|
27
33
|
} | null;
|
|
34
|
+
/**
|
|
35
|
+
* Kontak yang di-share (satu atau lebih), terisi hanya kalau type === 'contact'.
|
|
36
|
+
* Setiap entry punya vcard mentah — pakai extractPhoneFromVCard() untuk ambil nomornya.
|
|
37
|
+
*/
|
|
38
|
+
contacts: {
|
|
39
|
+
displayName: string;
|
|
40
|
+
vcard: string;
|
|
41
|
+
}[] | null;
|
|
28
42
|
/** Raw proto message asli dari Baileys, buat kasus yang butuh akses low-level */
|
|
29
43
|
raw: proto.IWebMessageInfo;
|
|
30
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEpF,iGAAiG;AACjG,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,SAAS,GACT,UAAU,GACV,UAAU,GACV,SAAS,GACT,UAAU,GACV,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,uGAAuG;IACvG,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACjD,gGAAgG;IAChG,QAAQ,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D;;;OAGG;IACH,QAAQ,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAC1D,iFAAiF;IACjF,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,IAAI,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC5C,8EAA8E;IAC9E,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,uEAAuE;IACvE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACpE;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,yCAAyC;QACzC,GAAG,EAAE,MAAM,CAAC;QACZ,qCAAqC;QACrC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,2FAA2F;IAC3F,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH"}
|
package/package.json
CHANGED