sauruspro-bail 5.0.0 → 5.0.2-alpha.spr.test
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 +12 -9
- package/docs/CHANGELOG.md +35 -4
- package/docs/SPR.md +61 -24
- package/lib/Defaults/index.js +5 -1
- package/lib/Socket/dinonic-handler.d.ts +27 -0
- package/lib/Socket/dinonic-handler.js +882 -0
- package/lib/Socket/index.js +8 -1
- package/lib/Socket/messages-recv.js +26 -0
- package/lib/Socket/messages-send.js +25 -0
- package/lib/Utils/MessageBuilder.d.ts +215 -0
- package/lib/Utils/MessageBuilder.js +3991 -0
- package/lib/Utils/a2ui.d.ts +202 -0
- package/lib/Utils/a2ui.js +732 -0
- package/lib/Utils/airich-registry.js +3 -0
- package/lib/Utils/baileys-event-stream.js +58 -0
- package/lib/Utils/bot-signature.d.ts +22 -0
- package/lib/Utils/bot-signature.js +124 -0
- package/lib/Utils/dinonic-spr.d.ts +73 -0
- package/lib/Utils/dinonic-spr.js +739 -0
- package/lib/Utils/extras.d.ts +449 -0
- package/lib/Utils/extras.js +1377 -0
- package/lib/Utils/html-app.d.ts +39 -0
- package/lib/Utils/html-app.js +291 -0
- package/lib/Utils/index.js +14 -2
- package/lib/Utils/metaai.d.ts +438 -0
- package/lib/Utils/metaai.js +911 -0
- package/lib/Utils/modern-messages.d.ts +150 -0
- package/lib/Utils/modern-messages.js +496 -0
- package/lib/Utils/native-flow.d.ts +14 -0
- package/lib/Utils/native-flow.js +118 -0
- package/lib/Utils/newsletter-status.js +9 -53
- package/lib/Utils/payment-messages.d.ts +59 -0
- package/lib/Utils/payment-messages.js +156 -0
- package/lib/Utils/scheduled-message.d.ts +82 -0
- package/lib/Utils/scheduled-message.js +113 -0
- package/lib/Utils/status-stickers.d.ts +78 -0
- package/lib/Utils/status-stickers.js +261 -0
- package/lib/index.js +2 -2
- package/package.json +4 -4
- package/lib/Utils/dinolith-spr.d.ts +0 -26
- package/lib/Utils/dinolith-spr.js +0 -521
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|

|
|
12
12
|

|
|
13
13
|
|
|
14
|
-
**Owner: Saurus /
|
|
14
|
+
**Owner: Saurus / Dinonic** · **Version: 5.0.2-alpha.spr.test**
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
@@ -22,12 +22,11 @@
|
|
|
22
22
|
| | |
|
|
23
23
|
|---|---|
|
|
24
24
|
| Package | `sauruspro-bail` |
|
|
25
|
-
| Version | `5.0.
|
|
26
|
-
| Owner | Saurus /
|
|
25
|
+
| Version | `5.0.2-alpha.spr.test` |
|
|
26
|
+
| Owner | Saurus / Dinonic |
|
|
27
27
|
| Module type | ESM (`"type": "module"`) |
|
|
28
28
|
| Runtime | Node.js >= 20 |
|
|
29
|
-
| Telegram | [@lordsaurus](https://t.me/lordsaurus) · [@
|
|
30
|
-
| Channel | [@infobaileys](https://t.me/infobaileys) |
|
|
29
|
+
| Telegram | [@lordsaurus](https://t.me/lordsaurus) · [@lordsaurus](https://t.me/lordsaurus) |
|
|
31
30
|
|
|
32
31
|
## ✨ Features
|
|
33
32
|
|
|
@@ -101,9 +100,13 @@ Dokumentasi lengkap: **[docs/NEWSLETTER-STATUS.md](docs/NEWSLETTER-STATUS.md)**
|
|
|
101
100
|
```js
|
|
102
101
|
await sock.sPR(jid, { conversation: 'Halo!' })
|
|
103
102
|
// alias: sock.relayMessageSelective(jid, message, options)
|
|
103
|
+
|
|
104
|
+
// pesan privat per orang + foto profil
|
|
105
|
+
await sock.sPRPrivate(groupJid, targetJid, { publicText: 'Ada pesan', privateText: 'rahasia' })
|
|
106
|
+
await sock.sPRBroadcast(groupJid, { template: 'Halo {name}!' })
|
|
104
107
|
```
|
|
105
108
|
|
|
106
|
-
Dokumentasi lengkap: **[docs/SPR.md](docs/SPR.md)**
|
|
109
|
+
Dokumentasi lengkap: **[docs/SPR.md](docs/SPR.md)**
|
|
107
110
|
|
|
108
111
|
## 📚 Dokumentasi
|
|
109
112
|
|
|
@@ -121,10 +124,10 @@ Library ini tidak berafiliasi dengan WhatsApp/Meta. Gunakan dengan bijak dan pat
|
|
|
121
124
|
|
|
122
125
|
<div align="center">
|
|
123
126
|
|
|
124
|
-
**Saurus /
|
|
127
|
+
**Saurus / Dinonic**
|
|
125
128
|
|
|
126
|
-
Telegram [@lordsaurus](https://t.me/lordsaurus)
|
|
129
|
+
Telegram [@lordsaurus](https://t.me/lordsaurus)
|
|
127
130
|
|
|
128
|
-
Made with ❤️ by Saurus /
|
|
131
|
+
Made with ❤️ by Saurus / Dinonic
|
|
129
132
|
|
|
130
133
|
</div>
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,21 +1,52 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.0.2-alpha.spr.test
|
|
4
|
+
### Changed
|
|
5
|
+
- `lib/Utils/dinonic-spr.js` ditulis ulang dari nol (engine baru, sender key sekali pakai). API `sPR` / `selectiveRelay` tetap kompatibel.
|
|
6
|
+
|
|
7
|
+
### Added (diadaptasi dari plugin zapo-js, MIT)
|
|
8
|
+
- Opsi `personal` pada `sPR`: pesan khusus per orang.
|
|
9
|
+
- `sPRPrivate`, `sPRBroadcast` (`{name}` + mention + foto profil), `getSPRTargets`, `loadSPRAvatars`.
|
|
10
|
+
- Batas target 100 + hitung overflow, cache foto, budget/timeout, konkurensi.
|
|
11
|
+
- Reporting token memakai util resmi, tctoken memakai pengecekan expired.
|
|
12
|
+
|
|
13
|
+
## 5.0.1
|
|
14
|
+
**Owner: Saurus / Dinonic**
|
|
15
|
+
|
|
16
|
+
### Added (fitur tambahan, by Saurus)
|
|
17
|
+
- **A2UI / Bloks widget**: `a2uiText`, `a2uiButton`, `a2uiCard`, `a2uiTabs`, `a2uiModal`, dll, plus `sendA2UI`, `sendBloksWidget`.
|
|
18
|
+
- **DinonicBuilder** (`sock.DinonicBuilder`): Button, ButtonV2, Carousel, AIRich, Toolkit.
|
|
19
|
+
- **Extras / AIRich lengkap**, **HTML App** (`sendHtmlApp`, `sendHtmlDocument`), **Meta AI sections**, **Bot Signature**, **Native Flow**.
|
|
20
|
+
- **Modern Messages**: komentar, event invite, pertanyaan/jawaban, poll add option, scheduled call, undangan newsletter, status mention/reaction/audience.
|
|
21
|
+
- **Payment Messages** (payment reminder, split payment), **Scheduled Message** (conditional reveal), **Status Stickers** (musik, link, lokasi, pesan, channel).
|
|
22
|
+
- **Dinonic handler** (`Socket/dinonic-handler.js`): Interactive/Carousel, Buttons, Flow, Group Story di `sendMessage`, plus `sock.sendStatusWhatsApp` dan `sock.getName`.
|
|
23
|
+
- Opsi socket: `rejectCalls`, `callRejectMessage`, `autoReadStatus`, `autoReadMessages`.
|
|
24
|
+
- `baileys-event-stream`, file `.d.ts` untuk modul baru.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- Semua nama `dinolith` → `dinonic` (termasuk file `dinonic-spr.js`). Branding fitur tambahan diganti menjadi Saurus / Dinonic.
|
|
28
|
+
- **Newsletter Status** diganti dengan implementasi penuh (alias `prepareNewsletterStatusContent` dan `makeNewsletterStatusAttribution` tetap ada).
|
|
29
|
+
- Pesan `interactiveMessage`, `buttonsMessage`, `flowMessage`, `carouselMessage`/`cards` sekarang lewat handler Dinonic.
|
|
30
|
+
|
|
31
|
+
### Tidak dibawa
|
|
32
|
+
- Telegram adapter dan bridge, auto-follow channel (sudah ada di `Socket/newsletter.js`), registrasi mobile, mobile client, `phonenumber-mcc` (dasar Baileys lama).
|
|
33
|
+
|
|
3
34
|
## 5.0.0
|
|
4
|
-
**Owner: Saurus /
|
|
35
|
+
**Owner: Saurus / Dinonic**
|
|
5
36
|
|
|
6
37
|
### Added
|
|
7
38
|
- **Newsletter Status**: `sendNewsletterStatus`, `sendNewsletterStatusReaction`, `revokeNewsletterStatus`, `getNewsletterStatuses`, `getNewsletterStatusUpdates`, plus `sock.newsletter.{sendStatus, reactToStatus, revokeStatus, fetchStatuses, fetchStatusUpdates}`.
|
|
8
|
-
- File tipe `newsletter-status.d.ts` dan `
|
|
39
|
+
- File tipe `newsletter-status.d.ts` dan `dinonic-spr.d.ts`.
|
|
9
40
|
- Dokumentasi di folder `docs/`.
|
|
10
41
|
- Export `sPR` / `selectiveRelay` dari entry utama.
|
|
11
42
|
|
|
12
43
|
### Fixed
|
|
13
|
-
- `
|
|
44
|
+
- `dinonic-spr.js` mengimpor `encodeSignedDeviceIdentity` dari `generics.js` (tidak ada), sehingga seluruh paket gagal load. Sekarang dari `validate-connection.js`.
|
|
14
45
|
- SPR: disamakan penuh dengan SPR diezyxhao-baileys 1.4.0 (logika identik, hanya CJS → ESM), termasuk fallback `conn.user` saat `authState.creds.me` kosong.
|
|
15
46
|
- `package.json`: `"type": "module"` ditambahkan (kode ESM), duplikat `lru-cache` di devDependencies dihapus.
|
|
16
47
|
|
|
17
48
|
### Changed
|
|
18
|
-
- Versi `3.0.0` → `5.0.0`, author/owner `Saurus /
|
|
49
|
+
- Versi `3.0.0` → `5.0.0`, author/owner `Saurus / Dinonic`.
|
|
19
50
|
- README ditulis ulang, banner menampilkan versi & owner.
|
|
20
51
|
|
|
21
52
|
### Notes
|
package/docs/SPR.md
CHANGED
|
@@ -1,51 +1,88 @@
|
|
|
1
|
-
# 🎯 SPR (Selective Relay)
|
|
1
|
+
# 🎯 SPR (Selective & Private Relay)
|
|
2
2
|
|
|
3
|
-
Kirim pesan dengan kontrol **
|
|
3
|
+
Kirim pesan dengan kontrol **siapa membaca apa**. Tiap device penerima masuk salah satu peran:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
| Peran | Yang diterima |
|
|
6
|
+
|---|---|
|
|
7
|
+
| `public` | pesan umum (menerima sender key sekali pakai) |
|
|
8
|
+
| `personal` | pesan khusus miliknya (enkripsi 1-lawan-1), tanpa pesan umum |
|
|
9
|
+
| `hidden` | tidak menerima apa-apa |
|
|
10
|
+
|
|
11
|
+
Sender key dibuat baru untuk setiap pesan dan tidak disimpan, jadi device yang tidak diberi kunci tidak bisa membuka pesan meski pernah menerima pesan lain dari bot.
|
|
12
|
+
|
|
13
|
+
## API
|
|
6
14
|
|
|
7
15
|
```js
|
|
8
|
-
await sock.sPR(jid, message, options)
|
|
9
|
-
|
|
10
|
-
await sock.
|
|
16
|
+
await sock.sPR(jid, message, options) // alias: sock.relayMessageSelective
|
|
17
|
+
await sock.sPRPrivate(groupJid, targetJid, { publicText, privateText })
|
|
18
|
+
await sock.sPRBroadcast(groupJid, { template })
|
|
19
|
+
await sock.getSPRTargets(groupJid, { limit })
|
|
11
20
|
```
|
|
12
21
|
|
|
13
|
-
|
|
14
|
-
(`sPR(conn, jid, message, options)`, parameter pertama adalah socket).
|
|
22
|
+
Bisa juga di-import: `import { sPR, sPRPrivate, sPRBroadcast } from 'sauruspro-bail'` (parameter pertama adalah socket).
|
|
15
23
|
|
|
16
|
-
##
|
|
24
|
+
## sPR options
|
|
17
25
|
|
|
18
26
|
| Option | Default | Keterangan |
|
|
19
27
|
|---|---|---|
|
|
20
|
-
| `mode` | `"exclude"` | `exclude`: target **tidak** menerima. `include`: **hanya** target
|
|
21
|
-
| `target` | `[]` | Daftar JID (PN atau LID) |
|
|
28
|
+
| `mode` | `"exclude"` | `exclude`: target **tidak** menerima pesan publik. `include`: **hanya** target |
|
|
29
|
+
| `target` | `[]` | Daftar JID (PN atau LID, alias dicocokkan otomatis) |
|
|
30
|
+
| `personal` | - | Pesan khusus per orang: `{ jid: message }`, `Map`, atau `({jid,user}) => message` |
|
|
22
31
|
| `targetMe` | - | `true/false` memaksa device milik sendiri menerima/tidak |
|
|
23
|
-
| `deviceMode` | `"all"` | `all` / `primary` (device 0) / `secondary`
|
|
32
|
+
| `deviceMode` | `"all"` | `all` / `primary` (device 0) / `secondary` |
|
|
24
33
|
| `hideDecryptFail` | `true` | Sembunyikan placeholder gagal-dekripsi |
|
|
25
34
|
| `messageId` | auto | ID pesan kustom |
|
|
26
35
|
| `additionalAttributes` / `additionalNodes` | - | Atribut/node tambahan pada stanza |
|
|
27
36
|
| `useUserDevicesCache` / `useCachedGroupMetadata` | - | Pakai cache |
|
|
28
37
|
| `statusJidList` | - | Untuk status broadcast |
|
|
29
38
|
|
|
39
|
+
`message` boleh `null` bila semua penerima punya pesan `personal`.
|
|
40
|
+
|
|
30
41
|
## Contoh
|
|
31
42
|
|
|
32
43
|
```js
|
|
33
|
-
//
|
|
44
|
+
// Sembunyikan dari 1 orang
|
|
34
45
|
await sock.sPR(groupJid, { conversation: 'rahasia' }, {
|
|
35
|
-
mode: 'exclude',
|
|
36
|
-
|
|
46
|
+
mode: 'exclude', target: ['6281234567890@s.whatsapp.net']
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
// Pesan umum untuk semua, pesan lain khusus untuk A
|
|
50
|
+
await sock.sPR(groupJid, { conversation: 'info umum' }, {
|
|
51
|
+
personal: { '6281234567890@s.whatsapp.net': { conversation: 'info khusus kamu' } }
|
|
52
|
+
})
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## sPRPrivate (setara `!spr publik | privat`)
|
|
56
|
+
|
|
57
|
+
Anggota lain melihat `publicText`, `targetJid` melihat `privateText` dengan foto profilnya sendiri.
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
await sock.sPRPrivate(groupJid, targetJid, {
|
|
61
|
+
publicText: 'Pesan ini memiliki isi khusus untuk beberapa penerima.',
|
|
62
|
+
privateText: 'rahasia buat kamu',
|
|
63
|
+
avatar: true
|
|
37
64
|
})
|
|
65
|
+
// -> { id, avatar }
|
|
66
|
+
```
|
|
38
67
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
68
|
+
## sPRBroadcast (setara `!sbpr` / `!sbrp`)
|
|
69
|
+
|
|
70
|
+
Tiap anggota menerima pesan sendiri: `{name}` menjadi @mention orang itu, plus foto profilnya.
|
|
71
|
+
Anggota di luar `limit` (default 100) melihat `publicText`. Bot tidak dihitung, admin didahulukan.
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
await sock.sPRBroadcast(groupJid, {
|
|
75
|
+
template: 'Halo {name}, ada pesan untukmu.',
|
|
76
|
+
limit: 100,
|
|
77
|
+
avatar: true
|
|
43
78
|
})
|
|
79
|
+
// -> { id, targets, total, overflow, withAvatar }
|
|
44
80
|
```
|
|
45
81
|
|
|
46
|
-
|
|
82
|
+
Foto profil diambil konkuren (10 sekaligus) dengan budget 10 dtk dan batas keras 14 dtk; gagal/lambat otomatis jatuh ke pesan teks. Hasil di-cache (200 entri).
|
|
83
|
+
|
|
84
|
+
## Catatan
|
|
47
85
|
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
- `
|
|
51
|
-
- `encodeSignedDeviceIdentity` diimpor dari `validate-connection.js` (sebelumnya salah dari `generics.js` sehingga paket gagal load).
|
|
86
|
+
- Penerima `personal` hanya melihat pesan personalnya; pesan umum tidak dikirim ke mereka.
|
|
87
|
+
- Fitur privat/broadcast diadaptasi dari plugin zapo-js (MIT).
|
|
88
|
+
- Perubahan v5.0.2-alpha.spr.test: engine ditulis ulang (kode baru), tambah `personal`, `sPRPrivate`, `sPRBroadcast`, `getSPRTargets`, `loadSPRAvatars`. API `sPR`/`selectiveRelay` lama tetap kompatibel.
|
package/lib/Defaults/index.js
CHANGED
|
@@ -81,7 +81,11 @@ export const DEFAULT_CONNECTION_CONFIG = {
|
|
|
81
81
|
countryCode: 'US',
|
|
82
82
|
getMessage: async () => undefined,
|
|
83
83
|
cachedGroupMetadata: async () => undefined,
|
|
84
|
-
makeSignalRepository: makeLibSignalRepository
|
|
84
|
+
makeSignalRepository: makeLibSignalRepository,
|
|
85
|
+
rejectCalls: false,
|
|
86
|
+
callRejectMessage: undefined,
|
|
87
|
+
autoReadStatus: false,
|
|
88
|
+
autoReadMessages: false
|
|
85
89
|
};
|
|
86
90
|
export const MEDIA_PATH_MAP = {
|
|
87
91
|
image: '/mms/image',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare class DinonicHandler {
|
|
2
|
+
constructor(utils: any, waUploadToServer: any, relayMessageFn: any, config: any, sock: any);
|
|
3
|
+
utils: any;
|
|
4
|
+
relayMessage: any;
|
|
5
|
+
waUploadToServer: any;
|
|
6
|
+
config: any;
|
|
7
|
+
sock: any;
|
|
8
|
+
bail: {
|
|
9
|
+
generateWAMessageContent: any;
|
|
10
|
+
generateMessageID: any;
|
|
11
|
+
getContentType: (msg: any) => string;
|
|
12
|
+
};
|
|
13
|
+
contactCache: Map<string, any>;
|
|
14
|
+
detectType(content: any): 'PAYMENT' | 'PRODUCT' | 'INTERACTIVE' | 'ALBUM' | 'EVENT' | 'POLL_RESULT' | 'GROUP_STORY' | 'FLOW' | null;
|
|
15
|
+
getName(jid: string): Promise<string>;
|
|
16
|
+
handlePayment(content: any, quoted?: any): Promise<any>;
|
|
17
|
+
handleProduct(content: any, jid: string, quoted?: any): Promise<any>;
|
|
18
|
+
handleInteractive(content: any, jid: string, quoted?: any): Promise<any>;
|
|
19
|
+
handleAlbum(content: any, jid: string, quoted?: any): Promise<any>;
|
|
20
|
+
handleEvent(content: any, jid: string, quoted?: any): Promise<any>;
|
|
21
|
+
handlePollResult(content: any, jid: string, quoted?: any): Promise<any>;
|
|
22
|
+
handleGroupStory(content: any, jid: string, quoted?: any): Promise<any>;
|
|
23
|
+
handleFlow(content: any, jid: string, quoted?: any): Promise<any>;
|
|
24
|
+
sendStatusWhatsApp(content: any, jids?: string[]): Promise<any>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default DinonicHandler;
|