elynn-baileys 1.0.1 โ 1.0.2
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 +794 -248
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,115 +1,266 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# elynn-baileys
|
|
4
|
+
|
|
5
|
+
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:0a0a12,50:2b1a2e,100:0a0a12&height=220§ion=header&text=ELYNN%20BAILEYS&fontSize=62&fontColor=e8b76a&fontAlign=50&fontAlignY=38&desc=WhatsApp%20%C2%B7%20Telegram%20%C2%B7%20Discord%20%E2%80%94%20Unified%20Engine&descAlign=50&descAlignY=62&descSize=18&animation=fadeIn" width="100%"/>
|
|
6
|
+
|
|
7
|
+
<br>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<img src="https://i.ibb.co/xq4NzXq0/elynn28760176.png" width="100%" style="border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,0.55);" />
|
|
11
|
+
|
|
12
|
+
<br><br>
|
|
13
|
+
|
|
14
|
+
<picture>
|
|
15
|
+
<img alt="elynn-baileys" src="https://readme-typing-svg.demolab.com/?font=Georgia&size=30&duration=3200&pause=900&color=E8B76A¢er=true&vCenter=true&width=820&height=55&lines=elynn-baileys;Satu+Library%2C+Tiga+Platform;WhatsApp+%C2%B7+Telegram+%C2%B7+Discord;Dibangun+untuk+yang+Serius+Membangun" />
|
|
16
|
+
</picture>
|
|
17
|
+
|
|
18
|
+
<br><br>
|
|
19
|
+
|
|
20
|
+
<sub>โฆ ECMASCRIPT MODULES ยท NODE.JS 20+ ยท MIT LICENSE ยท MAINTAINED BY ELYNN โฆ</sub>
|
|
21
|
+
|
|
22
|
+
<br><br>
|
|
23
|
+
|
|
24
|
+
[](https://www.npmjs.com/package/elynn-baileys)
|
|
25
|
+
[](https://www.npmjs.com/package/elynn-baileys)
|
|
26
|
+
[](https://nodejs.org)
|
|
27
|
+
[](#)
|
|
28
|
+
[](#)
|
|
29
|
+
[](#)
|
|
30
|
+
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<br>
|
|
34
|
+
|
|
35
|
+
> [!IMPORTANT]
|
|
36
|
+
> **Elynn Baileys** adalah library WhatsApp Web API yang kuat, stabil, dan ditingkatkan jauh dari basis aslinya โ kini menyatu dengan engine Telegram Bot (`ElynnTelegraf`) **dan** Discord Client (`ElynnDiscord`) dalam satu package. Mendukung penuh protokol WhatsApp 2026 โ *View-Once Text*, *View-Once Voice Note*, *Community Events*, *Group Message History*, *Channel Polling*, dan lainnya โ dilengkapi plugin Brat/Bratvid bawaan serta fungsi eksklusif `testMessage` untuk menguji seluruh jenis pesan dalam satu panggilan. Dibangun khusus untuk Node.js dengan format ECMAScript Modules (ESM).
|
|
37
|
+
|
|
38
|
+
<br>
|
|
39
|
+
|
|
40
|
+
<div align="right">
|
|
41
|
+
|
|
42
|
+
<sub>โ PETA NAVIGASI โ</sub>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<table width="100%">
|
|
47
|
+
<tr>
|
|
48
|
+
<td width="33%" valign="top" align="center">
|
|
49
|
+
|
|
50
|
+
### โก WhatsApp
|
|
51
|
+
|
|
52
|
+
Engine inti, *enhanced* dari Baileys dengan dukungan protokol 2026 penuh โ pesan interaktif, media, event komunitas, hingga sistem keamanan session.
|
|
53
|
+
|
|
54
|
+
`makeWASocket` ยท `useMultiFileAuthState` ยท `makeInMemoryStore`
|
|
55
|
+
|
|
56
|
+
</td>
|
|
57
|
+
<td width="33%" valign="top" align="center">
|
|
58
|
+
|
|
59
|
+
### โก Telegram
|
|
60
|
+
|
|
61
|
+
`ElynnTelegraf` โ engine bot Telegram lengkap dari long-polling dasar hingga Bot API 10.1: managed bots, guest mode, rich messages.
|
|
62
|
+
|
|
63
|
+
`ElynnTelegraf` ยท Scenes & Wizard ยท Inline Keyboard
|
|
64
|
+
|
|
65
|
+
</td>
|
|
66
|
+
<td width="34%" valign="top" align="center">
|
|
67
|
+
|
|
68
|
+
### โก Discord
|
|
69
|
+
|
|
70
|
+
`ElynnDiscord` โ client Discord dari nol, mendukung slash command, sharding, modals UI 2026, dan per-guild bot profile.
|
|
71
|
+
|
|
72
|
+
`ElynnDiscord` ยท Slash Commands ยท ShardManager
|
|
73
|
+
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
76
|
+
</table>
|
|
77
|
+
|
|
78
|
+
<br>
|
|
79
|
+
|
|
80
|
+
<div align="center">
|
|
81
|
+
|
|
82
|
+
### โก Mengapa elynn-baileys
|
|
83
|
+
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
| | |
|
|
87
|
+
|:---:|:---|
|
|
88
|
+
| **โ** | Satu dependency untuk **tiga platform messaging** sekaligus โ tidak perlu lagi merangkai tiga library berbeda dengan API yang tidak konsisten |
|
|
89
|
+
| **โ** | Dukungan penuh **protokol WhatsApp 2026** โ fitur-fitur terbaru yang belum tersedia di kebanyakan fork Baileys lain |
|
|
90
|
+
| **โ** | `testMessage` bawaan โ **uji 16 jenis pesan** dalam satu panggilan fungsi, tanpa setup tambahan |
|
|
91
|
+
| **โ** | `sessionGuard` โ kunci session ke IP server pertama, **proteksi nyata dari pencurian session** |
|
|
92
|
+
| **โ** | Plugin Brat/Bratvid **bawaan**, tidak perlu API key eksternal tambahan |
|
|
93
|
+
| **โ** | Tiga jenis Auth State (`multiFile`, `singleFile`, `sqlite`) โ fleksibel untuk **semua skala deployment** |
|
|
94
|
+
|
|
95
|
+
<br>
|
|
96
|
+
|
|
97
|
+
<div align="center">
|
|
98
|
+
|
|
99
|
+
<hr>
|
|
100
|
+
|
|
101
|
+
### โฆ Daftar Isi
|
|
102
|
+
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<table width="100%"><tr><td>
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
<code>01</code> <a href="#01-installation"><strong>Installation</strong></a><br>
|
|
109
|
+
|
|
110
|
+
<code>02</code> <a href="#02-quick-start"><strong>Quick Start</strong></a><br>
|
|
111
|
+
|
|
112
|
+
<code>03</code> <a href="#03-auth-state"><strong>Auth State</strong></a><br>
|
|
113
|
+
โฆ <a href="#-31-multi-file-auth-state">3.1 ยท Multi File Auth State</a><br>
|
|
114
|
+
โฆ <a href="#-32-single-file-auth-state">3.2 ยท Single File Auth State</a><br>
|
|
115
|
+
โฆ <a href="#-33-sqlite-auth-state">3.3 ยท SQLite Auth State</a><br>
|
|
116
|
+
<br>
|
|
117
|
+
|
|
118
|
+
<code>04</code> <a href="#04-makeinmemorystore"><strong>makeInMemoryStore</strong></a><br>
|
|
119
|
+
|
|
120
|
+
<details>
|
|
121
|
+
<summary><code>05</code> <a href="#05-sending-messages"><strong>Sending Messages</strong></a> <sub>(38 topik)</sub></summary>
|
|
122
|
+
<br>
|
|
123
|
+
|
|
124
|
+
โฆ <a href="#-51-text-biasa">5.1 ยท Text Biasa</a><br>
|
|
125
|
+
โฆ <a href="#-52-text-dengan-mention-user">5.2 ยท Text dengan Mention User</a><br>
|
|
126
|
+
โฆ <a href="#-53-mention-all">5.3 ยท Mention All</a><br>
|
|
127
|
+
โฆ <a href="#-54-reply-quote-message">5.4 ยท Reply / Quote Message</a><br>
|
|
128
|
+
โฆ <a href="#-55-reaction">5.5 ยท Reaction</a><br>
|
|
129
|
+
โฆ <a href="#-56-image">5.6 ยท Image</a><br>
|
|
130
|
+
โฆ <a href="#-57-video">5.7 ยท Video</a><br>
|
|
131
|
+
โฆ <a href="#-58-audio">5.8 ยท Audio</a><br>
|
|
132
|
+
โฆ <a href="#-59-document">5.9 ยท Document</a><br>
|
|
133
|
+
โฆ <a href="#-510-sticker">5.10 ยท Sticker</a><br>
|
|
134
|
+
โฆ <a href="#-511-sticker-pack">5.11 ยท Sticker Pack</a><br>
|
|
135
|
+
โฆ <a href="#-512-contact-vcard">5.12 ยท Contact / vCard</a><br>
|
|
136
|
+
โฆ <a href="#-513-location">5.13 ยท Location</a><br>
|
|
137
|
+
โฆ <a href="#-514-live-location">5.14 ยท Live Location</a><br>
|
|
138
|
+
โฆ <a href="#-515-poll">5.15 ยท Poll</a><br>
|
|
139
|
+
โฆ <a href="#-516-album">5.16 ยท Album</a><br>
|
|
140
|
+
โฆ <a href="#-517-interactive-buttons-native-flow">5.17 ยท Interactive โ Buttons (Native Flow)</a><br>
|
|
141
|
+
โฆ <a href="#-518-interactive-list">5.18 ยท Interactive โ List</a><br>
|
|
142
|
+
โฆ <a href="#-519-interactive-image-header">5.19 ยท Interactive โ Image Header</a><br>
|
|
143
|
+
โฆ <a href="#-520-interactive-sebagai-template">5.20 ยท Interactive sebagai Template</a><br>
|
|
144
|
+
โฆ <a href="#-521-hydrated-template-button">5.21 ยท Hydrated Template Button</a><br>
|
|
145
|
+
โฆ <a href="#-522-view-once">5.22 ยท View Once</a><br>
|
|
146
|
+
โฆ <a href="#-523-ephemeral">5.23 ยท Ephemeral</a><br>
|
|
147
|
+
โฆ <a href="#-524-spoiler">5.24 ยท Spoiler</a><br>
|
|
148
|
+
โฆ <a href="#-525-group-status">5.25 ยท Group Status</a><br>
|
|
149
|
+
โฆ <a href="#-526-external-ad-reply">5.26 ยท External Ad Reply</a><br>
|
|
150
|
+
โฆ <a href="#-527-forward-pesan">5.27 ยท Forward Pesan</a><br>
|
|
151
|
+
โฆ <a href="#-528-pin-pesan">5.28 ยท Pin Pesan</a><br>
|
|
152
|
+
โฆ <a href="#-529-raw-message">5.29 ยท Raw Message</a><br>
|
|
153
|
+
โฆ <a href="#-530-group-invite-link">5.30 ยท Group Invite Link</a><br>
|
|
154
|
+
โฆ <a href="#-531-event-dengan-reminder-fitur-wa-januari-2026">5.31 ยท Event dengan Reminder (fitur WA Januari 2026)</a><br>
|
|
155
|
+
โฆ <a href="#-532-text-sticker-fitur-wa-januari-2026">5.32 ยท Text Sticker (fitur WA Januari 2026)</a><br>
|
|
156
|
+
โฆ <a href="#-533-view-once-text-teks-sekali-lihat-wa-2026">5.33 ยท View-Once Text โ Teks Sekali Lihat (WA 2026)</a><br>
|
|
157
|
+
โฆ <a href="#-534-view-once-voice-note-audio-sekali-dengar-wa-2026">5.34 ยท View-Once Voice Note โ Audio Sekali Dengar (WA 2026)</a><br>
|
|
158
|
+
โฆ <a href="#-535-community-event-rsvp-virtual-meeting-call-wa-2026">5.35 ยท Community Event โ RSVP & Virtual Meeting Call (WA 2026)</a><br>
|
|
159
|
+
โฆ <a href="#-536-group-message-history-share-wa-2026">5.36 ยท Group Message History Share (WA 2026)</a><br>
|
|
160
|
+
โฆ <a href="#-537-channel-poll-polling-di-saluranchannel-wa-2026">5.37 ยท Channel Poll โ Polling di Saluran/Channel (WA 2026)</a><br>
|
|
161
|
+
โฆ <a href="#-538-channel-voice-note-wa-2026">5.38 ยท Channel Voice Note (WA 2026)</a><br>
|
|
162
|
+
|
|
163
|
+
</details>
|
|
164
|
+
<br>
|
|
165
|
+
|
|
166
|
+
<code>06</code> <a href="#06-rich-response-messages"><strong>Rich Response Messages</strong></a><br>
|
|
167
|
+
โฆ <a href="#-61-text-rich">6.1 ยท Text Rich</a><br>
|
|
168
|
+
โฆ <a href="#-62-code-block">6.2 ยท Code Block</a><br>
|
|
169
|
+
โฆ <a href="#-63-table">6.3 ยท Table</a><br>
|
|
170
|
+
โฆ <a href="#-64-inline-image">6.4 ยท Inline Image</a><br>
|
|
171
|
+
โฆ <a href="#-65-inline-link-citation">6.5 ยท Inline Link / Citation</a><br>
|
|
172
|
+
โฆ <a href="#-66-rich-response-kombinasi">6.6 ยท Rich Response Kombinasi</a><br>
|
|
173
|
+
<br>
|
|
174
|
+
|
|
175
|
+
<code>07</code> <a href="#07-group-management"><strong>Group Management</strong></a><br>
|
|
176
|
+
|
|
177
|
+
<code>08</code> <a href="#08-newsletter-channel"><strong>Newsletter / Channel</strong></a><br>
|
|
178
|
+
|
|
179
|
+
<code>09</code> <a href="#09-privacy-profile"><strong>Privacy & Profile</strong></a><br>
|
|
180
|
+
|
|
181
|
+
<code>10</code> <a href="#10-handling-events"><strong>Handling Events</strong></a><br>
|
|
182
|
+
|
|
183
|
+
<code>11</code> <a href="#11-elynn-plugins-brat-bratvid"><strong>Elynn Plugins : Brat & Bratvid</strong></a><br>
|
|
184
|
+
|
|
185
|
+
<code>12</code> <a href="#12-read-messages-presence"><strong>Read Messages & Presence</strong></a><br>
|
|
186
|
+
|
|
187
|
+
<code>13</code> <a href="#13-delete-edit-pesan"><strong>Delete / Edit Pesan</strong></a><br>
|
|
188
|
+
|
|
189
|
+
<code>14</code> <a href="#14-message-options-tambahan"><strong>Message Options Tambahan</strong></a><br>
|
|
190
|
+
|
|
191
|
+
<code>15</code> <a href="#15-browser-fingerprint-kiwi-uc-browser-dll"><strong>Browser Fingerprint (Kiwi, UC Browser, dll)</strong></a><br>
|
|
192
|
+
|
|
193
|
+
<details>
|
|
194
|
+
<summary><code>16</code> <a href="#16-telegram-bot-elynntelegraf"><strong>Telegram Bot (ElynnTelegraf)</strong></a> <sub>(17 topik)</sub></summary>
|
|
195
|
+
<br>
|
|
196
|
+
|
|
197
|
+
โฆ <a href="#-161-setup-dasar-long-polling">16.1 ยท Setup Dasar & Long Polling</a><br>
|
|
198
|
+
โฆ <a href="#-162-setup-via-webhook">16.2 ยท Setup via Webhook</a><br>
|
|
199
|
+
โฆ <a href="#-163-inline-keyboard-reply-keyboard">16.3 ยท Inline Keyboard & Reply Keyboard</a><br>
|
|
200
|
+
โฆ <a href="#-164-session-scenes-wizard">16.4 ยท Session, Scenes & Wizard</a><br>
|
|
201
|
+
โฆ <a href="#-165-memanggil-elynn-plugins-bratbratvid-dari-bot-telegram">16.5 ยท Memanggil Elynn Plugins (Brat/Bratvid) dari Bot Telegram</a><br>
|
|
202
|
+
โฆ <a href="#-166-cek-koneksi-bot-dengan-connecttelegram">16.6 ยท Cek Koneksi Bot dengan `connectTelegram`</a><br>
|
|
203
|
+
โฆ <a href="#-167-bot-api-9394-sendmessagedraft-profile-photo-bot-button-style-icon">16.7 ยท Bot API 9.3โ9.4 โ sendMessageDraft, Profile Photo Bot, Button Style & Icon</a><br>
|
|
204
|
+
โฆ <a href="#-168-bot-api-95-member-tags-date-time-entity">16.8 ยท Bot API 9.5 โ Member Tags, Date-Time Entity</a><br>
|
|
205
|
+
โฆ <a href="#-169-bot-api-96-managed-bots">16.9 ยท Bot API 9.6 โ Managed Bots</a><br>
|
|
206
|
+
โฆ <a href="#-1610-bot-api-100-guest-mode">16.10 ยท Bot API 10.0 โ Guest Mode</a><br>
|
|
207
|
+
โฆ <a href="#-1611-bot-api-100-bot-to-bot-communication">16.11 ยท Bot API 10.0 โ Bot-to-Bot Communication</a><br>
|
|
208
|
+
โฆ <a href="#-1612-bot-api-100-delete-reactions">16.12 ยท Bot API 10.0 โ Delete Reactions</a><br>
|
|
209
|
+
โฆ <a href="#-1613-bot-api-100-live-photo">16.13 ยท Bot API 10.0 โ Live Photo</a><br>
|
|
210
|
+
โฆ <a href="#-1614-bot-api-100-managed-bot-access-settings">16.14 ยท Bot API 10.0 โ Managed Bot Access Settings</a><br>
|
|
211
|
+
โฆ <a href="#-1615-bot-api-100-get-user-personal-chat-messages">16.15 ยท Bot API 10.0 โ Get User Personal Chat Messages</a><br>
|
|
212
|
+
โฆ <a href="#-1616-bot-api-101-join-request-queries">16.16 ยท Bot API 10.1 โ Join Request Queries</a><br>
|
|
213
|
+
โฆ <a href="#-1617-bot-api-101-rich-messages">16.17 ยท Bot API 10.1 โ Rich Messages</a><br>
|
|
214
|
+
|
|
215
|
+
</details>
|
|
216
|
+
<br>
|
|
217
|
+
|
|
218
|
+
<code>17</code> <a href="#17-discord-bot-elynndiscord"><strong>Discord Bot (ElynnDiscord)</strong></a><br>
|
|
219
|
+
โฆ <a href="#-171-setup-dasar-login-bot">17.1 ยท Setup Dasar & Login Bot</a><br>
|
|
220
|
+
โฆ <a href="#-172-menangani-event-pesan">17.2 ยท Menangani Event & Pesan</a><br>
|
|
221
|
+
โฆ <a href="#-173-slash-commands-application-commands">17.3 ยท Slash Commands (Application Commands)</a><br>
|
|
222
|
+
โฆ <a href="#-174-embed-file-upload">17.4 ยท Embed & File Upload</a><br>
|
|
223
|
+
โฆ <a href="#-175-sharding-dengan-shardmanager">17.5 ยท Sharding dengan ShardManager</a><br>
|
|
224
|
+
โฆ <a href="#-176-cek-koneksi-bot-dengan-connectdiscord">17.6 ยท Cek Koneksi Bot dengan `connectDiscord`</a><br>
|
|
225
|
+
<br>
|
|
226
|
+
|
|
227
|
+
<code>18</code> <a href="#18-testmessage-tes-semua-jenis-pesan"><strong>testMessage : Tes Semua Jenis Pesan</strong></a><br>
|
|
228
|
+
โฆ <a href="#-cara-import-penggunaan">Cara import & penggunaan</a><br>
|
|
229
|
+
โฆ <a href="#-signature-lengkap">Signature lengkap</a><br>
|
|
230
|
+
โฆ <a href="#-yang-diuji-16-jenis-pesan">Yang diuji (16 jenis pesan)</a><br>
|
|
231
|
+
<br>
|
|
232
|
+
|
|
233
|
+
<details>
|
|
234
|
+
<summary><code>19</code> <a href="#19-sessionguard-proteksi-session-dari-pencurian"><strong>sessionGuard : Proteksi Session dari Pencurian</strong></a> <sub>(7 topik)</sub></summary>
|
|
235
|
+
<br>
|
|
236
|
+
|
|
237
|
+
โฆ <a href="#-cara-import">Cara Import</a><br>
|
|
238
|
+
โฆ <a href="#-penggunaan-dasar">Penggunaan Dasar</a><br>
|
|
239
|
+
โฆ <a href="#-opsi-lengkap">Opsi Lengkap</a><br>
|
|
240
|
+
โฆ <a href="#-cara-kerja">Cara Kerja</a><br>
|
|
241
|
+
โฆ <a href="#-cek-status-guard">Cek Status Guard</a><br>
|
|
242
|
+
โฆ <a href="#-reset-guard-pindah-server">Reset Guard (Pindah Server)</a><br>
|
|
243
|
+
โฆ <a href="#-contoh-output-log">Contoh Output Log</a><br>
|
|
244
|
+
|
|
245
|
+
</details>
|
|
246
|
+
<br>
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
</td></tr></table>
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
<br>
|
|
253
|
+
|
|
254
|
+
<br>
|
|
255
|
+
|
|
256
|
+
<div align="right"><sub>ยง SECTION 01</sub></div>
|
|
257
|
+
|
|
258
|
+
## 01 โ Installation
|
|
259
|
+
|
|
260
|
+
<hr>
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
Anda dapat menginstal package ini menggunakan manajer paket Node.js favorit Anda. Package ini membutuhkan Node.js versi 20 ke atas.
|
|
113
264
|
```bash
|
|
114
265
|
npm install elynn-baileys
|
|
115
266
|
|
|
@@ -127,7 +278,17 @@ Untuk memaksimalkan semua fitur yang ada, terutama fitur manipulasi media, integ
|
|
|
127
278
|
npm install sharp jimp @napi-rs/image audio-decode better-sqlite3 link-preview-js
|
|
128
279
|
|
|
129
280
|
```
|
|
130
|
-
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
<br>
|
|
284
|
+
|
|
285
|
+
<div align="right"><sub>ยง SECTION 02</sub></div>
|
|
286
|
+
|
|
287
|
+
## 02 โ Quick Start
|
|
288
|
+
|
|
289
|
+
<hr>
|
|
290
|
+
|
|
291
|
+
|
|
131
292
|
Berikut adalah contoh lengkap cara melakukan inisialisasi koneksi ke WhatsApp. Kode ini menangani pembuatan socket, integrasi kredensial login, dan logika rekoneksi otomatis. Terdapat dua metode login: menggunakan Pairing Code atau QR Code.
|
|
132
293
|
```js
|
|
133
294
|
import pino from 'pino'
|
|
@@ -182,9 +343,21 @@ async function connectToWhatsApp() {
|
|
|
182
343
|
connectToWhatsApp()
|
|
183
344
|
|
|
184
345
|
```
|
|
185
|
-
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
<br>
|
|
349
|
+
|
|
350
|
+
<div align="right"><sub>ยง SECTION 03</sub></div>
|
|
351
|
+
|
|
352
|
+
## 03 โ Auth State
|
|
353
|
+
|
|
354
|
+
<hr>
|
|
355
|
+
|
|
356
|
+
|
|
186
357
|
elynn-baileys menyediakan tiga jenis mekanisme penyimpanan status autentikasi yang dapat Anda pilih sesuai dengan infrastruktur aplikasi Anda.
|
|
187
|
-
|
|
358
|
+
|
|
359
|
+
#### โ 3.1 ยท Multi File Auth State
|
|
360
|
+
|
|
188
361
|
Menyimpan data kredensial dan keys dalam sebuah direktori yang berisi banyak file JSON. Sangat stabil dan direkomendasikan untuk penggunaan standar.
|
|
189
362
|
```js
|
|
190
363
|
import { useMultiFileAuthState } from 'elynn-baileys'
|
|
@@ -195,7 +368,9 @@ async function setupAuth() {
|
|
|
195
368
|
}
|
|
196
369
|
|
|
197
370
|
```
|
|
198
|
-
|
|
371
|
+
|
|
372
|
+
#### โ 3.2 ยท Single File Auth State
|
|
373
|
+
|
|
199
374
|
Menyimpan seluruh data kredensial ke dalam satu file JSON tunggal. Mudah dipindahkan namun bisa menjadi sangat besar seiring waktu.
|
|
200
375
|
```js
|
|
201
376
|
import { useSingleFileAuthState } from 'elynn-baileys'
|
|
@@ -206,7 +381,9 @@ async function setupAuth() {
|
|
|
206
381
|
}
|
|
207
382
|
|
|
208
383
|
```
|
|
209
|
-
|
|
384
|
+
|
|
385
|
+
#### โ 3.3 ยท SQLite Auth State
|
|
386
|
+
|
|
210
387
|
Menyimpan data autentikasi ke dalam database SQLite. Sangat cepat, hemat memori, dan sangat disarankan untuk produksi berskala besar.
|
|
211
388
|
```js
|
|
212
389
|
import { useSqliteAuthState } from 'elynn-baileys'
|
|
@@ -218,7 +395,17 @@ async function setupAuth() {
|
|
|
218
395
|
}
|
|
219
396
|
|
|
220
397
|
```
|
|
221
|
-
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
<br>
|
|
401
|
+
|
|
402
|
+
<div align="right"><sub>ยง SECTION 04</sub></div>
|
|
403
|
+
|
|
404
|
+
## 04 โ makeInMemoryStore
|
|
405
|
+
|
|
406
|
+
<hr>
|
|
407
|
+
|
|
408
|
+
|
|
222
409
|
makeInMemoryStore adalah sistem penyimpanan data sesi dalam memori yang ditingkatkan. Menyediakan caching cerdas untuk pesan, kontak, dan metadata grup.
|
|
223
410
|
Konfigurasi dan implementasi lengkap:
|
|
224
411
|
```js
|
|
@@ -272,9 +459,21 @@ async function useStoreFeatures(sock, jid, messageId) {
|
|
|
272
459
|
}
|
|
273
460
|
|
|
274
461
|
```
|
|
275
|
-
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
<br>
|
|
465
|
+
|
|
466
|
+
<div align="right"><sub>ยง SECTION 05</sub></div>
|
|
467
|
+
|
|
468
|
+
## 05 โ Sending Messages
|
|
469
|
+
|
|
470
|
+
<hr>
|
|
471
|
+
|
|
472
|
+
|
|
276
473
|
Seksi ini memuat seluruh metode dan struktur pengiriman pesan menggunakan library ini.
|
|
277
|
-
|
|
474
|
+
|
|
475
|
+
#### โ 5.1 ยท Text Biasa
|
|
476
|
+
|
|
278
477
|
```js
|
|
279
478
|
async function sendText(sock, jid) {
|
|
280
479
|
await sock.sendMessage(jid, {
|
|
@@ -283,7 +482,9 @@ async function sendText(sock, jid) {
|
|
|
283
482
|
}
|
|
284
483
|
|
|
285
484
|
```
|
|
286
|
-
|
|
485
|
+
|
|
486
|
+
#### โ 5.2 ยท Text dengan Mention User
|
|
487
|
+
|
|
287
488
|
```js
|
|
288
489
|
async function sendMention(sock, jid) {
|
|
289
490
|
await sock.sendMessage(jid, {
|
|
@@ -293,7 +494,9 @@ async function sendMention(sock, jid) {
|
|
|
293
494
|
}
|
|
294
495
|
|
|
295
496
|
```
|
|
296
|
-
|
|
497
|
+
|
|
498
|
+
#### โ 5.3 ยท Mention All
|
|
499
|
+
|
|
297
500
|
```js
|
|
298
501
|
async function sendMentionAll(sock, jid) {
|
|
299
502
|
const meta = await sock.groupMetadata(jid)
|
|
@@ -305,7 +508,9 @@ async function sendMentionAll(sock, jid) {
|
|
|
305
508
|
}
|
|
306
509
|
|
|
307
510
|
```
|
|
308
|
-
|
|
511
|
+
|
|
512
|
+
#### โ 5.4 ยท Reply / Quote Message
|
|
513
|
+
|
|
309
514
|
```js
|
|
310
515
|
async function sendReply(sock, jid, quotedMessage) {
|
|
311
516
|
await sock.sendMessage(jid, {
|
|
@@ -315,7 +520,9 @@ async function sendReply(sock, jid, quotedMessage) {
|
|
|
315
520
|
}
|
|
316
521
|
|
|
317
522
|
```
|
|
318
|
-
|
|
523
|
+
|
|
524
|
+
#### โ 5.5 ยท Reaction
|
|
525
|
+
|
|
319
526
|
```js
|
|
320
527
|
async function sendReaction(sock, jid, messageKey) {
|
|
321
528
|
await sock.sendMessage(jid, {
|
|
@@ -327,7 +534,9 @@ async function sendReaction(sock, jid, messageKey) {
|
|
|
327
534
|
}
|
|
328
535
|
|
|
329
536
|
```
|
|
330
|
-
|
|
537
|
+
|
|
538
|
+
#### โ 5.6 ยท Image
|
|
539
|
+
|
|
331
540
|
```js
|
|
332
541
|
import fs from 'fs'
|
|
333
542
|
|
|
@@ -345,7 +554,9 @@ async function sendImages(sock, jid) {
|
|
|
345
554
|
}
|
|
346
555
|
|
|
347
556
|
```
|
|
348
|
-
|
|
557
|
+
|
|
558
|
+
#### โ 5.7 ยท Video
|
|
559
|
+
|
|
349
560
|
```js
|
|
350
561
|
async function sendVideo(sock, jid) {
|
|
351
562
|
await sock.sendMessage(jid, {
|
|
@@ -356,7 +567,9 @@ async function sendVideo(sock, jid) {
|
|
|
356
567
|
}
|
|
357
568
|
|
|
358
569
|
```
|
|
359
|
-
|
|
570
|
+
|
|
571
|
+
#### โ 5.8 ยท Audio
|
|
572
|
+
|
|
360
573
|
```js
|
|
361
574
|
async function sendAudio(sock, jid) {
|
|
362
575
|
await sock.sendMessage(jid, {
|
|
@@ -372,7 +585,9 @@ async function sendAudio(sock, jid) {
|
|
|
372
585
|
}
|
|
373
586
|
|
|
374
587
|
```
|
|
375
|
-
|
|
588
|
+
|
|
589
|
+
#### โ 5.9 ยท Document
|
|
590
|
+
|
|
376
591
|
```js
|
|
377
592
|
async function sendDocument(sock, jid) {
|
|
378
593
|
await sock.sendMessage(jid, {
|
|
@@ -384,7 +599,9 @@ async function sendDocument(sock, jid) {
|
|
|
384
599
|
}
|
|
385
600
|
|
|
386
601
|
```
|
|
387
|
-
|
|
602
|
+
|
|
603
|
+
#### โ 5.10 ยท Sticker
|
|
604
|
+
|
|
388
605
|
```js
|
|
389
606
|
import fs from 'fs'
|
|
390
607
|
|
|
@@ -396,7 +613,9 @@ async function sendSticker(sock, jid) {
|
|
|
396
613
|
}
|
|
397
614
|
|
|
398
615
|
```
|
|
399
|
-
|
|
616
|
+
|
|
617
|
+
#### โ 5.11 ยท Sticker Pack
|
|
618
|
+
|
|
400
619
|
```js
|
|
401
620
|
import fs from 'fs'
|
|
402
621
|
|
|
@@ -416,7 +635,9 @@ async function sendStickerPack(sock, jid) {
|
|
|
416
635
|
}
|
|
417
636
|
|
|
418
637
|
```
|
|
419
|
-
|
|
638
|
+
|
|
639
|
+
#### โ 5.12 ยท Contact / vCard
|
|
640
|
+
|
|
420
641
|
```js
|
|
421
642
|
async function sendContact(sock, jid) {
|
|
422
643
|
const vcardString = 'BEGIN:VCARD\nVERSION:3.0\nFN:Elynn\nTEL;type=CELL;waid=6281234567890:+62 812 3456 7890\nEND:VCARD'
|
|
@@ -432,7 +653,9 @@ async function sendContact(sock, jid) {
|
|
|
432
653
|
}
|
|
433
654
|
|
|
434
655
|
```
|
|
435
|
-
|
|
656
|
+
|
|
657
|
+
#### โ 5.13 ยท Location
|
|
658
|
+
|
|
436
659
|
```js
|
|
437
660
|
async function sendLocation(sock, jid) {
|
|
438
661
|
await sock.sendMessage(jid, {
|
|
@@ -446,7 +669,9 @@ async function sendLocation(sock, jid) {
|
|
|
446
669
|
}
|
|
447
670
|
|
|
448
671
|
```
|
|
449
|
-
|
|
672
|
+
|
|
673
|
+
#### โ 5.14 ยท Live Location
|
|
674
|
+
|
|
450
675
|
```js
|
|
451
676
|
async function sendLiveLocation(sock, jid) {
|
|
452
677
|
await sock.sendMessage(jid, {
|
|
@@ -463,7 +688,9 @@ async function sendLiveLocation(sock, jid) {
|
|
|
463
688
|
}
|
|
464
689
|
|
|
465
690
|
```
|
|
466
|
-
|
|
691
|
+
|
|
692
|
+
#### โ 5.15 ยท Poll
|
|
693
|
+
|
|
467
694
|
```js
|
|
468
695
|
async function sendPoll(sock, jid) {
|
|
469
696
|
await sock.sendMessage(jid, {
|
|
@@ -476,7 +703,9 @@ async function sendPoll(sock, jid) {
|
|
|
476
703
|
}
|
|
477
704
|
|
|
478
705
|
```
|
|
479
|
-
|
|
706
|
+
|
|
707
|
+
#### โ 5.16 ยท Album
|
|
708
|
+
|
|
480
709
|
```js
|
|
481
710
|
import fs from 'fs'
|
|
482
711
|
|
|
@@ -493,7 +722,9 @@ async function sendAlbum(sock, jid) {
|
|
|
493
722
|
}
|
|
494
723
|
|
|
495
724
|
```
|
|
496
|
-
|
|
725
|
+
|
|
726
|
+
#### โ 5.17 ยท Interactive โ Buttons (Native Flow)
|
|
727
|
+
|
|
497
728
|
```js
|
|
498
729
|
async function sendInteractiveButtons(sock, jid) {
|
|
499
730
|
await sock.sendMessage(jid, {
|
|
@@ -540,7 +771,9 @@ async function sendInteractiveButtons(sock, jid) {
|
|
|
540
771
|
}
|
|
541
772
|
|
|
542
773
|
```
|
|
543
|
-
|
|
774
|
+
|
|
775
|
+
#### โ 5.18 ยท Interactive โ List
|
|
776
|
+
|
|
544
777
|
```js
|
|
545
778
|
async function sendInteractiveList(sock, jid) {
|
|
546
779
|
await sock.sendMessage(jid, {
|
|
@@ -577,7 +810,9 @@ async function sendInteractiveList(sock, jid) {
|
|
|
577
810
|
}
|
|
578
811
|
|
|
579
812
|
```
|
|
580
|
-
|
|
813
|
+
|
|
814
|
+
#### โ 5.19 ยท Interactive โ Image Header
|
|
815
|
+
|
|
581
816
|
```js
|
|
582
817
|
async function sendInteractiveImageHeader(sock, jid) {
|
|
583
818
|
const imagePreparation = await sock.prepareMessage(jid, {
|
|
@@ -609,9 +844,12 @@ async function sendInteractiveImageHeader(sock, jid) {
|
|
|
609
844
|
}
|
|
610
845
|
|
|
611
846
|
```
|
|
612
|
-
### 5.20 Interactive sebagai Template
|
|
613
847
|
|
|
614
|
-
|
|
848
|
+
#### โ 5.20 ยท Interactive sebagai Template
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
> [!IMPORTANT]
|
|
852
|
+
> Opsi `interactiveAsTemplate` membungkus pesan jadi `templateMessage`, format legacy yang **tidak tampil di akun WhatsApp personal** (lihat catatan di 5.21). Hanya gunakan ini jika tujuan target adalah WhatsApp Business Cloud API resmi dengan template approved. Untuk bot/personal account biasa, kirim langsung tanpa flag `interactiveAsTemplate` (lihat 5.17).
|
|
615
853
|
|
|
616
854
|
```js
|
|
617
855
|
async function sendInteractiveAsTemplate(sock, jid) {
|
|
@@ -637,9 +875,12 @@ async function sendInteractiveAsTemplate(sock, jid) {
|
|
|
637
875
|
}
|
|
638
876
|
|
|
639
877
|
```
|
|
640
|
-
### 5.21 Hydrated Template Button
|
|
641
878
|
|
|
642
|
-
|
|
879
|
+
#### โ 5.21 ยท Hydrated Template Button
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
> [!WARNING]
|
|
883
|
+
> **PENTING โ `templateMessage`/`buttonsMessage` (legacy) SUDAH TIDAK WORK di akun WhatsApp personal.** Berdasarkan dokumentasi resmi WhatsApp (developers.facebook.com), button & template format lama ini hanya didukung lewat **WhatsApp Business Cloud API** dengan template yang sudah di-approve Meta โ bukan lewat koneksi personal/MD seperti Baileys. Mengirim `templateMessage` mentah dari akun biasa akan terkirim tapi **buttonnya tidak muncul / pesan tidak tampil** di sisi penerima (silent fail). Gunakan **5.17 Native Flow** sebagai gantinya โ itu yang dipakai WA app resmi sekarang untuk personal account.
|
|
643
884
|
|
|
644
885
|
Helper `templateButtons` di bawah ini tetap disediakan untuk kompatibilitas kode lama, tapi secara internal **otomatis di-convert** memakai struktur yang sama dengan native flow agar tetap bisa tampil:
|
|
645
886
|
|
|
@@ -675,7 +916,9 @@ async function sendHydratedTemplate(sock, jid) {
|
|
|
675
916
|
}
|
|
676
917
|
|
|
677
918
|
```
|
|
678
|
-
|
|
919
|
+
|
|
920
|
+
#### โ 5.22 ยท View Once
|
|
921
|
+
|
|
679
922
|
```js
|
|
680
923
|
async function sendViewOnce(sock, jid) {
|
|
681
924
|
await sock.sendMessage(jid, {
|
|
@@ -691,7 +934,9 @@ async function sendViewOnce(sock, jid) {
|
|
|
691
934
|
}
|
|
692
935
|
|
|
693
936
|
```
|
|
694
|
-
|
|
937
|
+
|
|
938
|
+
#### โ 5.23 ยท Ephemeral
|
|
939
|
+
|
|
695
940
|
```js
|
|
696
941
|
async function sendEphemeral(sock, jid) {
|
|
697
942
|
await sock.sendMessage(jid, {
|
|
@@ -703,7 +948,9 @@ async function sendEphemeral(sock, jid) {
|
|
|
703
948
|
}
|
|
704
949
|
|
|
705
950
|
```
|
|
706
|
-
|
|
951
|
+
|
|
952
|
+
#### โ 5.24 ยท Spoiler
|
|
953
|
+
|
|
707
954
|
```js
|
|
708
955
|
async function sendSpoiler(sock, jid) {
|
|
709
956
|
await sock.sendMessage(jid, {
|
|
@@ -714,7 +961,9 @@ async function sendSpoiler(sock, jid) {
|
|
|
714
961
|
}
|
|
715
962
|
|
|
716
963
|
```
|
|
717
|
-
|
|
964
|
+
|
|
965
|
+
#### โ 5.25 ยท Group Status
|
|
966
|
+
|
|
718
967
|
```js
|
|
719
968
|
async function sendGroupStatus(sock, jid) {
|
|
720
969
|
await sock.sendMessage(jid, {
|
|
@@ -724,11 +973,15 @@ async function sendGroupStatus(sock, jid) {
|
|
|
724
973
|
}
|
|
725
974
|
|
|
726
975
|
```
|
|
727
|
-
### 5.26 External Ad Reply
|
|
728
976
|
|
|
729
|
-
|
|
977
|
+
#### โ 5.26 ยท External Ad Reply
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
> [!IMPORTANT]
|
|
981
|
+
> **Catatan penting:** `externalAdReply` di shorthand `sock.sendMessage()` butuh field `url` (string, dipakai untuk `mediaUrl`/`sourceUrl`/`thumbnailUrl` sekaligus) dan `thumbnail` (Buffer JPEG, bukan `thumbnailUrl` string) โ bukan `thumbnailUrl`/`sourceUrl` terpisah. Tanpa `thumbnail` (Buffer), preview card sering tidak muncul karena WA app butuh gambar sudah ter-embed, tidak bisa fetch dari URL eksternal saat render. Sertakan juga `forwardingScore` + `isForwarded: true` โ pola ini paling konsisten membuat card-nya muncul.
|
|
730
982
|
>
|
|
731
|
-
>
|
|
983
|
+
> [!WARNING]
|
|
984
|
+
> **Limitasi yang tidak bisa diperbaiki dari sisi kode:** `externalAdReply` murni metadata dekorasi di `contextInfo`, bukan tipe pesan sendiri โ apakah card-nya dirender atau tidak itu **keputusan WhatsApp app di sisi penerima**, tergantung platform (Android/iOS) dan versi app. Ini dikonfirmasi sebagai known issue di banyak fork Baileys (lihat issue [#51](https://github.com/WhiskeySockets/Baileys/issues/51) dan [#75](https://github.com/WhiskeySockets/Baileys/issues/75) di repo WhiskeySockets/Baileys). Gejala umum: pengirim/linked-device sendiri melihat card lengkap (karena disinkron via WA Web/Desktop yang versinya lebih baru), tapi penerima dengan WA app versi/platform berbeda **hanya melihat teks biasa tanpa card**. Tidak ada konfigurasi proto yang menjamin tampil 100% di semua device โ anggap fitur ini sebagai *progressive enhancement*, bukan sesuatu yang reliable untuk dipakai sebagai fitur utama bot.
|
|
732
985
|
|
|
733
986
|
```js
|
|
734
987
|
import fs from 'fs'
|
|
@@ -773,7 +1026,9 @@ async function sendExternalAdReplyRaw(sock, jid) {
|
|
|
773
1026
|
}
|
|
774
1027
|
|
|
775
1028
|
```
|
|
776
|
-
|
|
1029
|
+
|
|
1030
|
+
#### โ 5.27 ยท Forward Pesan
|
|
1031
|
+
|
|
777
1032
|
```js
|
|
778
1033
|
async function sendForwardMessage(sock, jid, messageToForward) {
|
|
779
1034
|
await sock.sendMessage(jid, {
|
|
@@ -782,7 +1037,9 @@ async function sendForwardMessage(sock, jid, messageToForward) {
|
|
|
782
1037
|
}
|
|
783
1038
|
|
|
784
1039
|
```
|
|
785
|
-
|
|
1040
|
+
|
|
1041
|
+
#### โ 5.28 ยท Pin Pesan
|
|
1042
|
+
|
|
786
1043
|
```js
|
|
787
1044
|
async function pinMessageInChat(sock, jid, messageKey) {
|
|
788
1045
|
await sock.sendMessage(jid, {
|
|
@@ -794,7 +1051,9 @@ async function pinMessageInChat(sock, jid, messageKey) {
|
|
|
794
1051
|
}
|
|
795
1052
|
|
|
796
1053
|
```
|
|
797
|
-
|
|
1054
|
+
|
|
1055
|
+
#### โ 5.29 ยท Raw Message
|
|
1056
|
+
|
|
798
1057
|
```js
|
|
799
1058
|
async function sendRawProtoMessage(sock, jid) {
|
|
800
1059
|
await sock.sendMessage(jid, {
|
|
@@ -804,7 +1063,9 @@ async function sendRawProtoMessage(sock, jid) {
|
|
|
804
1063
|
}
|
|
805
1064
|
|
|
806
1065
|
```
|
|
807
|
-
|
|
1066
|
+
|
|
1067
|
+
#### โ 5.30 ยท Group Invite Link
|
|
1068
|
+
|
|
808
1069
|
```js
|
|
809
1070
|
async function sendGroupInvite(sock, jid) {
|
|
810
1071
|
const currentTime = Math.round(new Date().getTime() / 1000)
|
|
@@ -822,7 +1083,9 @@ async function sendGroupInvite(sock, jid) {
|
|
|
822
1083
|
}
|
|
823
1084
|
|
|
824
1085
|
```
|
|
825
|
-
|
|
1086
|
+
|
|
1087
|
+
#### โ 5.31 ยท Event dengan Reminder (fitur WA Januari 2026)
|
|
1088
|
+
|
|
826
1089
|
WhatsApp resmi menambahkan "Event Reminders" pada update grup chat 7 Januari 2026 โ pembuat event kini bisa menyetel pengingat otomatis untuk semua undangan sebelum acara dimulai. Cukup tambahkan `reminderOffsetSec` (dalam detik) ke object `event` yang sudah ada di elynn-baileys.
|
|
827
1090
|
```js
|
|
828
1091
|
async function sendEventWithReminder(sock, jid) {
|
|
@@ -840,8 +1103,11 @@ async function sendEventWithReminder(sock, jid) {
|
|
|
840
1103
|
}
|
|
841
1104
|
|
|
842
1105
|
```
|
|
1106
|
+
> [!NOTE]
|
|
843
1107
|
> Catatan: jika `reminderOffsetSec` diisi, elynn-baileys otomatis menyetel `hasReminder: true` pada `eventMessage`. Tanpa parameter ini, event tetap terkirim normal tanpa pengingat โ perilaku ini sepenuhnya backward-compatible dengan kode event lama Anda.
|
|
844
|
-
|
|
1108
|
+
|
|
1109
|
+
#### โ 5.32 ยท Text Sticker (fitur WA Januari 2026)
|
|
1110
|
+
|
|
845
1111
|
WhatsApp juga merilis "Text Stickers" pada update yang sama โ mengubah kata apa pun menjadi stiker hanya dengan mengetik di Sticker Search. Karena fitur aslinya murni rendering sisi klien (tanpa endpoint protokol khusus), elynn-baileys menyediakan generator `renderTextSticker()` bawaan yang merender teks menjadi stiker WebP secara lokal (memakai `canvas` + `sharp`/`@napi-rs/image`, tanpa API pihak ketiga) lalu langsung bisa dikirim seperti stiker biasa.
|
|
846
1112
|
```js
|
|
847
1113
|
import { renderTextSticker } from 'elynn-baileys'
|
|
@@ -859,11 +1125,14 @@ async function sendTextSticker(sock, jid) {
|
|
|
859
1125
|
}
|
|
860
1126
|
|
|
861
1127
|
```
|
|
1128
|
+
> [!NOTE]
|
|
862
1129
|
> Beda dengan plugin `attp`/`ttp` (Bab 11) yang memanggil API eksternal untuk efek teks bergerak/glow, `renderTextSticker` murni lokal โ tidak butuh koneksi internet maupun API key, cocok untuk stiker teks polos yang cepat dan privat.
|
|
863
1130
|
|
|
864
1131
|
---
|
|
865
1132
|
|
|
866
|
-
|
|
1133
|
+
|
|
1134
|
+
#### โ 5.33 ยท View-Once Text โ Teks Sekali Lihat (WA 2026)
|
|
1135
|
+
|
|
867
1136
|
|
|
868
1137
|
Pertengahan 2026, WhatsApp merilis kemampuan mengirim **teks murni** sebagai view-once: pesan hanya bisa dibaca satu kali, setelah itu otomatis dihapus. Penerima tidak bisa menyalin, meneruskan, atau merekam layarnya. Di Baileys, ini bekerja dengan membungkus `extendedTextMessage` ke dalam `viewOnceMessageV2` via `generateWAMessageFromContent`.
|
|
869
1138
|
|
|
@@ -894,11 +1163,14 @@ async function sendViewOnceText(sock, jid) {
|
|
|
894
1163
|
}
|
|
895
1164
|
```
|
|
896
1165
|
|
|
1166
|
+
> [!NOTE]
|
|
897
1167
|
> **Catatan:** Pastikan WA penerima sudah versi yang mendukung view-once teks (2025.8+). Pada versi lebih lama pesan akan tampil sebagai teks biasa.
|
|
898
1168
|
|
|
899
1169
|
---
|
|
900
1170
|
|
|
901
|
-
|
|
1171
|
+
|
|
1172
|
+
#### โ 5.34 ยท View-Once Voice Note โ Audio Sekali Dengar (WA 2026)
|
|
1173
|
+
|
|
902
1174
|
|
|
903
1175
|
Voice note (PTT) kini resmi bisa dikirim sebagai view-once: audio hanya bisa diputar satu kali lalu hilang. Cocok untuk kirim kode OTP audio atau pesan suara rahasia.
|
|
904
1176
|
|
|
@@ -923,16 +1195,23 @@ async function sendViewOnceVoice(sock, jid) {
|
|
|
923
1195
|
}
|
|
924
1196
|
```
|
|
925
1197
|
|
|
1198
|
+
> [!NOTE]
|
|
926
1199
|
> **Catatan:** `ptt: true` wajib ada โ tanpa itu audio dikirim sebagai musik biasa dan flag `viewOnce` tidak akan aktif dengan benar.
|
|
927
1200
|
|
|
928
1201
|
---
|
|
929
1202
|
|
|
930
|
-
|
|
1203
|
+
|
|
1204
|
+
#### โ 5.35 ยท Community Event โ RSVP & Virtual Meeting Call (WA 2026)
|
|
1205
|
+
|
|
931
1206
|
|
|
932
1207
|
WhatsApp 2026 memperluas fitur event di **Community** dengan dukungan RSVP tracking dan link virtual meeting langsung di dalam pesan event. Berbeda dari 5.31 (event grup biasa dengan reminder), fitur ini spesifik untuk:
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
1208
|
+
|
|
1209
|
+
| Kapabilitas | Penjelasan |
|
|
1210
|
+
|:---|:---|
|
|
1211
|
+
| **Virtual call** | Audio/video link tertanam langsung di pesan event |
|
|
1212
|
+
| **RSVP** | Bot mendeteksi siapa yang menerima/menolak via `messages.upsert` bertipe `eventResponseMessage` |
|
|
1213
|
+
| **extraGuestsAllowed** | Anggota grup bisa mengajak tamu di luar grup ke event |
|
|
1214
|
+
|
|
936
1215
|
|
|
937
1216
|
```js
|
|
938
1217
|
// Kirim event virtual meeting di community/grup
|
|
@@ -972,11 +1251,14 @@ sock.ev.on('messages.upsert', ({ messages }) => {
|
|
|
972
1251
|
})
|
|
973
1252
|
```
|
|
974
1253
|
|
|
1254
|
+
> [!NOTE]
|
|
975
1255
|
> **Perbedaan dari 5.31:** Section 5.31 fokus pada event grup biasa dengan `reminderOffsetSec` (pengingat waktu). Section ini fokus pada **virtual meeting** + **RSVP response handling** โ dua kemampuan berbeda yang hadir bersamaan di WA 2026.
|
|
976
1256
|
|
|
977
1257
|
---
|
|
978
1258
|
|
|
979
|
-
|
|
1259
|
+
|
|
1260
|
+
#### โ 5.36 ยท Group Message History Share (WA 2026)
|
|
1261
|
+
|
|
980
1262
|
|
|
981
1263
|
WhatsApp merilis fitur ini Februari 2026: saat member baru ditambahkan, admin/member bisa membagikan 25โ100 pesan terakhir ke member tersebut lewat prompt di UI client resmi. Fitur ini murni **client-side** (ditangani oleh aplikasi WA, bukan dikirim sebagai pesan protokol terpisah) dan field internalnya (`GroupHistoryBundleInfo`) ditandai `deprecated` di proto WA sendiri โ sehingga **belum ada endpoint resmi** untuk men-trigger ini lewat Baileys/elynn-baileys.
|
|
982
1264
|
|
|
@@ -1002,11 +1284,14 @@ async function shareRecentMessagesManually(sock, groupJid, newMemberJid, message
|
|
|
1002
1284
|
}
|
|
1003
1285
|
```
|
|
1004
1286
|
|
|
1287
|
+
> [!NOTE]
|
|
1005
1288
|
> **Catatan:** Belum ada method native (`groupToggleMessageHistory` dkk **tidak exist**) karena WA belum membuka protokol publik untuk fitur ini. Jangan gunakan nama method yang belum ada di lib โ cek dulu dengan `console.log(Object.keys(sock))` untuk daftar method yang benar-benar tersedia.
|
|
1006
1289
|
|
|
1007
1290
|
---
|
|
1008
1291
|
|
|
1009
|
-
|
|
1292
|
+
|
|
1293
|
+
#### โ 5.37 ยท Channel Poll โ Polling di Saluran/Channel (WA 2026)
|
|
1294
|
+
|
|
1010
1295
|
|
|
1011
1296
|
WhatsApp Channels kini mendukung pembuatan polling โ fitur interaksi satu arah berskala besar langsung di saluran. Gunakan `toAnnouncementGroup: true` agar poll terkirim ke channel/saluran (newsletter JID).
|
|
1012
1297
|
|
|
@@ -1053,7 +1338,9 @@ sock.ev.on('messages.upsert', ({ messages }) => {
|
|
|
1053
1338
|
|
|
1054
1339
|
---
|
|
1055
1340
|
|
|
1056
|
-
|
|
1341
|
+
|
|
1342
|
+
#### โ 5.38 ยท Channel Voice Note (WA 2026)
|
|
1343
|
+
|
|
1057
1344
|
|
|
1058
1345
|
WhatsApp Channels kini mendukung pengiriman voice note โ memungkinkan kreator saluran berinteraksi lebih personal dengan subscriber via audio langsung di channel.
|
|
1059
1346
|
|
|
@@ -1076,13 +1363,25 @@ async function sendChannelVoiceNote(sock, channelJid) {
|
|
|
1076
1363
|
}
|
|
1077
1364
|
```
|
|
1078
1365
|
|
|
1366
|
+
> [!NOTE]
|
|
1079
1367
|
> **Catatan:** Newsletter JID bisa didapat dari `sock.newsletterSubscribers(channelJid)`, `sock.newsletterFetchMessages(...)`, atau dari metadata channel yang sudah kamu follow saat event `messaging-history.set`.
|
|
1080
1368
|
|
|
1081
1369
|
---
|
|
1082
1370
|
|
|
1083
|
-
|
|
1371
|
+
|
|
1372
|
+
<br>
|
|
1373
|
+
|
|
1374
|
+
<div align="right"><sub>ยง SECTION 06</sub></div>
|
|
1375
|
+
|
|
1376
|
+
## 06 โ Rich Response Messages
|
|
1377
|
+
|
|
1378
|
+
<hr>
|
|
1379
|
+
|
|
1380
|
+
|
|
1084
1381
|
Fitur ini secara eksklusif memungkinkan Anda mengirim struktur data yang lebih kompleks menyerupai antarmuka dari bot AI resmi WhatsApp.
|
|
1085
|
-
|
|
1382
|
+
|
|
1383
|
+
#### โ 6.1 ยท Text Rich
|
|
1384
|
+
|
|
1086
1385
|
```js
|
|
1087
1386
|
import { prepareRichResponseMessage } from 'elynn-baileys'
|
|
1088
1387
|
|
|
@@ -1095,7 +1394,9 @@ async function sendRichText(sock, jid) {
|
|
|
1095
1394
|
}
|
|
1096
1395
|
|
|
1097
1396
|
```
|
|
1098
|
-
|
|
1397
|
+
|
|
1398
|
+
#### โ 6.2 ยท Code Block
|
|
1399
|
+
|
|
1099
1400
|
```js
|
|
1100
1401
|
import { prepareRichResponseMessage } from 'elynn-baileys'
|
|
1101
1402
|
|
|
@@ -1112,7 +1413,9 @@ async function sendRichCode(sock, jid) {
|
|
|
1112
1413
|
}
|
|
1113
1414
|
|
|
1114
1415
|
```
|
|
1115
|
-
|
|
1416
|
+
|
|
1417
|
+
#### โ 6.3 ยท Table
|
|
1418
|
+
|
|
1116
1419
|
```js
|
|
1117
1420
|
import { prepareRichResponseMessage } from 'elynn-baileys'
|
|
1118
1421
|
|
|
@@ -1136,7 +1439,9 @@ async function sendRichTable(sock, jid) {
|
|
|
1136
1439
|
}
|
|
1137
1440
|
|
|
1138
1441
|
```
|
|
1139
|
-
|
|
1442
|
+
|
|
1443
|
+
#### โ 6.4 ยท Inline Image
|
|
1444
|
+
|
|
1140
1445
|
```js
|
|
1141
1446
|
import { prepareRichResponseMessage } from 'elynn-baileys'
|
|
1142
1447
|
|
|
@@ -1152,7 +1457,9 @@ async function sendRichInlineImage(sock, jid) {
|
|
|
1152
1457
|
}
|
|
1153
1458
|
|
|
1154
1459
|
```
|
|
1155
|
-
|
|
1460
|
+
|
|
1461
|
+
#### โ 6.5 ยท Inline Link / Citation
|
|
1462
|
+
|
|
1156
1463
|
```js
|
|
1157
1464
|
import { prepareRichResponseMessage } from 'elynn-baileys'
|
|
1158
1465
|
|
|
@@ -1175,7 +1482,9 @@ async function sendRichCitation(sock, jid) {
|
|
|
1175
1482
|
}
|
|
1176
1483
|
|
|
1177
1484
|
```
|
|
1178
|
-
|
|
1485
|
+
|
|
1486
|
+
#### โ 6.6 ยท Rich Response Kombinasi
|
|
1487
|
+
|
|
1179
1488
|
```js
|
|
1180
1489
|
import { prepareRichResponseMessage } from 'elynn-baileys'
|
|
1181
1490
|
|
|
@@ -1200,7 +1509,17 @@ async function sendComplexRichResponse(sock, jid) {
|
|
|
1200
1509
|
}
|
|
1201
1510
|
|
|
1202
1511
|
```
|
|
1203
|
-
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
<br>
|
|
1515
|
+
|
|
1516
|
+
<div align="right"><sub>ยง SECTION 07</sub></div>
|
|
1517
|
+
|
|
1518
|
+
## 07 โ Group Management
|
|
1519
|
+
|
|
1520
|
+
<hr>
|
|
1521
|
+
|
|
1522
|
+
|
|
1204
1523
|
API yang ekstensif untuk memanipulasi dan mengelola data serta operasional grup secara menyeluruh.
|
|
1205
1524
|
```js
|
|
1206
1525
|
async function manageGroup(sock, jid) {
|
|
@@ -1240,7 +1559,17 @@ async function manageGroup(sock, jid) {
|
|
|
1240
1559
|
}
|
|
1241
1560
|
|
|
1242
1561
|
```
|
|
1243
|
-
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
<br>
|
|
1565
|
+
|
|
1566
|
+
<div align="right"><sub>ยง SECTION 08</sub></div>
|
|
1567
|
+
|
|
1568
|
+
## 08 โ Newsletter / Channel
|
|
1569
|
+
|
|
1570
|
+
<hr>
|
|
1571
|
+
|
|
1572
|
+
|
|
1244
1573
|
Fungsionalitas penuh untuk memoderasi saluran informasi siaran satu arah (Channel WhatsApp).
|
|
1245
1574
|
```js
|
|
1246
1575
|
async function manageNewsletter(sock) {
|
|
@@ -1273,7 +1602,17 @@ async function manageNewsletter(sock) {
|
|
|
1273
1602
|
}
|
|
1274
1603
|
|
|
1275
1604
|
```
|
|
1276
|
-
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
<br>
|
|
1608
|
+
|
|
1609
|
+
<div align="right"><sub>ยง SECTION 09</sub></div>
|
|
1610
|
+
|
|
1611
|
+
## 09 โ Privacy & Profile
|
|
1612
|
+
|
|
1613
|
+
<hr>
|
|
1614
|
+
|
|
1615
|
+
|
|
1277
1616
|
Pengaturan terkait profil pribadi pengguna dan konfigurasi privasi keamanan akun.
|
|
1278
1617
|
```js
|
|
1279
1618
|
async function updateProfileAndPrivacy(sock) {
|
|
@@ -1311,7 +1650,17 @@ async function updateProfileAndPrivacy(sock) {
|
|
|
1311
1650
|
}
|
|
1312
1651
|
|
|
1313
1652
|
```
|
|
1314
|
-
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
<br>
|
|
1656
|
+
|
|
1657
|
+
<div align="right"><sub>ยง SECTION 10</sub></div>
|
|
1658
|
+
|
|
1659
|
+
## 10 โ Handling Events
|
|
1660
|
+
|
|
1661
|
+
<hr>
|
|
1662
|
+
|
|
1663
|
+
|
|
1315
1664
|
Cara komprehensif untuk mendaftarkan pendengar acara ke seluruh aktivitas yang terjadi di jaringan.
|
|
1316
1665
|
```js
|
|
1317
1666
|
function setupEventHandlers(sock, saveCreds) {
|
|
@@ -1399,14 +1748,23 @@ function setupEventHandlers(sock, saveCreds) {
|
|
|
1399
1748
|
}
|
|
1400
1749
|
|
|
1401
1750
|
```
|
|
1402
|
-
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
<br>
|
|
1754
|
+
|
|
1755
|
+
<div align="right"><sub>ยง SECTION 11</sub></div>
|
|
1756
|
+
|
|
1757
|
+
## 11 โ Elynn Plugins : Brat & Bratvid
|
|
1758
|
+
|
|
1759
|
+
<hr>
|
|
1760
|
+
|
|
1403
1761
|
|
|
1404
1762
|
elynn-baileys menyertakan **30+ plugin bawaan** siap pakai mencakup AI, berita, downloader, search, stalk, info, dan maker. Plugin dapat diimport langsung atau diakses via objek `plugins`. Output tiap plugin mengikuti format `{ ok, type, result }` โ langsung bisa dipakai di `sendMessage`.
|
|
1405
1763
|
|
|
1406
|
-
| Key
|
|
1407
|
-
|
|
1408
|
-
| `brat`
|
|
1409
|
-
| `bratvid` | GET
|
|
1764
|
+
| Key | Method | Endpoint | Output | Parameter |
|
|
1765
|
+
|:---|:---:|:---|:---:|:---|
|
|
1766
|
+
| `brat` | `GET` | `/api/maker/brat` | Sticker ยท img | `text` `string` |
|
|
1767
|
+
| `bratvid` | `GET` | `/api/maker/bratvid` | Sticker ยท vid | `text` `string` |
|
|
1410
1768
|
|
|
1411
1769
|
```js
|
|
1412
1770
|
import { plugins, listPlugins } from 'elynn-baileys'
|
|
@@ -1464,9 +1822,19 @@ sock.ev.on('messages.upsert', async ({ messages }) => {
|
|
|
1464
1822
|
})
|
|
1465
1823
|
```
|
|
1466
1824
|
|
|
1825
|
+
> [!NOTE]
|
|
1467
1826
|
> Plugin Brat & Bratvid selalu mengembalikan `{ ok: boolean, type: 'sticker', result: string }` di mana `result` adalah URL gambar/video yang bisa langsung dipakai di `sendMessage`. Tidak ada API key tambahan yang diperlukan โ sudah ter-bundle di dalam library.
|
|
1468
1827
|
|
|
1469
|
-
|
|
1828
|
+
|
|
1829
|
+
<br>
|
|
1830
|
+
|
|
1831
|
+
<div align="right"><sub>ยง SECTION 12</sub></div>
|
|
1832
|
+
|
|
1833
|
+
## 12 โ Read Messages & Presence
|
|
1834
|
+
|
|
1835
|
+
<hr>
|
|
1836
|
+
|
|
1837
|
+
|
|
1470
1838
|
Kendali mutlak atas indikator pesan dibaca dan pelaporan presensi sesi secara waktu nyata.
|
|
1471
1839
|
```js
|
|
1472
1840
|
async function markMessagesAsRead(sock, kunciPesanTunggal, arrayKunciPesan) {
|
|
@@ -1480,7 +1848,17 @@ async function markMessagesAsRead(sock, kunciPesanTunggal, arrayKunciPesan) {
|
|
|
1480
1848
|
}
|
|
1481
1849
|
|
|
1482
1850
|
```
|
|
1483
|
-
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
<br>
|
|
1854
|
+
|
|
1855
|
+
<div align="right"><sub>ยง SECTION 13</sub></div>
|
|
1856
|
+
|
|
1857
|
+
## 13 โ Delete / Edit Pesan
|
|
1858
|
+
|
|
1859
|
+
<hr>
|
|
1860
|
+
|
|
1861
|
+
|
|
1484
1862
|
Mekanisme pasca-pengiriman yang memungkinkan Anda menarik kembali atau merevisi pesan yang telah telanjur terkirim ke server tujuan.
|
|
1485
1863
|
```js
|
|
1486
1864
|
async function modifySentMessages(sock, jid, kunciPesanTerkirim) {
|
|
@@ -1495,7 +1873,17 @@ async function modifySentMessages(sock, jid, kunciPesanTerkirim) {
|
|
|
1495
1873
|
}
|
|
1496
1874
|
|
|
1497
1875
|
```
|
|
1498
|
-
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
<br>
|
|
1879
|
+
|
|
1880
|
+
<div align="right"><sub>ยง SECTION 14</sub></div>
|
|
1881
|
+
|
|
1882
|
+
## 14 โ Message Options Tambahan
|
|
1883
|
+
|
|
1884
|
+
<hr>
|
|
1885
|
+
|
|
1886
|
+
|
|
1499
1887
|
Modifikasi perilaku tambahan untuk pesan agar sesuai dengan spesifikasi kasus penggunaan tingkat lanjut.
|
|
1500
1888
|
```js
|
|
1501
1889
|
import { prepareDisappearingMessageSettingContent } from 'elynn-baileys'
|
|
@@ -1529,7 +1917,17 @@ async function applyAdvancedMessageOptions(sock, jid, dataPesanKutipan) {
|
|
|
1529
1917
|
}
|
|
1530
1918
|
|
|
1531
1919
|
```
|
|
1532
|
-
|
|
1920
|
+
|
|
1921
|
+
|
|
1922
|
+
<br>
|
|
1923
|
+
|
|
1924
|
+
<div align="right"><sub>ยง SECTION 15</sub></div>
|
|
1925
|
+
|
|
1926
|
+
## 15 โ Browser Fingerprint (Kiwi, UC Browser, dll)
|
|
1927
|
+
|
|
1928
|
+
<hr>
|
|
1929
|
+
|
|
1930
|
+
|
|
1533
1931
|
Saat membuka koneksi dengan `makeWASocket`, properti `browser` menentukan perangkat & browser apa yang "terlihat" oleh WhatsApp sebagai linked device Anda. elynn-baileys menyediakan helper `Browsers` berisi preset fingerprint siap pakai โ termasuk Kiwi Browser dan UC Browser โ supaya Anda tidak perlu menulis array `[OS, Browser, Version]` secara manual.
|
|
1534
1932
|
```js
|
|
1535
1933
|
import { Browsers } from 'elynn-baileys'
|
|
@@ -1557,10 +1955,23 @@ const sock = makeWASocket({
|
|
|
1557
1955
|
})
|
|
1558
1956
|
|
|
1559
1957
|
```
|
|
1958
|
+
> [!NOTE]
|
|
1560
1959
|
> Catatan: fingerprint browser ini hanya memengaruhi bagaimana sesi tampil di daftar "Linked Devices" pada WhatsApp pengguna, dan tidak mengubah perilaku jaringan atau protokol koneksi itu sendiri.
|
|
1561
|
-
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
<br>
|
|
1963
|
+
|
|
1964
|
+
<div align="right"><sub>ยง SECTION 16</sub></div>
|
|
1965
|
+
|
|
1966
|
+
## 16 โ Telegram Bot (ElynnTelegraf)
|
|
1967
|
+
|
|
1968
|
+
<hr>
|
|
1969
|
+
|
|
1970
|
+
|
|
1562
1971
|
Selain WhatsApp, elynn-baileys juga membungkus engine Telegraf secara penuh dengan nama `ElynnTelegraf`. Artinya Anda bisa membangun bot Telegram lengkap โ command, inline keyboard, scenes/wizard, session, hingga webhook โ tanpa perlu menginstal package `telegraf` terpisah.
|
|
1563
|
-
|
|
1972
|
+
|
|
1973
|
+
#### โ 16.1 ยท Setup Dasar & Long Polling
|
|
1974
|
+
|
|
1564
1975
|
```js
|
|
1565
1976
|
import { ElynnTelegraf } from 'elynn-baileys'
|
|
1566
1977
|
|
|
@@ -1586,7 +1997,9 @@ process.once('SIGINT', () => bot.stop('SIGINT'))
|
|
|
1586
1997
|
process.once('SIGTERM', () => bot.stop('SIGTERM'))
|
|
1587
1998
|
|
|
1588
1999
|
```
|
|
1589
|
-
|
|
2000
|
+
|
|
2001
|
+
#### โ 16.2 ยท Setup via Webhook
|
|
2002
|
+
|
|
1590
2003
|
Cocok untuk deployment di platform serverless seperti Vercel atau VPS dengan domain HTTPS aktif.
|
|
1591
2004
|
```js
|
|
1592
2005
|
import { ElynnTelegraf } from 'elynn-baileys'
|
|
@@ -1604,7 +2017,9 @@ await bot.launch({
|
|
|
1604
2017
|
})
|
|
1605
2018
|
|
|
1606
2019
|
```
|
|
1607
|
-
|
|
2020
|
+
|
|
2021
|
+
#### โ 16.3 ยท Inline Keyboard & Reply Keyboard
|
|
2022
|
+
|
|
1608
2023
|
```js
|
|
1609
2024
|
import { ElynnTelegraf, TelegramMarkup as Markup } from 'elynn-baileys'
|
|
1610
2025
|
|
|
@@ -1628,7 +2043,9 @@ bot.action('menu_dl', (ctx) => {
|
|
|
1628
2043
|
})
|
|
1629
2044
|
|
|
1630
2045
|
```
|
|
1631
|
-
|
|
2046
|
+
|
|
2047
|
+
#### โ 16.4 ยท Session, Scenes & Wizard
|
|
2048
|
+
|
|
1632
2049
|
Untuk membangun percakapan bertahap (misalnya alur registrasi atau form multi-langkah), gunakan `telegramSession` bersama `TelegramScenes`.
|
|
1633
2050
|
```js
|
|
1634
2051
|
import { ElynnTelegraf, telegramSession, TelegramScenes } from 'elynn-baileys'
|
|
@@ -1661,7 +2078,9 @@ bot.command('daftar', (ctx) => ctx.scene.enter('register-wizard'))
|
|
|
1661
2078
|
bot.launch()
|
|
1662
2079
|
|
|
1663
2080
|
```
|
|
1664
|
-
|
|
2081
|
+
|
|
2082
|
+
#### โ 16.5 ยท Memanggil Elynn Plugins (Brat/Bratvid) dari Bot Telegram
|
|
2083
|
+
|
|
1665
2084
|
Karena `plugins` adalah objek universal yang sama dipakai di sisi WhatsApp, Anda bisa memanggil fungsi AI/downloader/tools yang identik di dalam bot Telegram.
|
|
1666
2085
|
```js
|
|
1667
2086
|
import { ElynnTelegraf, plugins } from 'elynn-baileys'
|
|
@@ -1688,7 +2107,9 @@ bot.command('tiktok', async (ctx) => {
|
|
|
1688
2107
|
bot.launch()
|
|
1689
2108
|
|
|
1690
2109
|
```
|
|
1691
|
-
|
|
2110
|
+
|
|
2111
|
+
#### โ 16.6 ยท Cek Koneksi Bot dengan `connectTelegram`
|
|
2112
|
+
|
|
1692
2113
|
Helper bawaan untuk memvalidasi token bot secara cepat tanpa harus memulai polling/webhook penuh โ cocok dipakai saat startup aplikasi untuk logging status.
|
|
1693
2114
|
```js
|
|
1694
2115
|
import { connectTelegram } from 'elynn-baileys'
|
|
@@ -1700,7 +2121,9 @@ if (botInfo) {
|
|
|
1700
2121
|
|
|
1701
2122
|
```
|
|
1702
2123
|
|
|
1703
|
-
|
|
2124
|
+
|
|
2125
|
+
#### โ 16.7 ยท Bot API 9.3โ9.4 โ sendMessageDraft, Profile Photo Bot, Button Style & Icon
|
|
2126
|
+
|
|
1704
2127
|
|
|
1705
2128
|
**sendMessageDraft** โ Pre-isi input box user dengan draft pesan. User bisa edit dan kirim sendiri.
|
|
1706
2129
|
|
|
@@ -1744,7 +2167,9 @@ bot.on('message', async (ctx) => {
|
|
|
1744
2167
|
})
|
|
1745
2168
|
```
|
|
1746
2169
|
|
|
1747
|
-
|
|
2170
|
+
|
|
2171
|
+
#### โ 16.8 ยท Bot API 9.5 โ Member Tags, Date-Time Entity
|
|
2172
|
+
|
|
1748
2173
|
|
|
1749
2174
|
**setChatMemberTag** โ Set tag custom untuk member grup (butuh hak `can_manage_tags`).
|
|
1750
2175
|
|
|
@@ -1767,7 +2192,9 @@ await ctx.telegram.setChatMemberTag(chatId, userId, '')
|
|
|
1767
2192
|
const audios = await bot.telegram.getUserProfileAudios(userId, { limit: 5 })
|
|
1768
2193
|
```
|
|
1769
2194
|
|
|
1770
|
-
|
|
2195
|
+
|
|
2196
|
+
#### โ 16.9 ยท Bot API 9.6 โ Managed Bots
|
|
2197
|
+
|
|
1771
2198
|
Bot kini bisa membuat, mengonfigurasi, dan mengelola bot lain secara programatik tanpa perlu ke @BotFather.
|
|
1772
2199
|
|
|
1773
2200
|
```js
|
|
@@ -1781,7 +2208,9 @@ await bot.telegram.replaceManagedBotToken(botUserId)
|
|
|
1781
2208
|
await bot.telegram.savePreparedKeyboardButton(button, userId)
|
|
1782
2209
|
```
|
|
1783
2210
|
|
|
1784
|
-
|
|
2211
|
+
|
|
2212
|
+
#### โ 16.10 ยท Bot API 10.0 โ Guest Mode
|
|
2213
|
+
|
|
1785
2214
|
Bot bisa menerima pesan dan membalas di chat yang **bukan** anggotanya โ tanpa perlu join grup.
|
|
1786
2215
|
|
|
1787
2216
|
```js
|
|
@@ -1794,7 +2223,9 @@ bot.on('guest_message', async (ctx) => {
|
|
|
1794
2223
|
})
|
|
1795
2224
|
```
|
|
1796
2225
|
|
|
1797
|
-
|
|
2226
|
+
|
|
2227
|
+
#### โ 16.11 ยท Bot API 10.0 โ Bot-to-Bot Communication
|
|
2228
|
+
|
|
1798
2229
|
Bot bisa kirim pesan ke bot lain via @username (keduanya harus opt-in via @BotFather).
|
|
1799
2230
|
|
|
1800
2231
|
```js
|
|
@@ -1802,7 +2233,9 @@ Bot bisa kirim pesan ke bot lain via @username (keduanya harus opt-in via @BotFa
|
|
|
1802
2233
|
await bot.telegram.sendMessage('@other_bot_username', 'Halo bot lain!')
|
|
1803
2234
|
```
|
|
1804
2235
|
|
|
1805
|
-
|
|
2236
|
+
|
|
2237
|
+
#### โ 16.12 ยท Bot API 10.0 โ Delete Reactions
|
|
2238
|
+
|
|
1806
2239
|
```js
|
|
1807
2240
|
// Hapus satu reaction spesifik pada pesan
|
|
1808
2241
|
bot.on('message', async (ctx) => {
|
|
@@ -1819,7 +2252,9 @@ await bot.telegram.deleteMessageReaction(chatId, messageId, { type: 'emoji', emo
|
|
|
1819
2252
|
await bot.telegram.deleteAllMessageReactions(chatId, messageId)
|
|
1820
2253
|
```
|
|
1821
2254
|
|
|
1822
|
-
|
|
2255
|
+
|
|
2256
|
+
#### โ 16.13 ยท Bot API 10.0 โ Live Photo
|
|
2257
|
+
|
|
1823
2258
|
Bot bisa mengirim foto dengan video pendek (seperti iPhone Live Photos).
|
|
1824
2259
|
|
|
1825
2260
|
```js
|
|
@@ -1832,7 +2267,9 @@ bot.on('message', async (ctx) => {
|
|
|
1832
2267
|
await bot.telegram.sendLivePhoto(chatId, { source: './photo.heic' }, { caption: 'Keren!' })
|
|
1833
2268
|
```
|
|
1834
2269
|
|
|
1835
|
-
|
|
2270
|
+
|
|
2271
|
+
#### โ 16.14 ยท Bot API 10.0 โ Managed Bot Access Settings
|
|
2272
|
+
|
|
1836
2273
|
```js
|
|
1837
2274
|
// Cek siapa yang bisa kirim pesan ke managed bot
|
|
1838
2275
|
const settings = await bot.telegram.getManagedBotAccessSettings(botUserId)
|
|
@@ -1845,7 +2282,9 @@ await bot.telegram.setManagedBotAccessSettings(botUserId, {
|
|
|
1845
2282
|
})
|
|
1846
2283
|
```
|
|
1847
2284
|
|
|
1848
|
-
|
|
2285
|
+
|
|
2286
|
+
#### โ 16.15 ยท Bot API 10.0 โ Get User Personal Chat Messages
|
|
2287
|
+
|
|
1849
2288
|
```js
|
|
1850
2289
|
// Ambil pesan dari personal chat user (yang di-pin di profil mereka)
|
|
1851
2290
|
const messages = await bot.telegram.getUserPersonalChatMessages(userId, {
|
|
@@ -1854,7 +2293,9 @@ const messages = await bot.telegram.getUserPersonalChatMessages(userId, {
|
|
|
1854
2293
|
})
|
|
1855
2294
|
```
|
|
1856
2295
|
|
|
1857
|
-
|
|
2296
|
+
|
|
2297
|
+
#### โ 16.16 ยท Bot API 10.1 โ Join Request Queries
|
|
2298
|
+
|
|
1858
2299
|
Bot bisa merespons join request secara interaktif, termasuk membuka Mini App.
|
|
1859
2300
|
|
|
1860
2301
|
```js
|
|
@@ -1869,7 +2310,9 @@ bot.on('chat_join_request', async (ctx) => {
|
|
|
1869
2310
|
})
|
|
1870
2311
|
```
|
|
1871
2312
|
|
|
1872
|
-
|
|
2313
|
+
|
|
2314
|
+
#### โ 16.17 ยท Bot API 10.1 โ Rich Messages
|
|
2315
|
+
|
|
1873
2316
|
Fitur paling besar: bot bisa mengirim pesan super terstruktur โ heading, tabel, list, blockquote, slideshow, math, dan lain-lain. Cocok untuk bot AI yang perlu format output kaya.
|
|
1874
2317
|
|
|
1875
2318
|
```js
|
|
@@ -1910,10 +2353,21 @@ bot.on('message', async (ctx) => {
|
|
|
1910
2353
|
|
|
1911
2354
|
---
|
|
1912
2355
|
|
|
1913
|
-
|
|
2356
|
+
|
|
2357
|
+
<br>
|
|
2358
|
+
|
|
2359
|
+
<div align="right"><sub>ยง SECTION 17</sub></div>
|
|
2360
|
+
|
|
2361
|
+
## 17 โ Discord Bot (ElynnDiscord)
|
|
2362
|
+
|
|
2363
|
+
<hr>
|
|
2364
|
+
|
|
2365
|
+
|
|
1914
2366
|
Selain WhatsApp dan Telegram, elynn-baileys kini juga membungkus **Oceanic.js** secara penuh dengan nama `ElynnDiscord`. Artinya Anda bisa membangun bot Discord lengkap โ menangani pesan, slash commands, embeds, file upload, hingga sharding โ tanpa perlu menginstal package `oceanic.js` terpisah.
|
|
1915
2367
|
|
|
1916
|
-
|
|
2368
|
+
|
|
2369
|
+
#### โ 17.1 ยท Setup Dasar & Login Bot
|
|
2370
|
+
|
|
1917
2371
|
```js
|
|
1918
2372
|
import { ElynnDiscord } from 'elynn-baileys'
|
|
1919
2373
|
|
|
@@ -1931,9 +2385,12 @@ client.on('ready', () => {
|
|
|
1931
2385
|
client.connect()
|
|
1932
2386
|
```
|
|
1933
2387
|
|
|
2388
|
+
> [!NOTE]
|
|
1934
2389
|
> **Catatan:** `MESSAGE_CONTENT` adalah *privileged intent*. Aktifkan di [Discord Developer Portal](https://discord.com/developers/applications) โ Bot โ Privileged Gateway Intents.
|
|
1935
2390
|
|
|
1936
|
-
|
|
2391
|
+
|
|
2392
|
+
#### โ 17.2 ยท Menangani Event & Pesan
|
|
2393
|
+
|
|
1937
2394
|
```js
|
|
1938
2395
|
import { ElynnDiscord } from 'elynn-baileys'
|
|
1939
2396
|
|
|
@@ -1977,7 +2434,9 @@ client.on('error', (err) => {
|
|
|
1977
2434
|
client.connect()
|
|
1978
2435
|
```
|
|
1979
2436
|
|
|
1980
|
-
|
|
2437
|
+
|
|
2438
|
+
#### โ 17.3 ยท Slash Commands (Application Commands)
|
|
2439
|
+
|
|
1981
2440
|
Oceanic mendukung pendaftaran dan penanganan Application Commands (Slash Commands) secara native.
|
|
1982
2441
|
```js
|
|
1983
2442
|
import { ElynnDiscord } from 'elynn-baileys'
|
|
@@ -2034,7 +2493,9 @@ client.on('interactionCreate', async (interaction) => {
|
|
|
2034
2493
|
client.connect()
|
|
2035
2494
|
```
|
|
2036
2495
|
|
|
2037
|
-
|
|
2496
|
+
|
|
2497
|
+
#### โ 17.4 ยท Embed & File Upload
|
|
2498
|
+
|
|
2038
2499
|
```js
|
|
2039
2500
|
import { ElynnDiscord } from 'elynn-baileys'
|
|
2040
2501
|
import { readFileSync } from 'fs'
|
|
@@ -2091,7 +2552,9 @@ client.on('messageCreate', async (msg) => {
|
|
|
2091
2552
|
client.connect()
|
|
2092
2553
|
```
|
|
2093
2554
|
|
|
2094
|
-
|
|
2555
|
+
|
|
2556
|
+
#### โ 17.5 ยท Sharding dengan ShardManager
|
|
2557
|
+
|
|
2095
2558
|
Untuk bot berskala besar (1000+ guild), gunakan `ShardManager` bawaan Oceanic untuk mendistribusikan koneksi gateway.
|
|
2096
2559
|
```js
|
|
2097
2560
|
import { ElynnDiscord } from 'elynn-baileys'
|
|
@@ -2129,7 +2592,9 @@ client.on('messageCreate', async (msg) => {
|
|
|
2129
2592
|
client.connect()
|
|
2130
2593
|
```
|
|
2131
2594
|
|
|
2132
|
-
|
|
2595
|
+
|
|
2596
|
+
#### โ 17.6 ยท Cek Koneksi Bot dengan `connectDiscord`
|
|
2597
|
+
|
|
2133
2598
|
Helper bawaan untuk memvalidasi token bot Discord secara cepat tanpa harus memulai koneksi gateway penuh โ cocok dipakai saat startup aplikasi untuk logging status atau health-check deployment.
|
|
2134
2599
|
```js
|
|
2135
2600
|
import { connectDiscord } from 'elynn-baileys'
|
|
@@ -2178,13 +2643,24 @@ Infrastruktur *Privileged Gateway Intents* diatur ulang untuk sinkronisasi metad
|
|
|
2178
2643
|
|
|
2179
2644
|
* **Moderation Metadata**: Elynn Discord kini dapat mengatur transfer struktur *key-value* khusus kepada *server backend* eksternal. Informasi hukuman, limitasi akses, dan metadata pembatasan akun disinkronkan secara *real-time* menghindari latensi eskalasi konflik di Discord.
|
|
2180
2645
|
* **Peninjauan Ambang Batas Pengguna**: Kalkulasi kepemilikan *Privileged Intents* (`MESSAGE_CONTENT`, `GUILD_MEMBERS`, dll) tidak lagi dihitung berdasarkan agregasi server. Discord mengunci ambang batas pada jangkauan kumulatif 10.000 pengguna individu. Seluruh *platform* aplikasi diwajibkan untuk memvalidasi alur izin *intent* tersebut secara manual per putaran verifikasi tahunan di dalam dasbor Developer Portal.
|
|
2646
|
+
```
|
|
2181
2647
|
---
|
|
2182
2648
|
|
|
2183
|
-
|
|
2649
|
+
|
|
2650
|
+
<br>
|
|
2651
|
+
|
|
2652
|
+
<div align="right"><sub>ยง SECTION 18</sub></div>
|
|
2653
|
+
|
|
2654
|
+
## 18 โ testMessage : Tes Semua Jenis Pesan
|
|
2655
|
+
|
|
2656
|
+
<hr>
|
|
2657
|
+
|
|
2184
2658
|
|
|
2185
2659
|
`testMessage` adalah fungsi utilitas eksklusif elynn-baileys untuk **menguji pengiriman semua jenis pesan Baileys** secara cepat โ bisa dipakai di grup maupun private chat, tanpa perlu set target/total kirim. Cukup reply atau panggil di handler bot mana pun.
|
|
2186
2660
|
|
|
2187
|
-
|
|
2661
|
+
|
|
2662
|
+
#### โ Cara import & penggunaan
|
|
2663
|
+
|
|
2188
2664
|
|
|
2189
2665
|
```js
|
|
2190
2666
|
import { testMessage } from 'elynn-baileys'
|
|
@@ -2208,7 +2684,9 @@ sock.ev.on('messages.upsert', async ({ messages }) => {
|
|
|
2208
2684
|
})
|
|
2209
2685
|
```
|
|
2210
2686
|
|
|
2211
|
-
|
|
2687
|
+
|
|
2688
|
+
#### โ Signature lengkap
|
|
2689
|
+
|
|
2212
2690
|
|
|
2213
2691
|
```js
|
|
2214
2692
|
/**
|
|
@@ -2221,44 +2699,60 @@ sock.ev.on('messages.upsert', async ({ messages }) => {
|
|
|
2221
2699
|
await testMessage(sock, jid, { quoted: msg, delay: 700 })
|
|
2222
2700
|
```
|
|
2223
2701
|
|
|
2224
|
-
### Yang diuji (16 jenis pesan)
|
|
2225
|
-
|
|
2226
|
-
| # | Jenis Pesan | Keterangan |
|
|
2227
|
-
|---|-----------------------|---------------------------------------------------|
|
|
2228
|
-
| 1 | Text biasa | Plain text message |
|
|
2229
|
-
| 2 | Text + Mention | Mention member (group: semua, private: self) |
|
|
2230
|
-
| 3 | Image | Gambar dari URL + caption |
|
|
2231
|
-
| 4 | Video | Video dari URL + caption |
|
|
2232
|
-
| 5 | Audio | Audio musik (bukan PTT) |
|
|
2233
|
-
| 6 | PTT Voice Note | Voice note dengan codec opus |
|
|
2234
|
-
| 7 | Document | File PDF dengan filename |
|
|
2235
|
-
| 8 | Sticker | Stiker dari URL gambar |
|
|
2236
|
-
| 9 | Location | Koordinat lokasi |
|
|
2237
|
-
|10 | Contact / vCard | Kartu kontak WA |
|
|
2238
|
-
|11 | Reaction | Emoji reaction (jika `quoted` disediakan) |
|
|
2239
|
-
|12 | Edit Message | Kirim pesan โ tunggu โ edit isinya |
|
|
2240
|
-
|13 | Delete Message | Kirim pesan โ tunggu โ hapus |
|
|
2241
|
-
|14 | Forward Simulation | Simulasi forward (tanpa pesan asli) |
|
|
2242
|
-
|15 | Buttons (Legacy) | Tombol interaktif legacy |
|
|
2243
|
-
|16 | List Message | Pesan daftar pilihan (list) |
|
|
2244
2702
|
|
|
2703
|
+
#### โ Yang diuji (16 jenis pesan)
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
| # | Jenis Pesan | Keterangan |
|
|
2707
|
+
|:---:|:---|:---|
|
|
2708
|
+
| `01` | Text biasa | Plain text message |
|
|
2709
|
+
| `02` | Text + Mention | Mention member โ group: semua, private: self |
|
|
2710
|
+
| `03` | Image | Gambar dari URL + caption |
|
|
2711
|
+
| `04` | Video | Video dari URL + caption |
|
|
2712
|
+
| `05` | Audio | Audio musik, bukan PTT |
|
|
2713
|
+
| `06` | PTT Voice Note | Voice note dengan codec opus |
|
|
2714
|
+
| `07` | Document | File PDF dengan filename |
|
|
2715
|
+
| `08` | Sticker | Stiker dari URL gambar |
|
|
2716
|
+
| `09` | Location | Koordinat lokasi |
|
|
2717
|
+
| `10` | Contact / vCard | Kartu kontak WA |
|
|
2718
|
+
| `11` | Reaction | Emoji reaction, jika `quoted` disediakan |
|
|
2719
|
+
| `12` | Edit Message | Kirim pesan โ tunggu โ edit isinya |
|
|
2720
|
+
| `13` | Delete Message | Kirim pesan โ tunggu โ hapus |
|
|
2721
|
+
| `14` | Forward Simulation | Simulasi forward tanpa pesan asli |
|
|
2722
|
+
| `15` | Buttons (Legacy) | Tombol interaktif legacy |
|
|
2723
|
+
| `16` | List Message | Pesan daftar pilihan (list) |
|
|
2724
|
+
|
|
2725
|
+
> [!NOTE]
|
|
2245
2726
|
> Semua tes berjalan **async berurutan** dengan jeda antar pesan. Bekerja di grup maupun private chat tanpa konfigurasi tambahan.
|
|
2246
2727
|
|
|
2247
2728
|
---
|
|
2248
2729
|
|
|
2249
|
-
|
|
2730
|
+
|
|
2731
|
+
<br>
|
|
2732
|
+
|
|
2733
|
+
<div align="right"><sub>ยง SECTION 19</sub></div>
|
|
2734
|
+
|
|
2735
|
+
## 19 โ sessionGuard : Proteksi Session dari Pencurian
|
|
2736
|
+
|
|
2737
|
+
<hr>
|
|
2738
|
+
|
|
2250
2739
|
|
|
2251
2740
|
`sessionGuard` adalah fitur keamanan opsional yang **mengunci session WhatsApp ke IP server pertama kali bot dijalankan**. Jika session dicuri dan dicoba dijalankan di server lain, bot akan otomatis diblokir dan dihentikan paksa.
|
|
2252
2741
|
|
|
2742
|
+
> [!NOTE]
|
|
2253
2743
|
> **Tidak dipanggil = tidak ada proteksi** (default behaviour tetap normal)
|
|
2254
2744
|
|
|
2255
|
-
|
|
2745
|
+
|
|
2746
|
+
#### โ Cara Import
|
|
2747
|
+
|
|
2256
2748
|
|
|
2257
2749
|
```js
|
|
2258
2750
|
import { sessionGuard, isGuardActive, resetGuard } from 'elynn-baileys'
|
|
2259
2751
|
```
|
|
2260
2752
|
|
|
2261
|
-
|
|
2753
|
+
|
|
2754
|
+
#### โ Penggunaan Dasar
|
|
2755
|
+
|
|
2262
2756
|
|
|
2263
2757
|
Panggil `sessionGuard()` **sebelum** `makeWASocket`:
|
|
2264
2758
|
|
|
@@ -2275,7 +2769,9 @@ const sock = makeWASocket({ auth: state })
|
|
|
2275
2769
|
sock.ev.on('creds.update', saveCreds)
|
|
2276
2770
|
```
|
|
2277
2771
|
|
|
2278
|
-
|
|
2772
|
+
|
|
2773
|
+
#### โ Opsi Lengkap
|
|
2774
|
+
|
|
2279
2775
|
|
|
2280
2776
|
```js
|
|
2281
2777
|
await sessionGuard({
|
|
@@ -2290,21 +2786,26 @@ await sessionGuard({
|
|
|
2290
2786
|
```
|
|
2291
2787
|
|
|
2292
2788
|
| Opsi | Type | Default | Keterangan |
|
|
2293
|
-
|
|
2789
|
+
|:---|:---:|:---|:---|
|
|
2294
2790
|
| `sessionFile` | `string` | `'./auth_state.json'` | Path ke file session WA |
|
|
2295
2791
|
| `silent` | `boolean` | `false` | Sembunyikan log info guard |
|
|
2296
2792
|
| `onBlock` | `function` | `null` | Callback dipanggil sebelum `process.exit(1)` saat IP mismatch |
|
|
2297
2793
|
|
|
2298
|
-
|
|
2794
|
+
|
|
2795
|
+
#### โ Cara Kerja
|
|
2796
|
+
|
|
2299
2797
|
|
|
2300
2798
|
1. **Pertama kali dijalankan** โ Guard ambil IP publik server, hash dengan SHA-256, simpan ke file `.elynn_guard` di folder yang sama dengan session.
|
|
2301
2799
|
2. **Jalankan berikutnya** โ Guard bandingkan IP server sekarang dengan hash yang tersimpan.
|
|
2302
2800
|
3. **IP cocok** โ Bot lanjut normal โ
|
|
2303
2801
|
4. **IP beda** โ Bot cetak pesan error dan `process.exit(1)` โ
|
|
2304
2802
|
|
|
2803
|
+
> [!NOTE]
|
|
2305
2804
|
> IP disimpan dalam bentuk **hash SHA-256**, bukan plaintext โ aman meski file `.elynn_guard` bocor.
|
|
2306
2805
|
|
|
2307
|
-
|
|
2806
|
+
|
|
2807
|
+
#### โ Cek Status Guard
|
|
2808
|
+
|
|
2308
2809
|
|
|
2309
2810
|
```js
|
|
2310
2811
|
import { isGuardActive } from 'elynn-baileys'
|
|
@@ -2314,7 +2815,9 @@ if (isGuardActive()) {
|
|
|
2314
2815
|
}
|
|
2315
2816
|
```
|
|
2316
2817
|
|
|
2317
|
-
|
|
2818
|
+
|
|
2819
|
+
#### โ Reset Guard (Pindah Server)
|
|
2820
|
+
|
|
2318
2821
|
|
|
2319
2822
|
Jika lo pindah server secara sah, hapus guard lama dulu sebelum jalankan bot:
|
|
2320
2823
|
|
|
@@ -2327,26 +2830,28 @@ await resetGuard('./auth_state/creds.json')
|
|
|
2327
2830
|
|
|
2328
2831
|
Atau hapus manual file `.elynn_guard` dari folder session lo, lalu jalankan bot kembali.
|
|
2329
2832
|
|
|
2330
|
-
|
|
2833
|
+
|
|
2834
|
+
#### โ Contoh Output Log
|
|
2835
|
+
|
|
2331
2836
|
|
|
2332
2837
|
**Pertama kali (registrasi):**
|
|
2333
2838
|
```
|
|
2334
2839
|
[ โฆ ] ELYNN GUARD: Mengaktifkan proteksi session...
|
|
2335
2840
|
[ โฆ ] ELYNN GUARD: IP Server: 103.xx.xx.xx
|
|
2336
|
-
[ โฆ ] ELYNN GUARD: Session terdaftar di server ini
|
|
2841
|
+
[ โฆ ] ELYNN GUARD: Session terdaftar di server ini โ
|
|
2337
2842
|
```
|
|
2338
2843
|
|
|
2339
2844
|
**Jalankan normal (IP cocok):**
|
|
2340
2845
|
```
|
|
2341
2846
|
[ โฆ ] ELYNN GUARD: Mengaktifkan proteksi session...
|
|
2342
2847
|
[ โฆ ] ELYNN GUARD: IP Server: 103.xx.xx.xx
|
|
2343
|
-
[ โฆ ] ELYNN GUARD: IP cocok, session aman
|
|
2848
|
+
[ โฆ ] ELYNN GUARD: IP cocok, session aman โ
|
|
2344
2849
|
```
|
|
2345
2850
|
|
|
2346
2851
|
**Session dicuri (IP beda):**
|
|
2347
2852
|
```
|
|
2348
2853
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
2349
|
-
โ
|
|
2854
|
+
โ [ ! ] ELYNN GUARD โ SESSION BLOCK
|
|
2350
2855
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
2351
2856
|
Session ini tidak bisa digunakan
|
|
2352
2857
|
di server ini karena IP berbeda.
|
|
@@ -2360,13 +2865,54 @@ Atau hapus manual file `.elynn_guard` dari folder session lo, lalu jalankan bot
|
|
|
2360
2865
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
2361
2866
|
```
|
|
2362
2867
|
|
|
2868
|
+
> [!NOTE]
|
|
2363
2869
|
> **Catatan:** Fitur ini tidak 100% foolproof jika server menggunakan IP dinamis (berubah setiap restart). Untuk VPS dengan IP statis, perlindungan ini sangat efektif.
|
|
2364
2870
|
|
|
2365
2871
|
---
|
|
2366
|
-
|
|
2872
|
+
|
|
2873
|
+
<br>
|
|
2874
|
+
|
|
2875
|
+
<img src="https://capsule-render.vercel.app/api?type=waving&color=0:0a0a12,50:2b1a2e,100:0a0a12&height=130§ion=footer" width="100%"/>
|
|
2876
|
+
|
|
2877
|
+
<div align="center">
|
|
2878
|
+
|
|
2879
|
+
<hr>
|
|
2880
|
+
|
|
2881
|
+
### โฆ Credits & License
|
|
2882
|
+
|
|
2883
|
+
</div>
|
|
2884
|
+
|
|
2367
2885
|
Elynn Baileys dibangun di atas pondasi [Baileys](https://github.com/WhiskeySockets/Baileys) oleh Rajeh Taher/WhiskeySockets, dan diperluas oleh **Elynn** dengan integrasi Telegram Bot, plugin Brat/Bratvid bawaan, dukungan protokol WhatsApp 2026, serta berbagai peningkatan stabilitas.
|
|
2368
2886
|
|
|
2369
|
-
|
|
2370
|
-
|
|
2887
|
+
<table width="100%">
|
|
2888
|
+
<tr>
|
|
2889
|
+
<td align="center" width="50%">
|
|
2890
|
+
|
|
2891
|
+
**Lisensi**
|
|
2892
|
+
|
|
2893
|
+
Dirilis di bawah lisensi `MIT`
|
|
2894
|
+
Bebas dipakai, dimodifikasi, didistribusikan ulang
|
|
2895
|
+
|
|
2896
|
+
</td>
|
|
2897
|
+
<td align="center" width="50%">
|
|
2898
|
+
|
|
2899
|
+
**Copyright**
|
|
2900
|
+
|
|
2901
|
+
ยฉ 2025 Rajeh Taher / WhiskeySockets
|
|
2902
|
+
ยฉ 2026 **Elynn**
|
|
2903
|
+
|
|
2904
|
+
</td>
|
|
2905
|
+
</tr>
|
|
2906
|
+
</table>
|
|
2907
|
+
|
|
2908
|
+
<br>
|
|
2909
|
+
|
|
2910
|
+
<div align="center">
|
|
2911
|
+
|
|
2912
|
+
<sub>โฆ Dibuat dengan presisi oleh **Elynn** โฆ</sub>
|
|
2913
|
+
|
|
2914
|
+
<br><br>
|
|
2915
|
+
|
|
2916
|
+
<a href="#elynn-baileys"><img src="https://img.shields.io/badge/โ_KEMBALI_KE_ATAS-0a0a12?style=for-the-badge&labelColor=0a0a12&color=e8b76a" /></a>
|
|
2371
2917
|
|
|
2372
|
-
|
|
2918
|
+
</div>
|