rynkai 0.1.2 → 0.1.4
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 +47 -44
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/message/MessageBuilder.d.ts +28 -0
- package/dist/message/MessageBuilder.d.ts.map +1 -1
- package/dist/message/MessageBuilder.js +44 -0
- package/dist/message/MessageBuilder.js.map +1 -1
- package/dist/message/MessageParser.d.ts.map +1 -1
- package/dist/message/MessageParser.js +2 -0
- package/dist/message/MessageParser.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -8
package/README.md
CHANGED
|
@@ -38,8 +38,6 @@ await bot.connect();
|
|
|
38
38
|
|
|
39
39
|
## Plugin system
|
|
40
40
|
|
|
41
|
-
Plugin format-nya sengaja mirip gaya rynk4: `{ name, command, category, execute() }`.
|
|
42
|
-
|
|
43
41
|
```ts
|
|
44
42
|
// plugins/hello.ts
|
|
45
43
|
import type { Plugin } from 'rynkai';
|
|
@@ -89,6 +87,44 @@ bot.on('group-participants-update', ({ groupId, action, participants }) => {
|
|
|
89
87
|
});
|
|
90
88
|
```
|
|
91
89
|
|
|
90
|
+
## Interactive messages (button, list, poll)
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
import { MessageBuilder } from 'rynkai';
|
|
94
|
+
|
|
95
|
+
// Poll
|
|
96
|
+
await bot.send(chatId, MessageBuilder.poll('Makan apa nanti?', ['Nasi goreng', 'Mie ayam', 'Sate'], 1));
|
|
97
|
+
|
|
98
|
+
// Buttons
|
|
99
|
+
await bot.send(
|
|
100
|
+
chatId,
|
|
101
|
+
MessageBuilder.buttons(
|
|
102
|
+
'Pilih menu:',
|
|
103
|
+
[
|
|
104
|
+
{ id: 'menu_profile', text: 'Profil' },
|
|
105
|
+
{ id: 'menu_shop', text: 'Shop' },
|
|
106
|
+
],
|
|
107
|
+
'Bot Footer'
|
|
108
|
+
)
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
// List
|
|
112
|
+
await bot.send(
|
|
113
|
+
chatId,
|
|
114
|
+
MessageBuilder.list('Pilih kategori:', 'Buka Menu', [
|
|
115
|
+
{
|
|
116
|
+
title: 'Kategori Utama',
|
|
117
|
+
rows: [
|
|
118
|
+
{ id: 'cat_weapon', title: 'Senjata', description: 'Lihat semua senjata' },
|
|
119
|
+
{ id: 'cat_armor', title: 'Armor', description: 'Lihat semua armor' },
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
])
|
|
123
|
+
);
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
> Catatan: dukungan `buttons()` dan `list()` bervariasi antar versi WhatsApp client — beberapa versi terbaru membatasi tombol non-template dari akun biasa. Tes dulu di device tujuan sebelum diandalkan penuh di production; `poll()` jauh lebih stabil karena native feature WhatsApp.
|
|
127
|
+
|
|
92
128
|
## Download media
|
|
93
129
|
|
|
94
130
|
```ts
|
|
@@ -146,36 +182,23 @@ const bot = new Client({
|
|
|
146
182
|
|
|
147
183
|
Kalau user kelebihan limit, bot otomatis reply pemberitahuan dan command tidak diteruskan ke middleware/plugin.
|
|
148
184
|
|
|
149
|
-
## Session store custom
|
|
150
|
-
|
|
151
|
-
Sudah disediakan `MongoSessionStore` built-in — cocok kalau stack-mu (kayak rynk4) sudah pakai MongoDB/Mongoose:
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
npm install mongoose
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
```ts
|
|
158
|
-
import mongoose from 'mongoose';
|
|
159
|
-
import { Client, MongoSessionStore } from 'rynkai';
|
|
160
|
-
|
|
161
|
-
await mongoose.connect(process.env.MONGO_URI!); // buka koneksi dulu sebelum connect()
|
|
162
|
-
|
|
163
|
-
const bot = new Client({
|
|
164
|
-
sessionName: 'my-bot',
|
|
165
|
-
sessionStore: new MongoSessionStore('my-bot'),
|
|
166
|
-
});
|
|
167
|
-
```
|
|
185
|
+
## Session store custom
|
|
168
186
|
|
|
169
|
-
Kalau butuh store lain (Redis, dll), tinggal implement interface `SessionStore
|
|
187
|
+
Default-nya pakai `FileSessionStore` (simpan sesi sebagai file di disk). Kalau butuh store lain (MongoDB, Redis, dll), tinggal implement interface `SessionStore`:
|
|
170
188
|
|
|
171
189
|
```ts
|
|
172
190
|
import type { SessionStore } from 'rynkai';
|
|
173
191
|
|
|
174
|
-
class
|
|
192
|
+
class MySessionStore implements SessionStore {
|
|
175
193
|
async load() { /* ... */ }
|
|
176
194
|
async save(state) { /* ... */ }
|
|
177
195
|
async clear() { /* ... */ }
|
|
178
196
|
}
|
|
197
|
+
|
|
198
|
+
const bot = new Client({
|
|
199
|
+
sessionName: 'my-bot',
|
|
200
|
+
sessionStore: new MySessionStore(),
|
|
201
|
+
});
|
|
179
202
|
```
|
|
180
203
|
|
|
181
204
|
## Pairing code (tanpa QR)
|
|
@@ -187,24 +210,4 @@ const bot = new Client({
|
|
|
187
210
|
});
|
|
188
211
|
|
|
189
212
|
bot.on('pairingCode', (code) => console.log('Kode pairing:', code));
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Status
|
|
193
|
-
|
|
194
|
-
Masih tahap awal (0.1.0). Yang sudah ada:
|
|
195
|
-
- [x] Core client (connect, reconnect, QR/pairing code)
|
|
196
|
-
- [x] Normalized message parsing (text, media, quoted)
|
|
197
|
-
- [x] Plugin loader + cooldown
|
|
198
|
-
- [x] FileSessionStore default
|
|
199
|
-
- [x] MessageBuilder helper
|
|
200
|
-
- [x] Middleware/hooks sebelum plugin dieksekusi
|
|
201
|
-
- [x] Rate limiter global (terpisah dari cooldown per-plugin)
|
|
202
|
-
- [x] Built-in MongoSessionStore
|
|
203
|
-
- [x] Media downloader helper (`client.downloadMedia()`)
|
|
204
|
-
- [x] Message send queue dengan throttle (anti rate-limit WA)
|
|
205
|
-
- [x] Presence helper (`sendTyping`, `sendPresence`)
|
|
206
|
-
- [x] Group helpers (metadata, add/remove/promote/demote, join-leave event)
|
|
207
|
-
|
|
208
|
-
Belum ada (rencana selanjutnya):
|
|
209
|
-
- [ ] Test suite
|
|
210
|
-
- [ ] Interactive messages (button, list, poll)
|
|
213
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { Client } from './core/Client';
|
|
2
2
|
export { FileSessionStore } from './session/FileSessionStore';
|
|
3
|
-
export { MongoSessionStore } from './session/MongoSessionStore';
|
|
4
3
|
export { MessageBuilder } from './message/MessageBuilder';
|
|
5
4
|
export { PluginLoader } from './plugin/PluginLoader';
|
|
6
5
|
export { RateLimiter } from './core/RateLimiter';
|
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,
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
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.
|
|
3
|
+
exports.downloadMedia = 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");
|
|
7
7
|
Object.defineProperty(exports, "FileSessionStore", { enumerable: true, get: function () { return FileSessionStore_1.FileSessionStore; } });
|
|
8
|
-
var MongoSessionStore_1 = require("./session/MongoSessionStore");
|
|
9
|
-
Object.defineProperty(exports, "MongoSessionStore", { enumerable: true, get: function () { return MongoSessionStore_1.MongoSessionStore; } });
|
|
10
8
|
var MessageBuilder_1 = require("./message/MessageBuilder");
|
|
11
9
|
Object.defineProperty(exports, "MessageBuilder", { enumerable: true, get: function () { return MessageBuilder_1.MessageBuilder; } });
|
|
12
10
|
var PluginLoader_1 = require("./plugin/PluginLoader");
|
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,
|
|
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"}
|
|
@@ -21,5 +21,33 @@ export declare const MessageBuilder: {
|
|
|
21
21
|
document(source: Buffer | {
|
|
22
22
|
url: string;
|
|
23
23
|
}, fileName: string, mimetype?: string): AnyMessageContent;
|
|
24
|
+
/**
|
|
25
|
+
* Poll bawaan WhatsApp. `selectableCount` = 1 berarti single-choice,
|
|
26
|
+
* lebih dari 1 berarti user boleh pilih banyak opsi.
|
|
27
|
+
*/
|
|
28
|
+
poll(name: string, options: string[], selectableCount?: number): AnyMessageContent;
|
|
29
|
+
/**
|
|
30
|
+
* Pesan dengan tombol quick-reply. Catatan: fitur ini pakai buttonsMessage
|
|
31
|
+
* lama Baileys — beberapa versi WhatsApp client sudah membatasi/menyembunyikan
|
|
32
|
+
* tombol non-template dari bisnis biasa. Tes dulu di device tujuan sebelum
|
|
33
|
+
* diandalkan penuh; kalau tidak muncul, fallback ke MessageBuilder.text()
|
|
34
|
+
* dengan opsi bernomor + baca via plugin command.
|
|
35
|
+
*/
|
|
36
|
+
buttons(text: string, buttons: {
|
|
37
|
+
id: string;
|
|
38
|
+
text: string;
|
|
39
|
+
}[], footer?: string): AnyMessageContent;
|
|
40
|
+
/**
|
|
41
|
+
* Pesan list (menu dropdown). Sama seperti buttons(), dukungannya
|
|
42
|
+
* bervariasi antar versi WhatsApp — tes dulu sebelum diandalkan penuh.
|
|
43
|
+
*/
|
|
44
|
+
list(text: string, buttonText: string, sections: {
|
|
45
|
+
title: string;
|
|
46
|
+
rows: {
|
|
47
|
+
id: string;
|
|
48
|
+
title: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
}[];
|
|
51
|
+
}[], footer?: string): AnyMessageContent;
|
|
24
52
|
};
|
|
25
53
|
//# 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;AAEjE;;;;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;
|
|
1
|
+
{"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;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;CAQrB,CAAC"}
|
|
@@ -25,5 +25,49 @@ exports.MessageBuilder = {
|
|
|
25
25
|
document(source, fileName, mimetype = 'application/octet-stream') {
|
|
26
26
|
return { document: source, fileName, mimetype };
|
|
27
27
|
},
|
|
28
|
+
/**
|
|
29
|
+
* Poll bawaan WhatsApp. `selectableCount` = 1 berarti single-choice,
|
|
30
|
+
* lebih dari 1 berarti user boleh pilih banyak opsi.
|
|
31
|
+
*/
|
|
32
|
+
poll(name, options, selectableCount = 1) {
|
|
33
|
+
return {
|
|
34
|
+
poll: {
|
|
35
|
+
name,
|
|
36
|
+
values: options,
|
|
37
|
+
selectableCount,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Pesan dengan tombol quick-reply. Catatan: fitur ini pakai buttonsMessage
|
|
43
|
+
* lama Baileys — beberapa versi WhatsApp client sudah membatasi/menyembunyikan
|
|
44
|
+
* tombol non-template dari bisnis biasa. Tes dulu di device tujuan sebelum
|
|
45
|
+
* diandalkan penuh; kalau tidak muncul, fallback ke MessageBuilder.text()
|
|
46
|
+
* dengan opsi bernomor + baca via plugin command.
|
|
47
|
+
*/
|
|
48
|
+
buttons(text, buttons, footer) {
|
|
49
|
+
return {
|
|
50
|
+
text,
|
|
51
|
+
footer,
|
|
52
|
+
buttons: buttons.map((b) => ({
|
|
53
|
+
buttonId: b.id,
|
|
54
|
+
buttonText: { displayText: b.text },
|
|
55
|
+
type: 1,
|
|
56
|
+
})),
|
|
57
|
+
headerType: 1,
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* Pesan list (menu dropdown). Sama seperti buttons(), dukungannya
|
|
62
|
+
* bervariasi antar versi WhatsApp — tes dulu sebelum diandalkan penuh.
|
|
63
|
+
*/
|
|
64
|
+
list(text, buttonText, sections, footer) {
|
|
65
|
+
return {
|
|
66
|
+
text,
|
|
67
|
+
footer,
|
|
68
|
+
buttonText,
|
|
69
|
+
sections,
|
|
70
|
+
};
|
|
71
|
+
},
|
|
28
72
|
};
|
|
29
73
|
//# sourceMappingURL=MessageBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":";;;AAEA;;;;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;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../../src/message/MessageBuilder.ts"],"names":[],"mappings":";;;AAEA;;;;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;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;AAoDzE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAiB1E"}
|
|
@@ -26,6 +26,8 @@ function detectType(msg) {
|
|
|
26
26
|
return 'contact';
|
|
27
27
|
if (msg.reactionMessage)
|
|
28
28
|
return 'reaction';
|
|
29
|
+
if (msg.pollCreationMessage || msg.pollCreationMessageV2 || msg.pollCreationMessageV3)
|
|
30
|
+
return 'poll';
|
|
29
31
|
return 'unknown';
|
|
30
32
|
}
|
|
31
33
|
/** Ambil teks dari berbagai kemungkinan lokasi (conversation, caption, dst) */
|
|
@@ -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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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WASocket, AuthenticationState, proto } from '@whiskeysockets/baileys';
|
|
2
2
|
/** Jenis pesan yang sudah dinormalisasi, dipakai di seluruh library (bukan raw proto Baileys) */
|
|
3
|
-
export type NormalizedMessageType = 'text' | 'image' | 'video' | 'audio' | 'sticker' | 'document' | 'location' | 'contact' | 'reaction' | 'unknown';
|
|
3
|
+
export type NormalizedMessageType = 'text' | 'image' | 'video' | 'audio' | 'sticker' | 'document' | 'location' | 'contact' | 'reaction' | 'poll' | 'unknown';
|
|
4
4
|
export interface NormalizedMessage {
|
|
5
5
|
/** ID unik pesan dari WhatsApp */
|
|
6
6
|
id: string;
|
|
@@ -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,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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rynkai",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
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
6
|
"types": "dist/index.d.ts",
|
|
@@ -33,22 +33,17 @@
|
|
|
33
33
|
"pino": "^9.4.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"qrcode-terminal": "^0.12.0"
|
|
37
|
-
"mongoose": "^8.0.0"
|
|
36
|
+
"qrcode-terminal": "^0.12.0"
|
|
38
37
|
},
|
|
39
38
|
"peerDependenciesMeta": {
|
|
40
39
|
"qrcode-terminal": {
|
|
41
40
|
"optional": true
|
|
42
|
-
},
|
|
43
|
-
"mongoose": {
|
|
44
|
-
"optional": true
|
|
45
41
|
}
|
|
46
42
|
},
|
|
47
43
|
"devDependencies": {
|
|
48
44
|
"typescript": "^5.5.4",
|
|
49
45
|
"ts-node-dev": "^2.0.0",
|
|
50
|
-
"@types/node": "^20.14.0"
|
|
51
|
-
"mongoose": "^8.0.0"
|
|
46
|
+
"@types/node": "^20.14.0"
|
|
52
47
|
},
|
|
53
48
|
"files": [
|
|
54
49
|
"dist"
|