rynkai 0.1.5 → 0.2.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 +64 -2
- package/dist/core/Backoff.d.ts +32 -0
- package/dist/core/Backoff.d.ts.map +1 -0
- package/dist/core/Backoff.js +41 -0
- package/dist/core/Backoff.js.map +1 -0
- package/dist/core/Backoff.test.d.ts +2 -0
- package/dist/core/Backoff.test.d.ts.map +1 -0
- package/dist/core/Backoff.test.js +57 -0
- package/dist/core/Backoff.test.js.map +1 -0
- package/dist/core/Client.d.ts +30 -0
- package/dist/core/Client.d.ts.map +1 -1
- package/dist/core/Client.js +66 -3
- package/dist/core/Client.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/message/MessageParser.d.ts.map +1 -1
- package/dist/message/MessageParser.js +12 -0
- package/dist/message/MessageParser.js.map +1 -1
- package/dist/message/MessageParser.test.js +19 -0
- package/dist/message/MessageParser.test.js.map +1 -1
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# rynkai
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Wrapper TypeScript yang clean di atas [Baileys](https://github.com/WhiskeySockets/Baileys), lengkap dengan plugin system & session store yang bisa diganti-ganti sesuai kebutuhan.
|
|
4
6
|
|
|
5
7
|
## Install
|
|
6
8
|
|
|
@@ -62,6 +64,64 @@ await bot.plugins.loadFromDirectory('./plugins');
|
|
|
62
64
|
await bot.connect();
|
|
63
65
|
```
|
|
64
66
|
|
|
67
|
+
## Reconnect backoff & graceful shutdown
|
|
68
|
+
|
|
69
|
+
Kalau koneksi putus (bukan karena logout), rynkai otomatis reconnect dengan **exponential backoff** (jeda 1 detik → 2 → 4 → ... sampai maksimal 30 detik, plus sedikit jitter acak) — bukan reconnect instan yang bisa bikin WA curiga.
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
const bot = new Client({
|
|
73
|
+
sessionName: 'my-bot',
|
|
74
|
+
reconnect: {
|
|
75
|
+
initialDelayMs: 1000, // jeda awal
|
|
76
|
+
maxDelayMs: 30_000, // jeda maksimum
|
|
77
|
+
maxRetries: 10, // opsional, default tidak terbatas
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
bot.on('reconnecting', ({ attempt, delayMs }) => {
|
|
82
|
+
console.log(`Reconnect percobaan ke-${attempt}, tunggu ${delayMs}ms...`);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
bot.on('reconnect-failed', () => {
|
|
86
|
+
console.log('Menyerah reconnect, cek koneksi internet/server.');
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Buat graceful shutdown (misal saat proses mau dimatikan), pakai `disconnect()` — beda dari `logout()`, ini **tidak menghapus sesi tersimpan**, jadi bisa `connect()` lagi tanpa scan QR ulang:
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
process.on('SIGINT', async () => {
|
|
94
|
+
await bot.disconnect();
|
|
95
|
+
process.exit(0);
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Reactions & read receipt
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
bot.on('message', async (msg) => {
|
|
103
|
+
await bot.react(msg, '👍'); // kasih reaction ke pesan masuk
|
|
104
|
+
await bot.removeReaction(msg); // hapus reaction (kirim emoji kosong)
|
|
105
|
+
await bot.markAsRead(msg); // tandai sudah dibaca (centang biru)
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// Deteksi kalau seseorang react ke pesan (termasuk pesan bot sendiri)
|
|
109
|
+
bot.on('message', (msg) => {
|
|
110
|
+
if (msg.type === 'reaction' && msg.reaction) {
|
|
111
|
+
console.log(`${msg.sender} react ${msg.reaction.emoji} ke pesan ${msg.reaction.targetMessageId}`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Auto-mark semua pesan masuk sebagai sudah dibaca:
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
const bot = new Client({
|
|
120
|
+
sessionName: 'my-bot',
|
|
121
|
+
autoRead: true,
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
65
125
|
## Presence (typing / online status)
|
|
66
126
|
|
|
67
127
|
```ts
|
|
@@ -239,7 +299,9 @@ Masih tahap awal (0.1.0). Yang sudah ada:
|
|
|
239
299
|
- [x] Group helpers (metadata, add/remove/promote/demote, join-leave event)
|
|
240
300
|
- [x] Interactive messages (button, list, poll)
|
|
241
301
|
- [x] Test suite (MessageParser, PluginLoader, RateLimiter, Middleware, SendQueue)
|
|
302
|
+
- [x] GitHub Actions CI (auto build+test tiap push/PR, matrix Node 20 & 22)
|
|
303
|
+
- [x] Message reactions (`react`, `removeReaction`) & read receipt (`markAsRead`, `autoRead`)
|
|
304
|
+
- [x] Graceful shutdown (`disconnect()`) + reconnect exponential backoff dengan jitter
|
|
242
305
|
|
|
243
306
|
Belum ada (rencana selanjutnya):
|
|
244
307
|
- [ ] CLI scaffold (`npx create-rynkai-bot`)
|
|
245
|
-
- [ ] GitHub Actions CI (auto build+test tiap push)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface BackoffConfig {
|
|
2
|
+
/** Jeda awal dalam ms sebelum percobaan reconnect pertama. Default: 1000 */
|
|
3
|
+
initialDelayMs?: number;
|
|
4
|
+
/** Jeda maksimum dalam ms, backoff tidak akan melebihi ini. Default: 30000 */
|
|
5
|
+
maxDelayMs?: number;
|
|
6
|
+
/** Maksimal jumlah percobaan reconnect sebelum menyerah. Default: Infinity (tidak pernah menyerah) */
|
|
7
|
+
maxRetries?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Hitung jeda exponential backoff dengan sedikit jitter (variasi acak),
|
|
11
|
+
* biar reconnect tidak instan beruntun (yang bisa bikin WA curiga/flag akun)
|
|
12
|
+
* dan tidak "thundering herd" kalau banyak instance reconnect bareng.
|
|
13
|
+
*/
|
|
14
|
+
export declare class Backoff {
|
|
15
|
+
private attempt;
|
|
16
|
+
private readonly initialDelayMs;
|
|
17
|
+
private readonly maxDelayMs;
|
|
18
|
+
private readonly maxRetries;
|
|
19
|
+
constructor(config?: BackoffConfig);
|
|
20
|
+
/** Apakah masih boleh mencoba reconnect lagi. */
|
|
21
|
+
canRetry(): boolean;
|
|
22
|
+
/** Jumlah percobaan yang sudah dilakukan sejauh ini. */
|
|
23
|
+
get attemptCount(): number;
|
|
24
|
+
/**
|
|
25
|
+
* Hitung jeda berikutnya (ms) dan naikkan counter percobaan.
|
|
26
|
+
* Rumus: min(initialDelay * 2^attempt, maxDelay) + jitter acak 0-30%.
|
|
27
|
+
*/
|
|
28
|
+
next(): number;
|
|
29
|
+
/** Reset counter percobaan ke 0, dipanggil setelah koneksi berhasil lagi. */
|
|
30
|
+
reset(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=Backoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Backoff.d.ts","sourceRoot":"","sources":["../../src/core/Backoff.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,GAAE,aAAkB;IAMtC,iDAAiD;IACjD,QAAQ,IAAI,OAAO;IAInB,wDAAwD;IACxD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,IAAI,IAAI,MAAM;IAQd,6EAA6E;IAC7E,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Backoff = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Hitung jeda exponential backoff dengan sedikit jitter (variasi acak),
|
|
6
|
+
* biar reconnect tidak instan beruntun (yang bisa bikin WA curiga/flag akun)
|
|
7
|
+
* dan tidak "thundering herd" kalau banyak instance reconnect bareng.
|
|
8
|
+
*/
|
|
9
|
+
class Backoff {
|
|
10
|
+
constructor(config = {}) {
|
|
11
|
+
this.attempt = 0;
|
|
12
|
+
this.initialDelayMs = config.initialDelayMs ?? 1000;
|
|
13
|
+
this.maxDelayMs = config.maxDelayMs ?? 30_000;
|
|
14
|
+
this.maxRetries = config.maxRetries ?? Infinity;
|
|
15
|
+
}
|
|
16
|
+
/** Apakah masih boleh mencoba reconnect lagi. */
|
|
17
|
+
canRetry() {
|
|
18
|
+
return this.attempt < this.maxRetries;
|
|
19
|
+
}
|
|
20
|
+
/** Jumlah percobaan yang sudah dilakukan sejauh ini. */
|
|
21
|
+
get attemptCount() {
|
|
22
|
+
return this.attempt;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Hitung jeda berikutnya (ms) dan naikkan counter percobaan.
|
|
26
|
+
* Rumus: min(initialDelay * 2^attempt, maxDelay) + jitter acak 0-30%.
|
|
27
|
+
*/
|
|
28
|
+
next() {
|
|
29
|
+
const exponential = this.initialDelayMs * Math.pow(2, this.attempt);
|
|
30
|
+
const capped = Math.min(exponential, this.maxDelayMs);
|
|
31
|
+
const jitter = capped * 0.3 * Math.random();
|
|
32
|
+
this.attempt++;
|
|
33
|
+
return Math.round(capped + jitter);
|
|
34
|
+
}
|
|
35
|
+
/** Reset counter percobaan ke 0, dipanggil setelah koneksi berhasil lagi. */
|
|
36
|
+
reset() {
|
|
37
|
+
this.attempt = 0;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Backoff = Backoff;
|
|
41
|
+
//# sourceMappingURL=Backoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Backoff.js","sourceRoot":"","sources":["../../src/core/Backoff.ts"],"names":[],"mappings":";;;AASA;;;;GAIG;AACH,MAAa,OAAO;IAMlB,YAAY,SAAwB,EAAE;QAL9B,YAAO,GAAG,CAAC,CAAC;QAMlB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC;IAClD,CAAC;IAED,iDAAiD;IACjD,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;IACxC,CAAC;IAED,wDAAwD;IACxD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,6EAA6E;IAC7E,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;CACF;AAtCD,0BAsCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Backoff.test.d.ts","sourceRoot":"","sources":["../../src/core/Backoff.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const Backoff_1 = require("./Backoff");
|
|
5
|
+
(0, vitest_1.describe)('Backoff', () => {
|
|
6
|
+
(0, vitest_1.afterEach)(() => {
|
|
7
|
+
vitest_1.vi.restoreAllMocks();
|
|
8
|
+
});
|
|
9
|
+
(0, vitest_1.it)('jeda naik secara exponential tiap percobaan', () => {
|
|
10
|
+
// Matikan jitter biar hasil deterministik
|
|
11
|
+
vitest_1.vi.spyOn(Math, 'random').mockReturnValue(0);
|
|
12
|
+
const backoff = new Backoff_1.Backoff({ initialDelayMs: 1000, maxDelayMs: 60_000 });
|
|
13
|
+
(0, vitest_1.expect)(backoff.next()).toBe(1000); // 1000 * 2^0
|
|
14
|
+
(0, vitest_1.expect)(backoff.next()).toBe(2000); // 1000 * 2^1
|
|
15
|
+
(0, vitest_1.expect)(backoff.next()).toBe(4000); // 1000 * 2^2
|
|
16
|
+
(0, vitest_1.expect)(backoff.next()).toBe(8000); // 1000 * 2^3
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('tidak melebihi maxDelayMs walau attempt terus naik', () => {
|
|
19
|
+
vitest_1.vi.spyOn(Math, 'random').mockReturnValue(0);
|
|
20
|
+
const backoff = new Backoff_1.Backoff({ initialDelayMs: 1000, maxDelayMs: 5000 });
|
|
21
|
+
for (let i = 0; i < 10; i++)
|
|
22
|
+
backoff.next();
|
|
23
|
+
(0, vitest_1.expect)(backoff.next()).toBe(5000);
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('menambahkan jitter sehingga hasil bisa sedikit lebih besar dari nilai dasar', () => {
|
|
26
|
+
vitest_1.vi.spyOn(Math, 'random').mockReturnValue(1); // jitter maksimum
|
|
27
|
+
const backoff = new Backoff_1.Backoff({ initialDelayMs: 1000, maxDelayMs: 60_000 });
|
|
28
|
+
const delay = backoff.next();
|
|
29
|
+
// base 1000 + jitter maksimum 30% = 1300
|
|
30
|
+
(0, vitest_1.expect)(delay).toBe(1300);
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('canRetry() false setelah maxRetries tercapai', () => {
|
|
33
|
+
const backoff = new Backoff_1.Backoff({ maxRetries: 2 });
|
|
34
|
+
(0, vitest_1.expect)(backoff.canRetry()).toBe(true);
|
|
35
|
+
backoff.next();
|
|
36
|
+
(0, vitest_1.expect)(backoff.canRetry()).toBe(true);
|
|
37
|
+
backoff.next();
|
|
38
|
+
(0, vitest_1.expect)(backoff.canRetry()).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
(0, vitest_1.it)('canRetry() selalu true kalau maxRetries tidak diset', () => {
|
|
41
|
+
const backoff = new Backoff_1.Backoff();
|
|
42
|
+
for (let i = 0; i < 100; i++)
|
|
43
|
+
backoff.next();
|
|
44
|
+
(0, vitest_1.expect)(backoff.canRetry()).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)('reset() mengembalikan attemptCount ke 0', () => {
|
|
47
|
+
vitest_1.vi.spyOn(Math, 'random').mockReturnValue(0);
|
|
48
|
+
const backoff = new Backoff_1.Backoff({ initialDelayMs: 1000 });
|
|
49
|
+
backoff.next();
|
|
50
|
+
backoff.next();
|
|
51
|
+
(0, vitest_1.expect)(backoff.attemptCount).toBe(2);
|
|
52
|
+
backoff.reset();
|
|
53
|
+
(0, vitest_1.expect)(backoff.attemptCount).toBe(0);
|
|
54
|
+
(0, vitest_1.expect)(backoff.next()).toBe(1000); // balik ke percobaan pertama
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=Backoff.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Backoff.test.js","sourceRoot":"","sources":["../../src/core/Backoff.test.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Client.d.ts
CHANGED
|
@@ -15,6 +15,13 @@ export interface RynkaiEvents {
|
|
|
15
15
|
qr: (qr: string) => void;
|
|
16
16
|
pairingCode: (code: string) => void;
|
|
17
17
|
'group-participants-update': (event: GroupParticipantsEvent) => void;
|
|
18
|
+
/** Ditembak setiap kali mau mencoba reconnect, sebelum jeda backoff dimulai. */
|
|
19
|
+
reconnecting: (info: {
|
|
20
|
+
attempt: number;
|
|
21
|
+
delayMs: number;
|
|
22
|
+
}) => void;
|
|
23
|
+
/** Ditembak kalau maxRetries reconnect sudah tercapai dan client menyerah. */
|
|
24
|
+
'reconnect-failed': () => void;
|
|
18
25
|
}
|
|
19
26
|
/**
|
|
20
27
|
* Client utama rynkai. Bungkus WASocket Baileys dan expose API yang lebih
|
|
@@ -30,6 +37,9 @@ export declare class Client extends EventEmitter {
|
|
|
30
37
|
private middlewares;
|
|
31
38
|
private rateLimiter;
|
|
32
39
|
private sendQueue;
|
|
40
|
+
private backoff;
|
|
41
|
+
private manualClose;
|
|
42
|
+
private reconnectTimer;
|
|
33
43
|
constructor(config: RynkaiConfig);
|
|
34
44
|
/**
|
|
35
45
|
* Daftarkan middleware yang jalan sebelum (dan bisa membungkus) eksekusi plugin.
|
|
@@ -47,6 +57,15 @@ export declare class Client extends EventEmitter {
|
|
|
47
57
|
reply(message: NormalizedMessage, text: string): Promise<void>;
|
|
48
58
|
/** Download media (image/video/audio/sticker/document) dari sebuah pesan sebagai Buffer. */
|
|
49
59
|
downloadMedia(message: NormalizedMessage): Promise<Buffer>;
|
|
60
|
+
/** Beri reaction emoji ke sebuah pesan. Lewat send queue juga (throttle sama seperti send/reply). */
|
|
61
|
+
react(message: NormalizedMessage, emoji: string): Promise<void>;
|
|
62
|
+
/** Hapus reaction yang sudah dikirim ke sebuah pesan. */
|
|
63
|
+
removeReaction(message: NormalizedMessage): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Tandai satu atau beberapa pesan sebagai sudah dibaca (centang biru).
|
|
66
|
+
* Terima satu NormalizedMessage atau array.
|
|
67
|
+
*/
|
|
68
|
+
markAsRead(message: NormalizedMessage | NormalizedMessage[]): Promise<void>;
|
|
50
69
|
/** Update presence (online/typing/recording/dst) di sebuah chat. */
|
|
51
70
|
sendPresence(chatId: string, presence: WAPresence): Promise<void>;
|
|
52
71
|
/**
|
|
@@ -66,6 +85,17 @@ export declare class Client extends EventEmitter {
|
|
|
66
85
|
demoteParticipants(groupId: string, participants: string[]): Promise<void>;
|
|
67
86
|
/** Logout & bersihkan sesi tersimpan. */
|
|
68
87
|
logout(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Tutup koneksi secara graceful tanpa menghapus sesi tersimpan (beda dari logout()).
|
|
90
|
+
* Tidak akan memicu auto-reconnect. Cocok dipanggil saat proses mau di-shutdown,
|
|
91
|
+
* misal di handler SIGINT/SIGTERM:
|
|
92
|
+
*
|
|
93
|
+
* process.on('SIGINT', async () => {
|
|
94
|
+
* await bot.disconnect();
|
|
95
|
+
* process.exit(0);
|
|
96
|
+
* });
|
|
97
|
+
*/
|
|
98
|
+
disconnect(): Promise<void>;
|
|
69
99
|
on<K extends keyof RynkaiEvents>(event: K, listener: RynkaiEvents[K]): this;
|
|
70
100
|
emit<K extends keyof RynkaiEvents>(event: K, ...args: Parameters<RynkaiEvents[K]>): boolean;
|
|
71
101
|
}
|
|
@@ -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;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,cAAc,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
|
@@ -46,6 +46,7 @@ const PluginLoader_1 = require("../plugin/PluginLoader");
|
|
|
46
46
|
const Middleware_1 = require("./Middleware");
|
|
47
47
|
const RateLimiter_1 = require("./RateLimiter");
|
|
48
48
|
const SendQueue_1 = require("./SendQueue");
|
|
49
|
+
const Backoff_1 = require("./Backoff");
|
|
49
50
|
const downloadMedia_1 = require("../media/downloadMedia");
|
|
50
51
|
/**
|
|
51
52
|
* Client utama rynkai. Bungkus WASocket Baileys dan expose API yang lebih
|
|
@@ -58,6 +59,8 @@ class Client extends events_1.EventEmitter {
|
|
|
58
59
|
this.sock = null;
|
|
59
60
|
this.plugins = new PluginLoader_1.PluginLoader();
|
|
60
61
|
this.middlewares = [];
|
|
62
|
+
this.manualClose = false;
|
|
63
|
+
this.reconnectTimer = null;
|
|
61
64
|
this.config = {
|
|
62
65
|
prefix: '.',
|
|
63
66
|
printQR: !config.pairingCode,
|
|
@@ -67,11 +70,14 @@ class Client extends events_1.EventEmitter {
|
|
|
67
70
|
sessionName: config.sessionName,
|
|
68
71
|
rateLimit: config.rateLimit,
|
|
69
72
|
sendQueue: config.sendQueue,
|
|
73
|
+
autoRead: config.autoRead ?? false,
|
|
74
|
+
reconnect: config.reconnect,
|
|
70
75
|
};
|
|
71
76
|
this.sessionStore = config.sessionStore ?? new FileSessionStore_1.FileSessionStore(config.sessionName);
|
|
72
77
|
this.logger = (0, pino_1.default)({ level: this.config.logLevel });
|
|
73
78
|
this.rateLimiter = config.rateLimit ? new RateLimiter_1.RateLimiter(config.rateLimit) : null;
|
|
74
79
|
this.sendQueue = new SendQueue_1.SendQueue(config.sendQueue);
|
|
80
|
+
this.backoff = new Backoff_1.Backoff(config.reconnect);
|
|
75
81
|
}
|
|
76
82
|
/**
|
|
77
83
|
* Daftarkan middleware yang jalan sebelum (dan bisa membungkus) eksekusi plugin.
|
|
@@ -84,6 +90,7 @@ class Client extends events_1.EventEmitter {
|
|
|
84
90
|
}
|
|
85
91
|
/** Konek ke WhatsApp. Resolve setelah koneksi berhasil "open". */
|
|
86
92
|
async connect() {
|
|
93
|
+
this.manualClose = false;
|
|
87
94
|
const state = await this.sessionStore.load();
|
|
88
95
|
if (!state) {
|
|
89
96
|
throw new Error('SessionStore.load() mengembalikan null — pastikan implementasinya benar.');
|
|
@@ -108,15 +115,28 @@ class Client extends events_1.EventEmitter {
|
|
|
108
115
|
this.emit('qr', qr);
|
|
109
116
|
}
|
|
110
117
|
if (connection === 'open') {
|
|
118
|
+
this.backoff.reset();
|
|
111
119
|
this.emit('ready');
|
|
112
120
|
}
|
|
113
121
|
if (connection === 'close') {
|
|
114
122
|
const statusCode = lastDisconnect?.error?.output?.statusCode;
|
|
115
|
-
const
|
|
123
|
+
const loggedOut = statusCode === baileys_1.DisconnectReason.loggedOut;
|
|
116
124
|
this.emit('disconnected', String(statusCode ?? 'unknown'));
|
|
117
|
-
|
|
118
|
-
|
|
125
|
+
// Tidak reconnect kalau ditutup manual (client.disconnect()) atau logout beneran.
|
|
126
|
+
if (this.manualClose || loggedOut) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (!this.backoff.canRetry()) {
|
|
130
|
+
this.logger.error('Batas maksimal reconnect tercapai, menyerah.');
|
|
131
|
+
this.emit('reconnect-failed');
|
|
132
|
+
return;
|
|
119
133
|
}
|
|
134
|
+
const attempt = this.backoff.attemptCount + 1;
|
|
135
|
+
const delayMs = this.backoff.next();
|
|
136
|
+
this.emit('reconnecting', { attempt, delayMs });
|
|
137
|
+
this.reconnectTimer = setTimeout(() => {
|
|
138
|
+
this.connect().catch((err) => this.logger.error(err, 'gagal reconnect'));
|
|
139
|
+
}, delayMs);
|
|
120
140
|
}
|
|
121
141
|
});
|
|
122
142
|
this.sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
@@ -127,6 +147,9 @@ class Client extends events_1.EventEmitter {
|
|
|
127
147
|
continue;
|
|
128
148
|
const message = (0, MessageParser_1.parseMessage)(raw);
|
|
129
149
|
this.emit('message', message);
|
|
150
|
+
if (this.config.autoRead && !message.fromMe) {
|
|
151
|
+
await this.markAsRead(message).catch((err) => this.logger.error(err, 'gagal markAsRead'));
|
|
152
|
+
}
|
|
130
153
|
await this.dispatchPlugin(message);
|
|
131
154
|
}
|
|
132
155
|
});
|
|
@@ -185,6 +208,27 @@ class Client extends events_1.EventEmitter {
|
|
|
185
208
|
throw new Error('Client belum connect. Panggil connect() dulu.');
|
|
186
209
|
return (0, downloadMedia_1.downloadMedia)(message, this.sock, this.logger);
|
|
187
210
|
}
|
|
211
|
+
/** Beri reaction emoji ke sebuah pesan. Lewat send queue juga (throttle sama seperti send/reply). */
|
|
212
|
+
async react(message, emoji) {
|
|
213
|
+
if (!this.sock)
|
|
214
|
+
throw new Error('Client belum connect. Panggil connect() dulu.');
|
|
215
|
+
const sock = this.sock;
|
|
216
|
+
await this.sendQueue.push(() => sock.sendMessage(message.chatId, { react: { text: emoji, key: message.raw.key } }));
|
|
217
|
+
}
|
|
218
|
+
/** Hapus reaction yang sudah dikirim ke sebuah pesan. */
|
|
219
|
+
async removeReaction(message) {
|
|
220
|
+
await this.react(message, '');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Tandai satu atau beberapa pesan sebagai sudah dibaca (centang biru).
|
|
224
|
+
* Terima satu NormalizedMessage atau array.
|
|
225
|
+
*/
|
|
226
|
+
async markAsRead(message) {
|
|
227
|
+
if (!this.sock)
|
|
228
|
+
throw new Error('Client belum connect. Panggil connect() dulu.');
|
|
229
|
+
const messages = Array.isArray(message) ? message : [message];
|
|
230
|
+
await this.sock.readMessages(messages.map((m) => m.raw.key));
|
|
231
|
+
}
|
|
188
232
|
/** Update presence (online/typing/recording/dst) di sebuah chat. */
|
|
189
233
|
async sendPresence(chatId, presence) {
|
|
190
234
|
if (!this.sock)
|
|
@@ -234,9 +278,28 @@ class Client extends events_1.EventEmitter {
|
|
|
234
278
|
}
|
|
235
279
|
/** Logout & bersihkan sesi tersimpan. */
|
|
236
280
|
async logout() {
|
|
281
|
+
this.manualClose = true;
|
|
282
|
+
if (this.reconnectTimer)
|
|
283
|
+
clearTimeout(this.reconnectTimer);
|
|
237
284
|
await this.sock?.logout();
|
|
238
285
|
await this.sessionStore.clear();
|
|
239
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Tutup koneksi secara graceful tanpa menghapus sesi tersimpan (beda dari logout()).
|
|
289
|
+
* Tidak akan memicu auto-reconnect. Cocok dipanggil saat proses mau di-shutdown,
|
|
290
|
+
* misal di handler SIGINT/SIGTERM:
|
|
291
|
+
*
|
|
292
|
+
* process.on('SIGINT', async () => {
|
|
293
|
+
* await bot.disconnect();
|
|
294
|
+
* process.exit(0);
|
|
295
|
+
* });
|
|
296
|
+
*/
|
|
297
|
+
async disconnect() {
|
|
298
|
+
this.manualClose = true;
|
|
299
|
+
if (this.reconnectTimer)
|
|
300
|
+
clearTimeout(this.reconnectTimer);
|
|
301
|
+
this.sock?.end(undefined);
|
|
302
|
+
}
|
|
240
303
|
// Type-safe event emitter overrides
|
|
241
304
|
on(event, listener) {
|
|
242
305
|
return super.on(event, listener);
|
package/dist/core/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAQiC;AAEjC,mCAAsC;AACtC,gDAAwB;AAGxB,kEAA+D;AAC/D,4DAAwD;AACxD,yDAAsD;AACtD,6CAAwD;AACxD,+CAA4C;AAC5C,2CAAwC;AACxC,0DAAuD;
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,10 +5,12 @@ export { PluginLoader } from './plugin/PluginLoader';
|
|
|
5
5
|
export { RateLimiter } from './core/RateLimiter';
|
|
6
6
|
export { compose } from './core/Middleware';
|
|
7
7
|
export { SendQueue } from './core/SendQueue';
|
|
8
|
+
export { Backoff } from './core/Backoff';
|
|
8
9
|
export { downloadMedia } from './media/downloadMedia';
|
|
9
10
|
export type { NormalizedMessage, NormalizedMessageType, SessionStore, Plugin, PluginContext, RynkaiConfig, } from './types';
|
|
10
11
|
export type { Middleware, NextFunction } from './core/Middleware';
|
|
11
12
|
export type { RateLimitConfig } from './core/RateLimiter';
|
|
12
13
|
export type { SendQueueConfig } from './core/SendQueue';
|
|
14
|
+
export type { BackoffConfig } from './core/Backoff';
|
|
13
15
|
export type { GroupParticipantsEvent, RynkaiEvents } from './core/Client';
|
|
14
16
|
//# 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,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,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,sBAAsB,EAAE,YAAY,EAAE,MAAM,eAAe,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,uBAAuB,CAAC;AAEtD,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,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.downloadMedia = exports.SendQueue = exports.compose = exports.RateLimiter = exports.PluginLoader = exports.MessageBuilder = exports.FileSessionStore = exports.Client = void 0;
|
|
3
|
+
exports.downloadMedia = 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");
|
|
@@ -15,6 +15,8 @@ var Middleware_1 = require("./core/Middleware");
|
|
|
15
15
|
Object.defineProperty(exports, "compose", { enumerable: true, get: function () { return Middleware_1.compose; } });
|
|
16
16
|
var SendQueue_1 = require("./core/SendQueue");
|
|
17
17
|
Object.defineProperty(exports, "SendQueue", { enumerable: true, get: function () { return SendQueue_1.SendQueue; } });
|
|
18
|
+
var Backoff_1 = require("./core/Backoff");
|
|
19
|
+
Object.defineProperty(exports, "Backoff", { enumerable: true, get: function () { return Backoff_1.Backoff; } });
|
|
18
20
|
var downloadMedia_1 = require("./media/downloadMedia");
|
|
19
21
|
Object.defineProperty(exports, "downloadMedia", { enumerable: true, get: function () { return downloadMedia_1.downloadMedia; } });
|
|
20
22
|
//# 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,uDAAsD;AAA7C,8GAAA,aAAa,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,uDAAsD;AAA7C,8GAAA,aAAa,OAAA"}
|
|
@@ -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;AAgEzE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAkB1E"}
|
|
@@ -55,9 +55,20 @@ function parseQuoted(msg) {
|
|
|
55
55
|
text: extractText(quotedRaw),
|
|
56
56
|
fromMe: false,
|
|
57
57
|
timestamp: 0,
|
|
58
|
+
reaction: null,
|
|
58
59
|
raw: { key: { id: ctx.stanzaId }, message: quotedRaw },
|
|
59
60
|
};
|
|
60
61
|
}
|
|
62
|
+
/** Ambil target message id & emoji dari sebuah reactionMessage */
|
|
63
|
+
function parseReaction(msg) {
|
|
64
|
+
const reactionMsg = msg?.reactionMessage;
|
|
65
|
+
if (!reactionMsg?.key?.id)
|
|
66
|
+
return null;
|
|
67
|
+
return {
|
|
68
|
+
targetMessageId: reactionMsg.key.id,
|
|
69
|
+
emoji: reactionMsg.text || '',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
61
72
|
/**
|
|
62
73
|
* Ubah proto.IWebMessageInfo mentah dari Baileys jadi NormalizedMessage
|
|
63
74
|
* yang lebih enak dipakai plugin/consumer library.
|
|
@@ -76,6 +87,7 @@ function parseMessage(raw) {
|
|
|
76
87
|
fromMe: raw.key.fromMe || false,
|
|
77
88
|
timestamp: Number(raw.messageTimestamp) || Math.floor(Date.now() / 1000),
|
|
78
89
|
quoted: parseQuoted(raw.message),
|
|
90
|
+
reaction: parseReaction(raw.message),
|
|
79
91
|
raw,
|
|
80
92
|
};
|
|
81
93
|
}
|
|
@@ -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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"}
|
|
@@ -81,5 +81,24 @@ function fakeRaw(overrides = {}) {
|
|
|
81
81
|
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
82
82
|
(0, vitest_1.expect)(result.timestamp).toBeGreaterThanOrEqual(before);
|
|
83
83
|
});
|
|
84
|
+
(0, vitest_1.it)('parse pesan reaction dengan benar', () => {
|
|
85
|
+
const raw = fakeRaw({
|
|
86
|
+
message: {
|
|
87
|
+
reactionMessage: {
|
|
88
|
+
key: { id: 'TARGET_MSG_ID', remoteJid: '628123456789@s.whatsapp.net' },
|
|
89
|
+
text: '🔥',
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
const result = (0, MessageParser_1.parseMessage)(raw);
|
|
94
|
+
(0, vitest_1.expect)(result.type).toBe('reaction');
|
|
95
|
+
(0, vitest_1.expect)(result.reaction).not.toBeNull();
|
|
96
|
+
(0, vitest_1.expect)(result.reaction?.targetMessageId).toBe('TARGET_MSG_ID');
|
|
97
|
+
(0, vitest_1.expect)(result.reaction?.emoji).toBe('🔥');
|
|
98
|
+
});
|
|
99
|
+
(0, vitest_1.it)('reaction bernilai null untuk pesan biasa', () => {
|
|
100
|
+
const result = (0, MessageParser_1.parseMessage)(fakeRaw());
|
|
101
|
+
(0, vitest_1.expect)(result.reaction).toBeNull();
|
|
102
|
+
});
|
|
84
103
|
});
|
|
85
104
|
//# 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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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,6 +20,11 @@ export interface NormalizedMessage {
|
|
|
20
20
|
timestamp: number;
|
|
21
21
|
/** Pesan yang di-quote/reply, kalau ada (sudah dinormalisasi juga, minus quotedMessage-nya sendiri) */
|
|
22
22
|
quoted: Omit<NormalizedMessage, 'quoted'> | null;
|
|
23
|
+
/** Detail reaction, terisi hanya kalau type === 'reaction' (orang lain react ke suatu pesan) */
|
|
24
|
+
reaction: {
|
|
25
|
+
targetMessageId: string;
|
|
26
|
+
emoji: string;
|
|
27
|
+
} | null;
|
|
23
28
|
/** Raw proto message asli dari Baileys, buat kasus yang butuh akses low-level */
|
|
24
29
|
raw: proto.IWebMessageInfo;
|
|
25
30
|
}
|
|
@@ -76,5 +81,16 @@ export interface RynkaiConfig {
|
|
|
76
81
|
sendQueue?: {
|
|
77
82
|
intervalMs?: number;
|
|
78
83
|
};
|
|
84
|
+
/** Otomatis tandai setiap pesan masuk sebagai sudah dibaca (centang biru). Default: false. */
|
|
85
|
+
autoRead?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Konfigurasi backoff untuk auto-reconnect saat koneksi putus (bukan karena logout manual).
|
|
88
|
+
* Default: jeda mulai 1 detik, naik exponential sampai maksimal 30 detik, tidak ada batas percobaan.
|
|
89
|
+
*/
|
|
90
|
+
reconnect?: {
|
|
91
|
+
initialDelayMs?: number;
|
|
92
|
+
maxDelayMs?: number;
|
|
93
|
+
maxRetries?: number;
|
|
94
|
+
};
|
|
79
95
|
}
|
|
80
96
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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,uGAAuG;IACvG,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;IACjD,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;CACH"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rynkai",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Clean, typed wrapper around Baileys with built-in plugin system and pluggable session store — for building WhatsApp bots fast.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=20.0.0"
|
|
8
|
+
},
|
|
6
9
|
"types": "dist/index.d.ts",
|
|
7
10
|
"type": "commonjs",
|
|
8
11
|
"scripts": {
|