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 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 (misal MongoDB)
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` yang sama:
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 RedisSessionStore implements SessionStore {
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';
@@ -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,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,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,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.MongoSessionStore = exports.FileSessionStore = exports.Client = void 0;
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,iEAAgE;AAAvD,sHAAA,iBAAiB,OAAA;AAC1B,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,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;CAGvH,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;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;AAmDzE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAiB1E"}
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":"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"}
1
+ {"version":3,"file":"MessageParser.js","sourceRoot":"","sources":["../../src/message/MessageParser.ts"],"names":[],"mappings":"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"}
@@ -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.2",
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"