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.
Files changed (2) hide show
  1. package/README.md +794 -248
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,115 +1,266 @@
1
- <img src="https://i.ibb.co/xq4NzXq0/elynn28760176.png" width="100%" style="border-radius:12px" />
2
- # ๐Ÿš€ elynn-baileys
3
- Elynn Baileys adalah sebuah library WhatsApp Web API yang sangat kuat, stabil, dan telah ditingkatkan fungsionalitasnya โ€” kini juga dilengkapi engine Telegram Bot (`ElynnTelegraf`) **dan** Discord Client (`ElynnDiscord`) terintegrasi penuh dalam satu package yang sama. Library ini merupakan versi *enhanced* yang mendukung penuh protokol WhatsApp 2026 (View-Once Text, View-Once Voice Note, Community Events, Group Message History, Channel Polling, dll), dilengkapi plugin Brat/Bratvid bawaan, serta fungsi eksklusif `testMessage` untuk pengujian semua jenis pesan langsung di chat atau grup manapun. Dibangun secara khusus untuk lingkungan Node.js dengan format ECMAScript Modules (ESM).
4
- ## ๐Ÿ“‘ Table of Contents
5
-
6
- - [1. ๐Ÿ“ฆ Installation](#1--installation)
7
- - [2. โšก Quick Start](#2--quick-start)
8
- - [3. ๐Ÿ” Auth State](#3--auth-state)
9
- - [3.1 Multi File Auth State](#31-multi-file-auth-state)
10
- - [3.2 Single File Auth State](#32-single-file-auth-state)
11
- - [3.3 SQLite Auth State](#33-sqlite-auth-state)
12
- - [4. ๐Ÿ’พ makeInMemoryStore](#4--makeinmemorystore)
13
- - [5. ๐Ÿ’ฌ Sending Messages](#5--sending-messages)
14
- - [5.1 Text Biasa](#51-text-biasa)
15
- - [5.2 Text dengan Mention User](#52-text-dengan-mention-user)
16
- - [5.3 Mention All](#53-mention-all)
17
- - [5.4 Reply / Quote Message](#54-reply--quote-message)
18
- - [5.5 Reaction](#55-reaction)
19
- - [5.6 Image](#56-image)
20
- - [5.7 Video](#57-video)
21
- - [5.8 Audio](#58-audio)
22
- - [5.9 Document](#59-document)
23
- - [5.10 Sticker](#510-sticker)
24
- - [5.11 Sticker Pack](#511-sticker-pack)
25
- - [5.12 Contact / vCard](#512-contact--vcard)
26
- - [5.13 Location](#513-location)
27
- - [5.14 Live Location](#514-live-location)
28
- - [5.15 Poll](#515-poll)
29
- - [5.16 Album](#516-album)
30
- - [5.17 Interactive โ€” Buttons (Native Flow)](#517-interactive--buttons-native-flow)
31
- - [5.18 Interactive โ€” List](#518-interactive--list)
32
- - [5.19 Interactive โ€” Image Header](#519-interactive--image-header)
33
- - [5.20 Interactive sebagai Template](#520-interactive-sebagai-template)
34
- - [5.21 Hydrated Template Button](#521-hydrated-template-button)
35
- - [5.22 View Once](#522-view-once)
36
- - [5.23 Ephemeral](#523-ephemeral)
37
- - [5.24 Spoiler](#524-spoiler)
38
- - [5.25 Group Status](#525-group-status)
39
- - [5.26 External Ad Reply](#526-external-ad-reply)
40
- - [5.27 Forward Pesan](#527-forward-pesan)
41
- - [5.28 Pin Pesan](#528-pin-pesan)
42
- - [5.29 Raw Message](#529-raw-message)
43
- - [5.30 Group Invite Link](#530-group-invite-link)
44
- - [5.31 Event dengan Reminder (fitur WA Januari 2026)](#531-event-dengan-reminder-fitur-wa-januari-2026)
45
- - [5.32 Text Sticker (fitur WA Januari 2026)](#532-text-sticker-fitur-wa-januari-2026)
46
- - [5.33 View-Once Text โ€” Teks Sekali Lihat (WA 2026)](#533-view-once-text--teks-sekali-lihat-wa-2026)
47
- - [5.34 View-Once Voice Note โ€” Audio Sekali Dengar (WA 2026)](#534-view-once-voice-note--audio-sekali-dengar-wa-2026)
48
- - [5.35 Community Event โ€” RSVP & Virtual Meeting Call (WA 2026)](#535-community-event--rsvp--virtual-meeting-call-wa-2026)
49
- - [5.36 Group Message History Share (WA 2026)](#536-group-message-history-share-wa-2026)
50
- - [5.37 Channel Poll โ€” Polling di Saluran/Channel (WA 2026)](#537-channel-poll--polling-di-saluranchannel-wa-2026)
51
- - [5.38 Channel Voice Note (WA 2026)](#538-channel-voice-note-wa-2026)
52
- - [6. ๐Ÿค– Rich Response Messages](#6--rich-response-messages)
53
- - [6.1 Text Rich](#61-text-rich)
54
- - [6.2 Code Block](#62-code-block)
55
- - [6.3 Table](#63-table)
56
- - [6.4 Inline Image](#64-inline-image)
57
- - [6.5 Inline Link / Citation](#65-inline-link--citation)
58
- - [6.6 Rich Response Kombinasi](#66-rich-response-kombinasi)
59
- - [7. ๐Ÿ‘ฅ Group Management](#7--group-management)
60
- - [8. ๐Ÿ“ข Newsletter / Channel](#8--newsletter--channel)
61
- - [9. ๐Ÿ›ก๏ธ Privacy & Profile](#9--privacy--profile)
62
- - [10. ๐Ÿ“ก Handling Events](#10--handling-events)
63
- - [11. ๐Ÿงฉ Elynn Plugins โ€” Brat & Bratvid](#11--elynn-plugins--brat--bratvid)
64
- - [12. ๐Ÿ‘€ Read Messages & Presence](#12--read-messages--presence)
65
- - [13. ๐Ÿ—‘๏ธ Delete / Edit Pesan](#13--delete--edit-pesan)
66
- - [14. โš™๏ธ Message Options Tambahan](#14--message-options-tambahan)
67
- - [15. ๐ŸŒ Browser Fingerprint (Kiwi, UC Browser, dll)](#15--browser-fingerprint-kiwi-uc-browser-dll)
68
- - [16. ๐Ÿค– Telegram Bot (ElynnTelegraf)](#16--telegram-bot-elynntelegraf)
69
- - [16.1 Setup Dasar & Long Polling](#161-setup-dasar--long-polling)
70
- - [16.2 Setup via Webhook](#162-setup-via-webhook)
71
- - [16.3 Inline Keyboard & Reply Keyboard](#163-inline-keyboard--reply-keyboard)
72
- - [16.4 Session, Scenes & Wizard](#164-session-scenes--wizard)
73
- - [16.5 Memanggil Elynn Plugins (Brat/Bratvid) dari Bot Telegram](#165-memanggil-elynn-plugins-bratbratvid-dari-bot-telegram)
74
- - [16.6 Cek Koneksi Bot dengan connectTelegram](#166-cek-koneksi-bot-dengan-connecttelegram)
75
- - [16.7 Bot API 9.3โ€“9.4 โ€“ sendMessageDraft, Profile Photo Bot, Button Style & Icon](#167-bot-api-9394--sendmessagedraft-profile-photo-bot-button-style--icon)
76
- - [16.8 Bot API 9.5 โ€“ Member Tags, Date-Time Entity](#168-bot-api-95--member-tags-date-time-entity)
77
- - [16.9 Bot API 9.6 โ€“ Managed Bots](#169-bot-api-96--managed-bots)
78
- - [16.10 Bot API 10.0 โ€“ Guest Mode](#1610-bot-api-100--guest-mode)
79
- - [16.11 Bot API 10.0 โ€“ Bot-to-Bot Communication](#1611-bot-api-100--bot-to-bot-communication)
80
- - [16.12 Bot API 10.0 โ€“ Delete Reactions](#1612-bot-api-100--delete-reactions)
81
- - [16.13 Bot API 10.0 โ€“ Live Photo](#1613-bot-api-100--live-photo)
82
- - [16.14 Bot API 10.0 โ€“ Managed Bot Access Settings](#1614-bot-api-100--managed-bot-access-settings)
83
- - [16.15 Bot API 10.0 โ€“ Get User Personal Chat Messages](#1615-bot-api-100--get-user-personal-chat-messages)
84
- - [16.16 Bot API 10.1 โ€“ Join Request Queries](#1616-bot-api-101--join-request-queries)
85
- - [16.17 Bot API 10.1 โ€“ Rich Messages](#1617-bot-api-101--rich-messages)
86
- - [17. ๐Ÿ’ฌ Discord Bot (ElynnDiscord)](#17--discord-bot-elynndiscord)
87
- - [17.1 Setup Dasar & Login Bot](#171-setup-dasar--login-bot)
88
- - [17.2 Menangani Event & Pesan](#172-menangani-event--pesan)
89
- - [17.3 Slash Commands (Application Commands)](#173-slash-commands-application-commands)
90
- - [17.4 Embed & File Upload](#174-embed--file-upload)
91
- - [17.5 Sharding dengan ShardManager](#175-sharding-dengan-shardmanager)
92
- - [17.6 Cek Koneksi Bot dengan connectDiscord](#176-cek-koneksi-bot-dengan-connectdiscord)
93
- - [17.7 [NEW 2026] Granular Access Control (Invite API)](#177-new-2026-granular-access-control-invite-api)
94
- - [17.8 [NEW 2026] Modals UI Components (Select Menus, Label, TextDisplay)](#178-new-2026-modals-ui-components-select-menus-label-textdisplay)
95
- - [17.9 [NEW 2026] Server-Specific Bot Profiles (Per-Guild Profiles)](#179-new-2026-server-specific-bot-profiles-per-guild-profiles)
96
- - [17.10 [NEW 2026] Threshold Intents (10k Users) & Moderation Metadata](#1710-new-2026-threshold-intents-10k-users--moderation-metadata)
97
- - [18. ๐Ÿงช testMessage โ€” Tes Semua Jenis Pesan](#18--testmessage--tes-semua-jenis-pesan)
98
- - [Cara import & penggunaan](#cara-import--penggunaan)
99
- - [Signature lengkap](#signature-lengkap)
100
- - [Yang diuji (16 jenis pesan)](#yang-diuji-16-jenis-pesan)
101
- - [19. ๐Ÿ”’ sessionGuard โ€” Proteksi Session dari Pencurian](#19--sessionguard--proteksi-session-dari-pencurian)
102
- - [Cara Import](#cara-import)
103
- - [Penggunaan Dasar](#penggunaan-dasar)
104
- - [Opsi Lengkap](#opsi-lengkap)
105
- - [Cara Kerja](#cara-kerja)
106
- - [Cek Status Guard](#cek-status-guard)
107
- - [Reset Guard (Pindah Server)](#reset-guard-pindah-server)
108
- - [Contoh Output Log](#contoh-output-log)
109
- - [โœฆ Credits & License](#-credits--license)
110
-
111
- ## 1. ๐Ÿ“ฆ Installation
112
- Anda dapat menginstal package ini menggunakan manajer paket Node.js favorit Anda. Package ini membutuhkan Node.js versi 18 ke atas.
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&section=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&center=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>โœฆ &nbsp;ECMASCRIPT MODULES &nbsp;ยท&nbsp; NODE.JS 20+ &nbsp;ยท&nbsp; MIT LICENSE &nbsp;ยท&nbsp; MAINTAINED BY ELYNN &nbsp;โœฆ</sub>
21
+
22
+ <br><br>
23
+
24
+ [![npm version](https://img.shields.io/npm/v/elynn-baileys?style=for-the-badge&label=NPM&labelColor=0a0a12&color=7d3d6b)](https://www.npmjs.com/package/elynn-baileys)
25
+ [![npm downloads](https://img.shields.io/npm/dt/elynn-baileys?style=for-the-badge&label=DOWNLOADS&labelColor=0a0a12&color=7d3d6b)](https://www.npmjs.com/package/elynn-baileys)
26
+ [![node version](https://img.shields.io/badge/NODE-%E2%89%A518.0.0-0a0a12?style=for-the-badge&labelColor=0a0a12&color=c77b4f)](https://nodejs.org)
27
+ [![license](https://img.shields.io/badge/LICENSE-MIT-0a0a12?style=for-the-badge&labelColor=0a0a12&color=c77b4f)](#)
28
+ [![module type](https://img.shields.io/badge/MODULE-ESM-0a0a12?style=for-the-badge&labelColor=0a0a12&color=e8b76a)](#)
29
+ [![platforms](https://img.shields.io/badge/PLATFORMS-WA%20%7C%20TG%20%7C%20DC-0a0a12?style=for-the-badge&labelColor=0a0a12&color=e8b76a)](#)
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>โ—ˆ &nbsp;PETA NAVIGASI &nbsp;โ—ˆ</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> &nbsp;<a href="#01-installation"><strong>Installation</strong></a><br>
109
+
110
+ <code>02</code> &nbsp;<a href="#02-quick-start"><strong>Quick Start</strong></a><br>
111
+
112
+ <code>03</code> &nbsp;<a href="#03-auth-state"><strong>Auth State</strong></a><br>
113
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-31-multi-file-auth-state">3.1 ยท Multi File Auth State</a><br>
114
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-32-single-file-auth-state">3.2 ยท Single File Auth State</a><br>
115
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-33-sqlite-auth-state">3.3 ยท SQLite Auth State</a><br>
116
+ <br>
117
+
118
+ <code>04</code> &nbsp;<a href="#04-makeinmemorystore"><strong>makeInMemoryStore</strong></a><br>
119
+
120
+ <details>
121
+ <summary><code>05</code> &nbsp;<a href="#05-sending-messages"><strong>Sending Messages</strong></a> &nbsp;<sub>(38 topik)</sub></summary>
122
+ <br>
123
+
124
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-51-text-biasa">5.1 ยท Text Biasa</a><br>
125
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-52-text-dengan-mention-user">5.2 ยท Text dengan Mention User</a><br>
126
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-53-mention-all">5.3 ยท Mention All</a><br>
127
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-54-reply-quote-message">5.4 ยท Reply / Quote Message</a><br>
128
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-55-reaction">5.5 ยท Reaction</a><br>
129
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-56-image">5.6 ยท Image</a><br>
130
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-57-video">5.7 ยท Video</a><br>
131
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-58-audio">5.8 ยท Audio</a><br>
132
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-59-document">5.9 ยท Document</a><br>
133
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-510-sticker">5.10 ยท Sticker</a><br>
134
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-511-sticker-pack">5.11 ยท Sticker Pack</a><br>
135
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-512-contact-vcard">5.12 ยท Contact / vCard</a><br>
136
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-513-location">5.13 ยท Location</a><br>
137
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-514-live-location">5.14 ยท Live Location</a><br>
138
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-515-poll">5.15 ยท Poll</a><br>
139
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-516-album">5.16 ยท Album</a><br>
140
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-517-interactive-buttons-native-flow">5.17 ยท Interactive โ€” Buttons (Native Flow)</a><br>
141
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-518-interactive-list">5.18 ยท Interactive โ€” List</a><br>
142
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-519-interactive-image-header">5.19 ยท Interactive โ€” Image Header</a><br>
143
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-520-interactive-sebagai-template">5.20 ยท Interactive sebagai Template</a><br>
144
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-521-hydrated-template-button">5.21 ยท Hydrated Template Button</a><br>
145
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-522-view-once">5.22 ยท View Once</a><br>
146
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-523-ephemeral">5.23 ยท Ephemeral</a><br>
147
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-524-spoiler">5.24 ยท Spoiler</a><br>
148
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-525-group-status">5.25 ยท Group Status</a><br>
149
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-526-external-ad-reply">5.26 ยท External Ad Reply</a><br>
150
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-527-forward-pesan">5.27 ยท Forward Pesan</a><br>
151
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-528-pin-pesan">5.28 ยท Pin Pesan</a><br>
152
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-529-raw-message">5.29 ยท Raw Message</a><br>
153
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-530-group-invite-link">5.30 ยท Group Invite Link</a><br>
154
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-531-event-dengan-reminder-fitur-wa-januari-2026">5.31 ยท Event dengan Reminder (fitur WA Januari 2026)</a><br>
155
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-532-text-sticker-fitur-wa-januari-2026">5.32 ยท Text Sticker (fitur WA Januari 2026)</a><br>
156
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-533-view-once-text-teks-sekali-lihat-wa-2026">5.33 ยท View-Once Text โ€” Teks Sekali Lihat (WA 2026)</a><br>
157
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-535-community-event-rsvp-virtual-meeting-call-wa-2026">5.35 ยท Community Event โ€” RSVP & Virtual Meeting Call (WA 2026)</a><br>
159
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-536-group-message-history-share-wa-2026">5.36 ยท Group Message History Share (WA 2026)</a><br>
160
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-537-channel-poll-polling-di-saluranchannel-wa-2026">5.37 ยท Channel Poll โ€” Polling di Saluran/Channel (WA 2026)</a><br>
161
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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> &nbsp;<a href="#06-rich-response-messages"><strong>Rich Response Messages</strong></a><br>
167
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-61-text-rich">6.1 ยท Text Rich</a><br>
168
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-62-code-block">6.2 ยท Code Block</a><br>
169
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-63-table">6.3 ยท Table</a><br>
170
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-64-inline-image">6.4 ยท Inline Image</a><br>
171
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-65-inline-link-citation">6.5 ยท Inline Link / Citation</a><br>
172
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-66-rich-response-kombinasi">6.6 ยท Rich Response Kombinasi</a><br>
173
+ <br>
174
+
175
+ <code>07</code> &nbsp;<a href="#07-group-management"><strong>Group Management</strong></a><br>
176
+
177
+ <code>08</code> &nbsp;<a href="#08-newsletter-channel"><strong>Newsletter / Channel</strong></a><br>
178
+
179
+ <code>09</code> &nbsp;<a href="#09-privacy-profile"><strong>Privacy & Profile</strong></a><br>
180
+
181
+ <code>10</code> &nbsp;<a href="#10-handling-events"><strong>Handling Events</strong></a><br>
182
+
183
+ <code>11</code> &nbsp;<a href="#11-elynn-plugins-brat-bratvid"><strong>Elynn Plugins : Brat & Bratvid</strong></a><br>
184
+
185
+ <code>12</code> &nbsp;<a href="#12-read-messages-presence"><strong>Read Messages & Presence</strong></a><br>
186
+
187
+ <code>13</code> &nbsp;<a href="#13-delete-edit-pesan"><strong>Delete / Edit Pesan</strong></a><br>
188
+
189
+ <code>14</code> &nbsp;<a href="#14-message-options-tambahan"><strong>Message Options Tambahan</strong></a><br>
190
+
191
+ <code>15</code> &nbsp;<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> &nbsp;<a href="#16-telegram-bot-elynntelegraf"><strong>Telegram Bot (ElynnTelegraf)</strong></a> &nbsp;<sub>(17 topik)</sub></summary>
195
+ <br>
196
+
197
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-161-setup-dasar-long-polling">16.1 ยท Setup Dasar & Long Polling</a><br>
198
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-162-setup-via-webhook">16.2 ยท Setup via Webhook</a><br>
199
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-163-inline-keyboard-reply-keyboard">16.3 ยท Inline Keyboard & Reply Keyboard</a><br>
200
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-164-session-scenes-wizard">16.4 ยท Session, Scenes & Wizard</a><br>
201
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-165-memanggil-elynn-plugins-bratbratvid-dari-bot-telegram">16.5 ยท Memanggil Elynn Plugins (Brat/Bratvid) dari Bot Telegram</a><br>
202
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-166-cek-koneksi-bot-dengan-connecttelegram">16.6 ยท Cek Koneksi Bot dengan `connectTelegram`</a><br>
203
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-169-bot-api-96-managed-bots">16.9 ยท Bot API 9.6 โ€“ Managed Bots</a><br>
206
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-1610-bot-api-100-guest-mode">16.10 ยท Bot API 10.0 โ€“ Guest Mode</a><br>
207
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-1611-bot-api-100-bot-to-bot-communication">16.11 ยท Bot API 10.0 โ€“ Bot-to-Bot Communication</a><br>
208
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-1612-bot-api-100-delete-reactions">16.12 ยท Bot API 10.0 โ€“ Delete Reactions</a><br>
209
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-1613-bot-api-100-live-photo">16.13 ยท Bot API 10.0 โ€“ Live Photo</a><br>
210
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-1614-bot-api-100-managed-bot-access-settings">16.14 ยท Bot API 10.0 โ€“ Managed Bot Access Settings</a><br>
211
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-1616-bot-api-101-join-request-queries">16.16 ยท Bot API 10.1 โ€“ Join Request Queries</a><br>
213
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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> &nbsp;<a href="#17-discord-bot-elynndiscord"><strong>Discord Bot (ElynnDiscord)</strong></a><br>
219
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-171-setup-dasar-login-bot">17.1 ยท Setup Dasar & Login Bot</a><br>
220
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-172-menangani-event-pesan">17.2 ยท Menangani Event & Pesan</a><br>
221
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-173-slash-commands-application-commands">17.3 ยท Slash Commands (Application Commands)</a><br>
222
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-174-embed-file-upload">17.4 ยท Embed & File Upload</a><br>
223
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-175-sharding-dengan-shardmanager">17.5 ยท Sharding dengan ShardManager</a><br>
224
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-176-cek-koneksi-bot-dengan-connectdiscord">17.6 ยท Cek Koneksi Bot dengan `connectDiscord`</a><br>
225
+ <br>
226
+
227
+ <code>18</code> &nbsp;<a href="#18-testmessage-tes-semua-jenis-pesan"><strong>testMessage : Tes Semua Jenis Pesan</strong></a><br>
228
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-cara-import-penggunaan">Cara import & penggunaan</a><br>
229
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-signature-lengkap">Signature lengkap</a><br>
230
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-yang-diuji-16-jenis-pesan">Yang diuji (16 jenis pesan)</a><br>
231
+ <br>
232
+
233
+ <details>
234
+ <summary><code>19</code> &nbsp;<a href="#19-sessionguard-proteksi-session-dari-pencurian"><strong>sessionGuard : Proteksi Session dari Pencurian</strong></a> &nbsp;<sub>(7 topik)</sub></summary>
235
+ <br>
236
+
237
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-cara-import">Cara Import</a><br>
238
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-penggunaan-dasar">Penggunaan Dasar</a><br>
239
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-opsi-lengkap">Opsi Lengkap</a><br>
240
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-cara-kerja">Cara Kerja</a><br>
241
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-cek-status-guard">Cek Status Guard</a><br>
242
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <a href="#-reset-guard-pindah-server">Reset Guard (Pindah Server)</a><br>
243
+ &nbsp;&nbsp;&nbsp;&nbsp;โ—ฆ <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
- ## 2. โšก Quick Start
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
- ## 3. ๐Ÿ” Auth State
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
- ### 3.1 Multi File Auth State
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
- ### 3.2 Single File Auth State
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
- ### 3.3 SQLite Auth State
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
- ## 4. ๐Ÿ’พ makeInMemoryStore
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
- ## 5. ๐Ÿ’ฌ Sending Messages
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
- ### 5.1 Text Biasa
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
- ### 5.2 Text dengan Mention User
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
- ### 5.3 Mention All
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
- ### 5.4 Reply / Quote Message
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
- ### 5.5 Reaction
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
- ### 5.6 Image
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
- ### 5.7 Video
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
- ### 5.8 Audio
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
- ### 5.9 Document
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
- ### 5.10 Sticker
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
- ### 5.11 Sticker Pack
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
- ### 5.12 Contact / vCard
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
- ### 5.13 Location
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
- ### 5.14 Live Location
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
- ### 5.15 Poll
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
- ### 5.16 Album
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
- ### 5.17 Interactive โ€” Buttons (Native Flow)
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
- ### 5.18 Interactive โ€” List
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
- ### 5.19 Interactive โ€” Image Header
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
- > โš ๏ธ 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).
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
- > โš ๏ธ **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.
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
- ### 5.22 View Once
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
- ### 5.23 Ephemeral
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
- ### 5.24 Spoiler
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
- ### 5.25 Group Status
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
- > โš ๏ธ **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.
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
- > โš ๏ธ **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.
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
- ### 5.27 Forward Pesan
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
- ### 5.28 Pin Pesan
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
- ### 5.29 Raw Message
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
- ### 5.30 Group Invite Link
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
- ### 5.31 Event dengan Reminder (fitur WA Januari 2026)
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
- ### 5.32 Text Sticker (fitur WA Januari 2026)
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
- ### 5.33 View-Once Text โ€” Teks Sekali Lihat (WA 2026)
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
- ### 5.34 View-Once Voice Note โ€” Audio Sekali Dengar (WA 2026)
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
- ### 5.35 Community Event โ€” RSVP & Virtual Meeting Call (WA 2026)
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
- - **Virtual call** (audio/video link tertanam)
934
- - **RSVP**: bot bisa mendeteksi siapa yang menerima/menolak lewat `messages.upsert` event bertipe `eventResponseMessage`
935
- - **extraGuestsAllowed**: anggota bisa mengajak tamu di luar grup
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
- ### 5.36 Group Message History Share (WA 2026)
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
- ### 5.37 Channel Poll โ€” Polling di Saluran/Channel (WA 2026)
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
- ### 5.38 Channel Voice Note (WA 2026)
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
- ## 6. ๐Ÿค– Rich Response Messages
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
- ### 6.1 Text Rich
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
- ### 6.2 Code Block
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
- ### 6.3 Table
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
- ### 6.4 Inline Image
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
- ### 6.5 Inline Link / Citation
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
- ### 6.6 Rich Response Kombinasi
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
- ## 7. ๐Ÿ‘ฅ Group Management
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
- ## 8. ๐Ÿ“ข Newsletter / Channel
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
- ## 9. ๐Ÿ›ก๏ธ Privacy & Profile
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
- ## 10. ๐Ÿ“ก Handling Events
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
- ## 11. ๐Ÿงฉ Elynn Plugins โ€” Brat & Bratvid
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 | Method | Endpoint | Output | Parameter |
1407
- |-----------|--------|--------------------------|----------------|-----------------|
1408
- | `brat` | GET | `/api/maker/brat` | Sticker (img) | `text` (string) |
1409
- | `bratvid` | GET | `/api/maker/bratvid` | Sticker (vid) | `text` (string) |
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
- ## 12. ๐Ÿ‘€ Read Messages & Presence
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
- ## 13. ๐Ÿ—‘๏ธ Delete / Edit Pesan
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
- ## 14. โš™๏ธ Message Options Tambahan
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
- ## 15. ๐ŸŒ Browser Fingerprint (Kiwi, UC Browser, dll)
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
- ## 16. ๐Ÿค– Telegram Bot (ElynnTelegraf)
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
- ### 16.1 Setup Dasar & Long Polling
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
- ### 16.2 Setup via Webhook
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
- ### 16.3 Inline Keyboard & Reply Keyboard
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
- ### 16.4 Session, Scenes & Wizard
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
- ### 16.5 Memanggil Elynn Plugins (Brat/Bratvid) dari Bot Telegram
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
- ### 16.6 Cek Koneksi Bot dengan `connectTelegram`
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
- ### 16.7 Bot API 9.3โ€“9.4 โ€“ sendMessageDraft, Profile Photo Bot, Button Style & Icon
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
- ### 16.8 Bot API 9.5 โ€“ Member Tags, Date-Time Entity
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
- ### 16.9 Bot API 9.6 โ€“ Managed Bots
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
- ### 16.10 Bot API 10.0 โ€“ Guest Mode
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
- ### 16.11 Bot API 10.0 โ€“ Bot-to-Bot Communication
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
- ### 16.12 Bot API 10.0 โ€“ Delete Reactions
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
- ### 16.13 Bot API 10.0 โ€“ Live Photo
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
- ### 16.14 Bot API 10.0 โ€“ Managed Bot Access Settings
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
- ### 16.15 Bot API 10.0 โ€“ Get User Personal Chat Messages
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
- ### 16.16 Bot API 10.1 โ€“ Join Request Queries
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
- ### 16.17 Bot API 10.1 โ€“ Rich Messages
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
- ## 17. ๐Ÿ’ฌ Discord Bot (ElynnDiscord)
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
- ### 17.1 Setup Dasar & Login Bot
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
- ### 17.2 Menangani Event & Pesan
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
- ### 17.3 Slash Commands (Application Commands)
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
- ### 17.4 Embed & File Upload
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
- ### 17.5 Sharding dengan ShardManager
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
- ### 17.6 Cek Koneksi Bot dengan `connectDiscord`
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
- ## 18. ๐Ÿงช testMessage โ€” Tes Semua Jenis Pesan
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
- ### Cara import & penggunaan
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
- ### Signature lengkap
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
- ## 19. ๐Ÿ”’ sessionGuard โ€” Proteksi Session dari Pencurian
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
- ### Cara Import
2745
+
2746
+ #### โ—ˆ Cara Import
2747
+
2256
2748
 
2257
2749
  ```js
2258
2750
  import { sessionGuard, isGuardActive, resetGuard } from 'elynn-baileys'
2259
2751
  ```
2260
2752
 
2261
- ### Penggunaan Dasar
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
- ### Opsi Lengkap
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
- ### Cara Kerja
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
- ### Cek Status Guard
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
- ### Reset Guard (Pindah Server)
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
- ### Contoh Output Log
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
- โ”ƒ โš ๏ธ ELYNN GUARD โ€” SESSION BLOCK
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
- ## โœฆ Credits & License
2872
+
2873
+ <br>
2874
+
2875
+ <img src="https://capsule-render.vercel.app/api?type=waving&color=0:0a0a12,50:2b1a2e,100:0a0a12&height=130&section=footer" width="100%"/>
2876
+
2877
+ <div align="center">
2878
+
2879
+ <hr>
2880
+
2881
+ ### โœฆ Credits &amp; 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
- Dirilis di bawah lisensi **MIT**.
2370
- Copyright ยฉ 2025 Rajeh Taher/WhiskeySockets ยท Copyright ยฉ 2026 **Elynn**
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>โœฆ &nbsp;Dibuat dengan presisi oleh **Elynn** &nbsp;โœฆ</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
- *Made with โšก by Elynn*
2918
+ </div>