@neelegirl/baileys 2.0.5 → 2.0.6
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 +93 -880
- package/lib/Socket/socket.js +3 -3
- package/lib/Types/Message.d.ts +5 -1
- package/lib/Utils/decode-wa-message.d.ts +4 -4
- package/lib/Utils/decode-wa-message.js +36 -10
- package/lib/Utils/generics.d.ts +4 -3
- package/lib/Utils/generics.js +8 -6
- package/package.json +44 -10
- package/WAProto/GenerateStatics.sh +0 -3
- package/WAProto/fix-imports.js +0 -81
package/README.md
CHANGED
|
@@ -1,934 +1,147 @@
|
|
|
1
|
-
|
|
1
|
+
# @neelegirl/baileys
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
### *Smart Queue · QR-Code · Message ID · LID · TypeScript*
|
|
5
|
+
Conservative Neelegirl-maintained CommonJS WhatsApp Web client based on WhiskeySockets/Baileys, prepared for local use and publish review without removing project-specific behavior.
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
[](https://github.com/WhiskeySockets/Baileys)
|
|
10
|
-
[](https://www.npmjs.com/package/@neelegirl/baileys)
|
|
11
|
-
[](https://www.npmjs.com/package/@neelegirl/baileys)
|
|
12
|
-
[](LICENSE)
|
|
13
|
-
[](https://nodejs.org)
|
|
7
|
+
## Reference Status
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
- Public reference checked on 2026-03-20 against `WhiskeySockets/Baileys` `master`
|
|
10
|
+
- Reference HEAD: `d0779026958ca607e4efd4abef8ba89d581e7027`
|
|
11
|
+
- Public upstream package version at that snapshot: `7.0.0-rc.9`
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
<img src="https://files.catbox.moe/ru1msl.jpeg" width="720" alt="Neele Baileys Header" />
|
|
19
|
-
</p>
|
|
13
|
+
This package is not a blind mirror of upstream. It intentionally keeps Neelegirl-specific runtime behavior and CommonJS packaging where that is required for compatibility with the local stack.
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|----------|----------------|----------------|
|
|
23
|
-
| **@neelegirl/baileys v2.0.5** | **1.7.2** | Upstream-Updates · QR-Code · Message ID · Update-Check von npm |
|
|
15
|
+
## What Was Explicitly Preserved
|
|
24
16
|
|
|
25
|
-
|
|
17
|
+
- QR code flow and terminal QR handling
|
|
18
|
+
- `NEELE` message-ID special handling
|
|
19
|
+
- Neelegirl-specific device and message labeling behavior
|
|
20
|
+
- Existing WhatsApp Web focused socket defaults and event flow
|
|
21
|
+
- Legacy auth helpers already shipped in this package:
|
|
22
|
+
`useMultiFileAuthState`, `useSingleFileAuthState`, `useMongoFileAuthState`
|
|
23
|
+
- Existing store helpers already shipped in this package:
|
|
24
|
+
`makeInMemoryStore`, `makeCacheManagerStore`
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
## What Was Updated Conservatively In 2.0.6
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
- Fixed WA Web version fetching so `fetchLatestWaWebVersion()` can parse `sw.js` correctly
|
|
29
|
+
- Preserved the `NEELE` message-ID path while correcting helper edge cases
|
|
30
|
+
- Forwarded alternative addressing fields more cleanly in decoded message keys:
|
|
31
|
+
`remoteJidAlt`, `participantAlt`, `addressingMode`
|
|
32
|
+
- Hardened LID migration calls so custom repositories do not fail noisily
|
|
33
|
+
- Cleaned publish metadata:
|
|
34
|
+
recursive `files`, explicit `exports`, corrected package description
|
|
35
|
+
- Rewrote the README to match the code that is actually present
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
## What Was Not Adopted From Upstream
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
- No full ESM-only migration
|
|
40
|
+
- No Node 20 only engine jump
|
|
41
|
+
- No blind replacement of Neelegirl QR, ID, logging or device logic
|
|
42
|
+
- No forced adoption of every new upstream internal module
|
|
34
43
|
|
|
35
|
-
|
|
36
|
-
- [🚀 Installation](#-installation)
|
|
37
|
-
- [📖 Quickstart Guide](#-quickstart-guide)
|
|
38
|
-
- [✨ Neue Features in Version 2.0.5](#-neue-features-in-version-205)
|
|
39
|
-
- [💡 Grundlegende Verwendung](#-grundlegende-verwendung)
|
|
40
|
-
- [🎯 Erweiterte Features](#-erweiterte-features)
|
|
41
|
-
- [📚 Dokumentation](#-dokumentation)
|
|
42
|
-
- [⚠️ Wichtige Hinweise](#️-wichtige-hinweise)
|
|
43
|
-
- [💬 Support & Community](#-support--community)
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## ✨ Warum @neelegirl/baileys?
|
|
48
|
-
|
|
49
|
-
<div align="center">
|
|
50
|
-
|
|
51
|
-
### 🌟 **Zauberhafte Vorteile** 🌟
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
| Feature | Beschreibung | Status |
|
|
56
|
-
|---------|-------------|--------|
|
|
57
|
-
| 🧠 **Leichtgewichtig** | Keine Browser- oder Selenium-Monster nötig! | ✅ |
|
|
58
|
-
| 🌈 **WebSocket-Magie** | Direkt, schnell & stabil | ✅ |
|
|
59
|
-
| 💖 **Multi-Device** | Vollständige Unterstützung | ✅ |
|
|
60
|
-
| 🧩 **LID-Kompatibel** | Linked ID Erkennung & Nutzung | ✅ |
|
|
61
|
-
| 🧷 **TypeScript** | Saubere Typen, DX zum Verlieben | ✅ |
|
|
62
|
-
| 🔄 **Auto-Updates** | Automatische Update-Prüfung | ✅ |
|
|
63
|
-
| 📱 **QR-Code** | Schöne QR-Code-Anzeige | ✅ |
|
|
64
|
-
| 🎯 **Message ID** | Verbesserte Message-ID-Generierung | ✅ |
|
|
65
|
-
| 🚀 **Smart Queue** | Intelligente Nachrichten-Warteschlange | ✅ **NEU!** |
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## 🚀 Installation
|
|
70
|
-
|
|
71
|
-
### 📦 Mit npm
|
|
44
|
+
## Installation
|
|
72
45
|
|
|
73
46
|
```bash
|
|
74
|
-
npm install @neelegirl/baileys
|
|
47
|
+
npm install @neelegirl/baileys
|
|
75
48
|
```
|
|
76
49
|
|
|
77
|
-
|
|
50
|
+
## Quick Start
|
|
78
51
|
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
### 📦 Bleeding-Edge (GitHub)
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
npm install github:neelegirl/baileys
|
|
87
|
-
# oder
|
|
88
|
-
yarn add github:neelegirl/baileys
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### 📥 Import
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
// ES Modules
|
|
95
|
-
import makeWASocket, {
|
|
96
|
-
useMultiFileAuthState,
|
|
52
|
+
```js
|
|
53
|
+
const {
|
|
54
|
+
default: makeWASocket,
|
|
55
|
+
Browsers,
|
|
97
56
|
DisconnectReason,
|
|
98
57
|
fetchLatestBaileysVersion,
|
|
99
|
-
|
|
100
|
-
createSmartMessageQueue // 🆕 NEU!
|
|
101
|
-
} from '@neelegirl/baileys'
|
|
102
|
-
|
|
103
|
-
// CommonJS
|
|
104
|
-
const {
|
|
105
|
-
default: makeWASocket,
|
|
106
|
-
useMultiFileAuthState,
|
|
107
|
-
createSmartMessageQueue
|
|
58
|
+
useMultiFileAuthState
|
|
108
59
|
} = require('@neelegirl/baileys')
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
---
|
|
60
|
+
const { Boom } = require('@hapi/boom')
|
|
112
61
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
### 🎯 **Für Anfänger: Dein erster Bot in 5 Minuten**
|
|
116
|
-
|
|
117
|
-
```typescript
|
|
118
|
-
import makeWASocket, {
|
|
119
|
-
useMultiFileAuthState,
|
|
120
|
-
DisconnectReason,
|
|
121
|
-
fetchLatestBaileysVersion
|
|
122
|
-
} from '@neelegirl/baileys'
|
|
123
|
-
import { Boom } from '@hapi/boom'
|
|
124
|
-
|
|
125
|
-
async function startBot() {
|
|
126
|
-
// 1️⃣ Auth-State laden/speichern
|
|
62
|
+
async function start() {
|
|
127
63
|
const { state, saveCreds } = await useMultiFileAuthState('./auth_info')
|
|
128
|
-
|
|
129
|
-
// 2️⃣ Neueste WhatsApp-Version holen
|
|
130
64
|
const { version } = await fetchLatestBaileysVersion()
|
|
131
|
-
|
|
132
|
-
// 3️⃣ Socket erstellen
|
|
65
|
+
|
|
133
66
|
const sock = makeWASocket({
|
|
134
67
|
version,
|
|
135
68
|
auth: state,
|
|
136
|
-
printQRInTerminal: true,
|
|
137
|
-
browser:
|
|
69
|
+
printQRInTerminal: true,
|
|
70
|
+
browser: Browsers.ubuntu('Chrome')
|
|
138
71
|
})
|
|
139
|
-
|
|
140
|
-
// 4️⃣ Credentials speichern wenn sie sich ändern
|
|
72
|
+
|
|
141
73
|
sock.ev.on('creds.update', saveCreds)
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
sock.ev.on('connection.update', (update) => {
|
|
145
|
-
const { connection, lastDisconnect } = update
|
|
146
|
-
|
|
74
|
+
|
|
75
|
+
sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {
|
|
147
76
|
if (connection === 'close') {
|
|
148
|
-
const shouldReconnect =
|
|
149
|
-
(lastDisconnect?.error
|
|
150
|
-
|
|
151
|
-
|
|
77
|
+
const shouldReconnect =
|
|
78
|
+
(lastDisconnect?.error instanceof Boom
|
|
79
|
+
? lastDisconnect.error.output?.statusCode
|
|
80
|
+
: undefined) !== DisconnectReason.loggedOut
|
|
81
|
+
|
|
152
82
|
if (shouldReconnect) {
|
|
153
|
-
|
|
83
|
+
start().catch(console.error)
|
|
154
84
|
}
|
|
155
|
-
|
|
156
|
-
console.log('✅ Verbunden mit WhatsApp!')
|
|
85
|
+
return
|
|
157
86
|
}
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
// 6️⃣ Nachrichten empfangen
|
|
161
|
-
sock.ev.on('messages.upsert', async ({ messages }) => {
|
|
162
|
-
const m = messages[0]
|
|
163
|
-
if (!m.message) return
|
|
164
|
-
|
|
165
|
-
const jid = m.key.remoteJid!
|
|
166
|
-
const text = m.message.conversation || m.message.extendedTextMessage?.text || ''
|
|
167
|
-
|
|
168
|
-
// Einfacher Echo-Bot
|
|
169
|
-
if (text.toLowerCase() === 'hallo') {
|
|
170
|
-
await sock.sendMessage(jid, {
|
|
171
|
-
text: '🌸 Hallo! Ich bin ein Neele-Bot! ✨'
|
|
172
|
-
})
|
|
173
|
-
}
|
|
174
|
-
})
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// Bot starten
|
|
178
|
-
startBot().catch(console.error)
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### 🎨 **Was passiert hier?**
|
|
182
|
-
|
|
183
|
-
1. **`useMultiFileAuthState`**: Speichert deine WhatsApp-Session, damit du nicht jedes Mal den QR-Code scannen musst
|
|
184
|
-
2. **`fetchLatestBaileysVersion`**: Holt die neueste WhatsApp-Version automatisch
|
|
185
|
-
3. **`makeWASocket`**: Erstellt die Verbindung zu WhatsApp
|
|
186
|
-
4. **`connection.update`**: Event für Verbindungsstatus (QR-Code, Verbindung, etc.)
|
|
187
|
-
5. **`messages.upsert`**: Event für neue Nachrichten
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## ✨ Neue Features in Version 2.0.5
|
|
192
|
-
|
|
193
|
-
### 🆕 **Was ist neu?**
|
|
194
|
-
**Kompatibel mit Baileys API 1.7.2** · **Update-Check von npm-Registry** (1× pro Prozess) · **Message ID & QR-Code unverändert**
|
|
195
|
-
|
|
196
|
-
<div align="center">
|
|
197
|
-
|
|
198
|
-
| 🎯 Feature | 📝 Beschreibung | 🚀 Status |
|
|
199
|
-
|-----------|----------------|-----------|
|
|
200
|
-
| **🔧 Build-Tools** | WAProto GenerateStatics & Fix-Imports Skripte | ✅ **Neu** |
|
|
201
|
-
| **🧪 Engine-Check** | Node.js 20+ Prüfung für stabile Laufzeit | ✅ **Neu** |
|
|
202
|
-
| **🔄 Upstream-Updates** | validate-connection, Defaults & Pairing aus Backup Baileys | ✅ |
|
|
203
|
-
| **🔐 LID in Pairing** | Linked ID (lid) in configureSuccessfulPairing & me | ✅ |
|
|
204
|
-
| **📤 historySyncConfig** | Vollständiges DeviceProps in generateRegistrationNode | ✅ |
|
|
205
|
-
| **🌐 getWebInfo** | Desktop-Check für syncFullHistory (browser[1] === 'Desktop') | ✅ |
|
|
206
|
-
| **⚙️ Defaults** | enableAutoSessionRecreation, enableRecentMessageCache, shouldSyncHistoryMessage | ✅ |
|
|
207
|
-
| **🚀 Smart Message Queue** | Intelligente Queue mit Auto-Retry & Prioritäten | ✅ |
|
|
208
|
-
| **🎨 QR-Anzeige** | Schöne QR-Code-Box · unverändert | ✅ |
|
|
209
|
-
| **🎯 Message ID** | Message-ID-Generierung · unverändert | ✅ |
|
|
210
|
-
| **📦 WhatsApp Version** | [2, 3000, 1032141294] · Basiert auf @whiskeysockets/baileys 7.0.0-rc.9 | ✅ |
|
|
211
|
-
|
|
212
|
-
</div>
|
|
213
|
-
|
|
214
|
-
### 🔥 **Neue Funktionen**
|
|
215
|
-
|
|
216
|
-
#### 🚀 **`createSmartMessageQueue()`** - Intelligente Nachrichten-Warteschlange ⭐ **NEU!**
|
|
217
|
-
|
|
218
|
-
Die ultimative Lösung für zuverlässiges Nachrichtenversenden mit automatischen Retries, Prioritäten und Rate-Limiting!
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
import { createSmartMessageQueue } from '@neelegirl/baileys'
|
|
222
|
-
|
|
223
|
-
// Queue erstellen
|
|
224
|
-
const queue = createSmartMessageQueue(sock, {
|
|
225
|
-
maxRetries: 3, // Max. 3 Retry-Versuche
|
|
226
|
-
retryDelay: 1000, // 1 Sekunde Basis-Delay
|
|
227
|
-
maxConcurrent: 5, // Max. 5 gleichzeitige Nachrichten
|
|
228
|
-
onSuccess: (message) => {
|
|
229
|
-
console.log('✅ Nachricht erfolgreich gesendet!')
|
|
230
|
-
},
|
|
231
|
-
onError: (message, error) => {
|
|
232
|
-
console.error('❌ Nachricht fehlgeschlagen:', error)
|
|
233
|
-
}
|
|
234
|
-
})
|
|
235
|
-
|
|
236
|
-
// Nachrichten zur Queue hinzufügen
|
|
237
|
-
await queue.add({
|
|
238
|
-
jid: '491234567890@s.whatsapp.net',
|
|
239
|
-
message: { text: 'Wichtige Nachricht!' },
|
|
240
|
-
priority: 'high' // 'low' | 'normal' | 'high'
|
|
241
|
-
})
|
|
242
|
-
|
|
243
|
-
// Queue-Statistiken abrufen
|
|
244
|
-
const stats = queue.getStats()
|
|
245
|
-
console.log(`Pending: ${stats.pending}, Processing: ${stats.processing}, Failed: ${stats.failed}`)
|
|
246
|
-
|
|
247
|
-
// Queue pausieren/fortsetzen
|
|
248
|
-
queue.pause() // Pausiert die Verarbeitung
|
|
249
|
-
queue.resume() // Setzt die Verarbeitung fort
|
|
250
|
-
|
|
251
|
-
// Queue leeren
|
|
252
|
-
queue.clear()
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
**Features der Smart Queue:**
|
|
256
|
-
- ✅ **Automatische Retries** mit Exponential Backoff
|
|
257
|
-
- ✅ **Prioritäts-System** (high > normal > low)
|
|
258
|
-
- ✅ **Rate-Limiting** durch maxConcurrent
|
|
259
|
-
- ✅ **Error-Handling** mit Callbacks
|
|
260
|
-
- ✅ **Queue-Statistiken** für Monitoring
|
|
261
|
-
- ✅ **Pause/Resume** für flexible Kontrolle
|
|
262
|
-
|
|
263
|
-
#### 1. **`onWhatsApp()`** - Prüfe ob Nummer auf WhatsApp ist
|
|
264
|
-
|
|
265
|
-
```typescript
|
|
266
|
-
const [result] = await sock.onWhatsApp('491234567890@s.whatsapp.net')
|
|
267
|
-
if (result?.exists) {
|
|
268
|
-
console.log(`✅ ${result.jid} ist auf WhatsApp!`)
|
|
269
|
-
}
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
#### 2. **`executeUSyncQuery()`** - USync-Queries ausführen
|
|
273
|
-
|
|
274
|
-
```typescript
|
|
275
|
-
import { USyncQuery, USyncContactProtocol } from '@neelegirl/baileys'
|
|
276
|
-
|
|
277
|
-
const query = new USyncQuery()
|
|
278
|
-
.withContactProtocol()
|
|
279
|
-
.withUser(new USyncUser().withPhone('+491234567890'))
|
|
280
|
-
|
|
281
|
-
const result = await sock.executeUSyncQuery(query)
|
|
282
|
-
console.log('Kontakt-Info:', result)
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
#### 3. **`digestKeyBundle()`** - Key-Bundle validieren
|
|
286
|
-
|
|
287
|
-
```typescript
|
|
288
|
-
try {
|
|
289
|
-
await sock.digestKeyBundle()
|
|
290
|
-
console.log('✅ Key-Bundle ist gültig')
|
|
291
|
-
} catch (error) {
|
|
292
|
-
console.log('⚠️ Key-Bundle ungültig, Pre-Keys werden hochgeladen')
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
#### 4. **`rotateSignedPreKey()`** - Signed Pre-Key rotieren
|
|
297
|
-
|
|
298
|
-
```typescript
|
|
299
|
-
await sock.rotateSignedPreKey()
|
|
300
|
-
console.log('✅ Signed Pre-Key wurde rotiert')
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
### 🔄 **Automatische Update-Prüfung**
|
|
304
|
-
|
|
305
|
-
Bei jedem Start wird automatisch geprüft, ob eine neue Version verfügbar ist:
|
|
306
|
-
|
|
307
|
-
```
|
|
308
|
-
╔════════════════════════════════════════╗
|
|
309
|
-
║ 🔔 NEUES UPDATE VERFÜGBAR! 🔔 ║
|
|
310
|
-
╠════════════════════════════════════════╣
|
|
311
|
-
║ @neelegirl/baileys ║
|
|
312
|
-
║ Aktuelle Version: 1.6.6 ║
|
|
313
|
-
║ Neue Version: 1.7.0 ║
|
|
314
|
-
║ ║
|
|
315
|
-
║ Bitte aktualisiere: ║
|
|
316
|
-
║ npm install @neelegirl/baileys@latest ║
|
|
317
|
-
╚════════════════════════════════════════╝
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
---
|
|
321
|
-
|
|
322
|
-
## 💡 Grundlegende Verwendung
|
|
323
|
-
|
|
324
|
-
### 📱 **Nachrichten senden**
|
|
325
|
-
|
|
326
|
-
```typescript
|
|
327
|
-
// Text-Nachricht
|
|
328
|
-
await sock.sendMessage(jid, { text: 'Hallo! 🌸' })
|
|
329
|
-
|
|
330
|
-
// Mit Quote (Antwort)
|
|
331
|
-
await sock.sendMessage(jid, {
|
|
332
|
-
text: 'Das ist eine Antwort!'
|
|
333
|
-
}, {
|
|
334
|
-
quoted: originalMessage
|
|
335
|
-
})
|
|
336
|
-
|
|
337
|
-
// Mit Erwähnung
|
|
338
|
-
await sock.sendMessage(jid, {
|
|
339
|
-
text: '@491234567890 Hallo!',
|
|
340
|
-
mentions: ['491234567890@s.whatsapp.net']
|
|
341
|
-
})
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
### 🖼️ **Medien senden**
|
|
345
|
-
|
|
346
|
-
```typescript
|
|
347
|
-
// Bild
|
|
348
|
-
await sock.sendMessage(jid, {
|
|
349
|
-
image: { url: './bild.jpg' },
|
|
350
|
-
caption: 'Schönes Bild! 🌸'
|
|
351
|
-
})
|
|
352
|
-
|
|
353
|
-
// Video
|
|
354
|
-
await sock.sendMessage(jid, {
|
|
355
|
-
video: { url: './video.mp4' },
|
|
356
|
-
caption: 'Mein Video! 🎬'
|
|
357
|
-
})
|
|
358
|
-
|
|
359
|
-
// GIF (als Video mit gifPlayback Flag)
|
|
360
|
-
await sock.sendMessage(jid, {
|
|
361
|
-
video: { url: './animation.mp4' },
|
|
362
|
-
gifPlayback: true,
|
|
363
|
-
caption: 'Kawaii GIF! ✨'
|
|
364
|
-
})
|
|
365
|
-
|
|
366
|
-
// Audio/Sprachnachricht
|
|
367
|
-
await sock.sendMessage(jid, {
|
|
368
|
-
audio: { url: './audio.ogg' },
|
|
369
|
-
mimetype: 'audio/ogg',
|
|
370
|
-
ptt: true // Push-to-Talk (Sprachnachricht)
|
|
371
|
-
})
|
|
372
|
-
|
|
373
|
-
// Dokument
|
|
374
|
-
await sock.sendMessage(jid, {
|
|
375
|
-
document: { url: './dokument.pdf' },
|
|
376
|
-
mimetype: 'application/pdf',
|
|
377
|
-
fileName: 'Wichtiges Dokument.pdf'
|
|
378
|
-
})
|
|
379
|
-
|
|
380
|
-
// Sticker
|
|
381
|
-
await sock.sendMessage(jid, {
|
|
382
|
-
sticker: { url: './sticker.webp' }
|
|
383
|
-
})
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
### 👥 **Gruppen**
|
|
387
|
-
|
|
388
|
-
```typescript
|
|
389
|
-
// Gruppe erstellen
|
|
390
|
-
const group = await sock.groupCreate('Meine Gruppe', [
|
|
391
|
-
'491234567890@s.whatsapp.net',
|
|
392
|
-
'499876543210@s.whatsapp.net'
|
|
393
|
-
])
|
|
394
|
-
|
|
395
|
-
// Teilnehmer hinzufügen
|
|
396
|
-
await sock.groupParticipantsUpdate(
|
|
397
|
-
group.id,
|
|
398
|
-
['491111111111@s.whatsapp.net'],
|
|
399
|
-
'add'
|
|
400
|
-
)
|
|
401
|
-
|
|
402
|
-
// Gruppenname ändern
|
|
403
|
-
await sock.groupUpdateSubject(group.id, 'Neuer Gruppenname')
|
|
404
|
-
|
|
405
|
-
// Gruppenbeschreibung ändern
|
|
406
|
-
await sock.groupUpdateDescription(group.id, 'Neue Beschreibung')
|
|
407
|
-
|
|
408
|
-
// Gruppen-Einstellungen ändern
|
|
409
|
-
await sock.groupSettingUpdate(group.id, 'announcement') // Nur Admins können schreiben
|
|
410
|
-
await sock.groupSettingUpdate(group.id, 'not_announcement') // Alle können schreiben
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### 📊 **Umfragen (Polls)**
|
|
414
|
-
|
|
415
|
-
```typescript
|
|
416
|
-
await sock.sendMessage(jid, {
|
|
417
|
-
poll: {
|
|
418
|
-
name: 'Was ist deine Lieblingsfarbe?',
|
|
419
|
-
values: ['Rot', 'Blau', 'Grün', 'Gelb'],
|
|
420
|
-
selectableCount: 1 // Anzahl der auswählbaren Optionen
|
|
421
|
-
}
|
|
422
|
-
})
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
### ⭐ **Reaktionen**
|
|
426
|
-
|
|
427
|
-
```typescript
|
|
428
|
-
// Reaktion hinzufügen
|
|
429
|
-
await sock.sendMessage(jid, {
|
|
430
|
-
react: {
|
|
431
|
-
text: '❤️',
|
|
432
|
-
key: message.key
|
|
433
|
-
}
|
|
434
|
-
})
|
|
435
|
-
|
|
436
|
-
// Reaktion entfernen (leerer String)
|
|
437
|
-
await sock.sendMessage(jid, {
|
|
438
|
-
react: {
|
|
439
|
-
text: '',
|
|
440
|
-
key: message.key
|
|
441
|
-
}
|
|
442
|
-
})
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
---
|
|
446
|
-
|
|
447
|
-
## 🎯 Erweiterte Features
|
|
448
|
-
|
|
449
|
-
### 🚀 **Smart Message Queue - Praktisches Beispiel**
|
|
450
|
-
|
|
451
|
-
```typescript
|
|
452
|
-
import { createSmartMessageQueue } from '@neelegirl/baileys'
|
|
453
|
-
|
|
454
|
-
// Queue für Bulk-Messaging erstellen
|
|
455
|
-
const bulkQueue = createSmartMessageQueue(sock, {
|
|
456
|
-
maxRetries: 5,
|
|
457
|
-
retryDelay: 2000,
|
|
458
|
-
maxConcurrent: 3, // Nicht zu viele gleichzeitig
|
|
459
|
-
onSuccess: (msg) => {
|
|
460
|
-
console.log(`✅ Gesendet an ${msg.jid}`)
|
|
461
|
-
},
|
|
462
|
-
onError: (msg, err) => {
|
|
463
|
-
console.error(`❌ Fehler bei ${msg.jid}:`, err.message)
|
|
464
|
-
}
|
|
465
|
-
})
|
|
466
|
-
|
|
467
|
-
// Viele Nachrichten hinzufügen
|
|
468
|
-
const recipients = [
|
|
469
|
-
'491234567890@s.whatsapp.net',
|
|
470
|
-
'499876543210@s.whatsapp.net',
|
|
471
|
-
'491111111111@s.whatsapp.net'
|
|
472
|
-
]
|
|
473
|
-
|
|
474
|
-
for (const jid of recipients) {
|
|
475
|
-
await bulkQueue.add({
|
|
476
|
-
jid,
|
|
477
|
-
message: { text: 'Wichtige Ankündigung! 📢' },
|
|
478
|
-
priority: 'high'
|
|
479
|
-
})
|
|
480
|
-
}
|
|
481
87
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
const stats = bulkQueue.getStats()
|
|
485
|
-
console.log(`Queue: ${stats.pending} pending, ${stats.processing} processing, ${stats.failed} failed`)
|
|
486
|
-
}, 5000)
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
### 💠 **LID-Kompatibilität (Linked ID)**
|
|
490
|
-
|
|
491
|
-
LID sorgt dafür, dass Benutzer auch über geräteübergreifende IDs korrekt erkannt werden:
|
|
492
|
-
|
|
493
|
-
```typescript
|
|
494
|
-
import { jidDecode, jidEncode, isLidUser } from '@neelegirl/baileys'
|
|
495
|
-
|
|
496
|
-
// Prüfe ob es eine LID ist
|
|
497
|
-
if (isLidUser(someJid)) {
|
|
498
|
-
console.log('Das ist eine LID!')
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
// JID dekodieren
|
|
502
|
-
const decoded = jidDecode('491234567890@s.whatsapp.net')
|
|
503
|
-
console.log(decoded) // { user: '491234567890', server: 's.whatsapp.net' }
|
|
504
|
-
|
|
505
|
-
// JID encodieren
|
|
506
|
-
const encoded = jidEncode('491234567890', 's.whatsapp.net')
|
|
507
|
-
console.log(encoded) // '491234567890@s.whatsapp.net'
|
|
508
|
-
```
|
|
509
|
-
|
|
510
|
-
### 🔐 **Sichere Sender-ID-Extraktion**
|
|
511
|
-
|
|
512
|
-
```typescript
|
|
513
|
-
import { jidDecode } from '@neelegirl/baileys'
|
|
514
|
-
|
|
515
|
-
function getSenderId(message: any) {
|
|
516
|
-
const participant = message?.key?.participant || message?.participant
|
|
517
|
-
const lid = participant || message?.key?.remoteJid
|
|
518
|
-
|
|
519
|
-
if (lid) {
|
|
520
|
-
const decoded = jidDecode(lid)
|
|
521
|
-
return decoded?.user
|
|
522
|
-
? `${decoded.user}@${decoded.server}`
|
|
523
|
-
: lid
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
return 'unknown'
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
sock.ev.on('messages.upsert', ({ messages }) => {
|
|
530
|
-
const sender = getSenderId(messages[0])
|
|
531
|
-
console.log('Nachricht von:', sender)
|
|
532
|
-
})
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
### 📥 **Medien herunterladen**
|
|
536
|
-
|
|
537
|
-
```typescript
|
|
538
|
-
import { downloadMediaMessage } from '@neelegirl/baileys'
|
|
539
|
-
import { writeFile } from 'fs/promises'
|
|
540
|
-
|
|
541
|
-
sock.ev.on('messages.upsert', async ({ messages }) => {
|
|
542
|
-
const m = messages[0]
|
|
543
|
-
|
|
544
|
-
if (m.message?.imageMessage) {
|
|
545
|
-
// Medien als Buffer herunterladen
|
|
546
|
-
const buffer = await downloadMediaMessage(
|
|
547
|
-
m,
|
|
548
|
-
'buffer',
|
|
549
|
-
{},
|
|
550
|
-
{ logger: sock.logger }
|
|
551
|
-
)
|
|
552
|
-
|
|
553
|
-
// Speichern
|
|
554
|
-
await writeFile('./downloaded-image.jpg', buffer)
|
|
555
|
-
console.log('✅ Bild gespeichert!')
|
|
556
|
-
}
|
|
557
|
-
})
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
### 🔄 **Nachrichten bearbeiten**
|
|
561
|
-
|
|
562
|
-
```typescript
|
|
563
|
-
// Nachricht bearbeiten
|
|
564
|
-
const sentMessage = await sock.sendMessage(jid, { text: 'Ursprünglicher Text' })
|
|
565
|
-
|
|
566
|
-
// Später bearbeiten
|
|
567
|
-
await sock.sendMessage(jid, {
|
|
568
|
-
text: 'Bearbeiteter Text',
|
|
569
|
-
edit: sentMessage.key
|
|
570
|
-
})
|
|
571
|
-
```
|
|
572
|
-
|
|
573
|
-
### 🗑️ **Nachrichten löschen**
|
|
574
|
-
|
|
575
|
-
```typescript
|
|
576
|
-
// Für alle löschen
|
|
577
|
-
await sock.sendMessage(jid, { delete: message.key })
|
|
578
|
-
|
|
579
|
-
// Nur für mich löschen (via chatModify)
|
|
580
|
-
await sock.chatModify({
|
|
581
|
-
clear: {
|
|
582
|
-
messages: [{
|
|
583
|
-
id: message.key.id,
|
|
584
|
-
fromMe: true,
|
|
585
|
-
timestamp: message.messageTimestamp
|
|
586
|
-
}]
|
|
587
|
-
}
|
|
588
|
-
}, jid)
|
|
589
|
-
```
|
|
590
|
-
|
|
591
|
-
### 📌 **Nachrichten anpinnen**
|
|
592
|
-
|
|
593
|
-
```typescript
|
|
594
|
-
// Nachricht anpinnen (24 Stunden)
|
|
595
|
-
await sock.sendMessage(jid, {
|
|
596
|
-
pin: {
|
|
597
|
-
type: 1, // 0 = entfernen, 1 = anpinnen
|
|
598
|
-
time: 86400, // Sekunden (24h)
|
|
599
|
-
key: message.key
|
|
600
|
-
}
|
|
601
|
-
})
|
|
602
|
-
```
|
|
603
|
-
|
|
604
|
-
### 📍 **Standort senden**
|
|
605
|
-
|
|
606
|
-
```typescript
|
|
607
|
-
await sock.sendMessage(jid, {
|
|
608
|
-
location: {
|
|
609
|
-
degreesLatitude: 52.520008,
|
|
610
|
-
degreesLongitude: 13.404954
|
|
611
|
-
}
|
|
612
|
-
})
|
|
613
|
-
```
|
|
614
|
-
|
|
615
|
-
### 📇 **Kontakt teilen**
|
|
616
|
-
|
|
617
|
-
```typescript
|
|
618
|
-
const vcard = `BEGIN:VCARD
|
|
619
|
-
VERSION:3.0
|
|
620
|
-
FN:Max Mustermann
|
|
621
|
-
TEL;type=CELL;type=VOICE;waid=491234567890:+49 123 4567890
|
|
622
|
-
END:VCARD`
|
|
623
|
-
|
|
624
|
-
await sock.sendMessage(jid, {
|
|
625
|
-
contacts: {
|
|
626
|
-
displayName: 'Max Mustermann',
|
|
627
|
-
contacts: [{ vcard }]
|
|
628
|
-
}
|
|
629
|
-
})
|
|
630
|
-
```
|
|
631
|
-
|
|
632
|
-
### 🔄 **Nachrichten weiterleiten**
|
|
633
|
-
|
|
634
|
-
```typescript
|
|
635
|
-
await sock.sendMessage(jid, {
|
|
636
|
-
forward: originalMessage
|
|
637
|
-
})
|
|
638
|
-
```
|
|
639
|
-
|
|
640
|
-
---
|
|
641
|
-
|
|
642
|
-
## 📚 Dokumentation
|
|
643
|
-
|
|
644
|
-
### 🎧 **Events (Event-Handler)**
|
|
645
|
-
|
|
646
|
-
```typescript
|
|
647
|
-
// Verbindungs-Updates
|
|
648
|
-
sock.ev.on('connection.update', (update) => {
|
|
649
|
-
if (update.qr) {
|
|
650
|
-
console.log('📱 QR-Code:', update.qr)
|
|
651
|
-
}
|
|
652
|
-
if (update.connection === 'open') {
|
|
653
|
-
console.log('✅ Verbunden!')
|
|
654
|
-
}
|
|
655
|
-
})
|
|
656
|
-
|
|
657
|
-
// Neue Nachrichten
|
|
658
|
-
sock.ev.on('messages.upsert', ({ messages, type }) => {
|
|
659
|
-
console.log('📥 Neue Nachricht:', messages[0])
|
|
660
|
-
})
|
|
661
|
-
|
|
662
|
-
// Nachrichten-Updates (z.B. gelesen, gelöscht)
|
|
663
|
-
sock.ev.on('messages.update', (updates) => {
|
|
664
|
-
updates.forEach(({ key, update }) => {
|
|
665
|
-
if (update.status) {
|
|
666
|
-
console.log('📊 Status Update:', update.status)
|
|
88
|
+
if (connection === 'open') {
|
|
89
|
+
console.log('WhatsApp Web connection opened')
|
|
667
90
|
}
|
|
668
91
|
})
|
|
669
|
-
})
|
|
670
|
-
|
|
671
|
-
// Credentials-Update (wichtig für Session-Speicherung!)
|
|
672
|
-
sock.ev.on('creds.update', saveCreds)
|
|
673
|
-
|
|
674
|
-
// Kontakte-Update
|
|
675
|
-
sock.ev.on('contacts.update', (updates) => {
|
|
676
|
-
updates.forEach(update => {
|
|
677
|
-
console.log('👤 Kontakt-Update:', update)
|
|
678
|
-
})
|
|
679
|
-
})
|
|
680
|
-
|
|
681
|
-
// Gruppen-Updates
|
|
682
|
-
sock.ev.on('groups.update', (updates) => {
|
|
683
|
-
updates.forEach(update => {
|
|
684
|
-
console.log('👥 Gruppen-Update:', update)
|
|
685
|
-
})
|
|
686
|
-
})
|
|
687
|
-
|
|
688
|
-
// Presence-Update (online, offline, typing)
|
|
689
|
-
sock.ev.on('presence.update', ({ id, presences }) => {
|
|
690
|
-
console.log('🟢 Presence:', id, presences)
|
|
691
|
-
})
|
|
692
|
-
```
|
|
693
|
-
|
|
694
|
-
### 🔧 **Socket-Konfiguration**
|
|
695
|
-
|
|
696
|
-
```typescript
|
|
697
|
-
const sock = makeWASocket({
|
|
698
|
-
// Auth-State (wichtig!)
|
|
699
|
-
auth: state,
|
|
700
|
-
|
|
701
|
-
// WhatsApp-Version (automatisch oder manuell)
|
|
702
|
-
version: [2, 3000, 1032141294],
|
|
703
|
-
|
|
704
|
-
// Browser-Info
|
|
705
|
-
browser: ['Mein Bot', 'Chrome', '1.0.0'],
|
|
706
|
-
// Oder vordefinierte Browser:
|
|
707
|
-
// browser: Browsers.macOS('Desktop')
|
|
708
|
-
// browser: Browsers.ubuntu('Server')
|
|
709
|
-
// browser: Browsers.iOS('Mobile')
|
|
710
|
-
|
|
711
|
-
// QR-Code im Terminal anzeigen
|
|
712
|
-
printQRInTerminal: true,
|
|
713
|
-
|
|
714
|
-
// Online beim Verbinden markieren
|
|
715
|
-
markOnlineOnConnect: true,
|
|
716
|
-
|
|
717
|
-
// Vollständige Historie synchronisieren
|
|
718
|
-
syncFullHistory: false,
|
|
719
|
-
|
|
720
|
-
// Logger (optional)
|
|
721
|
-
logger: pino({ level: 'silent' }),
|
|
722
|
-
|
|
723
|
-
// Message-Store (für Retry & Poll-Votes)
|
|
724
|
-
getMessage: async (key) => {
|
|
725
|
-
// Hole Nachricht aus deinem Store
|
|
726
|
-
return await yourMessageStore.get(key)
|
|
727
|
-
},
|
|
728
|
-
|
|
729
|
-
// Group-Metadata-Cache (empfohlen!)
|
|
730
|
-
cachedGroupMetadata: async (jid) => {
|
|
731
|
-
// Hole aus Cache
|
|
732
|
-
return await groupCache.get(jid)
|
|
733
|
-
},
|
|
734
|
-
|
|
735
|
-
// Custom Upload Hosts
|
|
736
|
-
customUploadHosts: [],
|
|
737
|
-
|
|
738
|
-
// Retry-Konfiguration
|
|
739
|
-
maxMsgRetryCount: 5,
|
|
740
|
-
retryRequestDelayMs: 250,
|
|
741
|
-
|
|
742
|
-
// Query-Timeout
|
|
743
|
-
defaultQueryTimeoutMs: 60000,
|
|
744
|
-
|
|
745
|
-
// QR-Timeout
|
|
746
|
-
qrTimeout: 60000
|
|
747
|
-
})
|
|
748
|
-
```
|
|
749
|
-
|
|
750
|
-
### 💾 **Session-Speicherung**
|
|
751
|
-
|
|
752
|
-
```typescript
|
|
753
|
-
import { useMultiFileAuthState, BufferJSON } from '@neelegirl/baileys'
|
|
754
|
-
import { readFileSync, writeFileSync } from 'fs'
|
|
755
|
-
|
|
756
|
-
// Option 1: Multi-File (einfach, empfohlen für Entwicklung)
|
|
757
|
-
const { state, saveCreds } = await useMultiFileAuthState('./auth_info')
|
|
758
|
-
|
|
759
|
-
// Option 2: Single-File (für Produktion)
|
|
760
|
-
import { useSingleFileAuthState } from '@neelegirl/baileys'
|
|
761
|
-
|
|
762
|
-
const { state, saveCreds } = await useSingleFileAuthState('./auth.json')
|
|
763
|
-
|
|
764
|
-
// Option 3: Custom (für Datenbanken)
|
|
765
|
-
const authFile = './auth.json'
|
|
766
|
-
|
|
767
|
-
const { state, saveCreds } = {
|
|
768
|
-
state: {
|
|
769
|
-
creds: JSON.parse(
|
|
770
|
-
readFileSync(authFile, { encoding: 'utf-8' }),
|
|
771
|
-
BufferJSON.reviver
|
|
772
|
-
),
|
|
773
|
-
keys: {
|
|
774
|
-
get: async (type, ids) => {
|
|
775
|
-
// Hole Keys aus deiner DB
|
|
776
|
-
},
|
|
777
|
-
set: async (data) => {
|
|
778
|
-
// Speichere Keys in deiner DB
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
},
|
|
782
|
-
saveCreds: async () => {
|
|
783
|
-
const creds = state.creds
|
|
784
|
-
writeFileSync(authFile, JSON.stringify(creds, BufferJSON.replacer, 2))
|
|
785
|
-
}
|
|
786
92
|
}
|
|
787
|
-
```
|
|
788
|
-
|
|
789
|
-
### 🗄️ **Message Store (für Retry & Poll-Votes)**
|
|
790
93
|
|
|
791
|
-
|
|
792
|
-
import { makeInMemoryStore } from '@neelegirl/baileys'
|
|
793
|
-
|
|
794
|
-
// In-Memory Store (für Entwicklung)
|
|
795
|
-
const store = makeInMemoryStore({ logger: pino().child({ level: 'silent' }) })
|
|
796
|
-
|
|
797
|
-
// Aus Datei laden
|
|
798
|
-
store.readFromFile('./baileys_store.json')
|
|
799
|
-
|
|
800
|
-
// Socket binden
|
|
801
|
-
store.bind(sock.ev)
|
|
802
|
-
|
|
803
|
-
// Alle 10 Sekunden speichern
|
|
804
|
-
setInterval(() => {
|
|
805
|
-
store.writeToFile('./baileys_store.json')
|
|
806
|
-
}, 10_000)
|
|
807
|
-
|
|
808
|
-
// In Socket-Config verwenden
|
|
809
|
-
const sock = makeWASocket({
|
|
810
|
-
getMessage: async (key) => {
|
|
811
|
-
return store.loadMessage(key.remoteJid!, key.id!)
|
|
812
|
-
}
|
|
813
|
-
})
|
|
94
|
+
start().catch(console.error)
|
|
814
95
|
```
|
|
815
96
|
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
## ⚠️ Wichtige Hinweise
|
|
819
|
-
|
|
820
|
-
### 🚨 **Disclaimer**
|
|
821
|
-
|
|
822
|
-
> ⚠️ **WICHTIG**: Dieses Projekt steht in **keiner offiziellen Verbindung** zu WhatsApp.
|
|
823
|
-
>
|
|
824
|
-
> - ✖️ **Kein Spam** oder Massennachrichten
|
|
825
|
-
> - ✖️ **Kein Missbrauch** für unethische Zwecke
|
|
826
|
-
> - ✖️ **Keine Stalkerware** oder automatisierte Überwachung
|
|
827
|
-
> - ✔️ **Verantwortungsvoller Gebrauch** wird erwartet
|
|
828
|
-
>
|
|
829
|
-
> Die Entwickler:innen übernehmen **keine Verantwortung** für den Gebrauch.
|
|
830
|
-
|
|
831
|
-
### 🔒 **Sicherheit**
|
|
832
|
-
|
|
833
|
-
- **Nie** deine Auth-Dateien öffentlich teilen
|
|
834
|
-
- **Immer** `.gitignore` für Auth-Ordner verwenden
|
|
835
|
-
- **Regelmäßig** Backups erstellen
|
|
836
|
-
- **Sichere** Passwörter für deine Server verwenden
|
|
837
|
-
|
|
838
|
-
### 💡 **Best Practices**
|
|
839
|
-
|
|
840
|
-
1. **Session-Speicherung**: Immer `useMultiFileAuthState` oder ähnliches verwenden
|
|
841
|
-
2. **Error-Handling**: Immer try-catch für wichtige Operationen
|
|
842
|
-
3. **Rate-Limiting**: Nicht zu viele Nachrichten auf einmal senden (nutze Smart Queue!)
|
|
843
|
-
4. **Logging**: Logger für Debugging verwenden
|
|
844
|
-
5. **Updates**: Regelmäßig auf Updates prüfen
|
|
845
|
-
|
|
846
|
-
---
|
|
847
|
-
|
|
848
|
-
## 💬 Support & Community
|
|
849
|
-
|
|
850
|
-
<div align="center">
|
|
851
|
-
|
|
852
|
-
### 🌸 **Made with Love by @neelegirl** 🌸
|
|
853
|
-
|
|
854
|
-
[](https://github.com/neelegirl)
|
|
855
|
-
[](mailto:neelehoven@gmail.com)
|
|
856
|
-
|
|
857
|
-
**⭐ Wenn dir dieses Projekt gefällt, gib ihm ein Star auf GitHub! ⭐**
|
|
858
|
-
|
|
859
|
-
</div>
|
|
860
|
-
|
|
861
|
-
---
|
|
862
|
-
|
|
863
|
-
## 📝 Changelog
|
|
864
|
-
|
|
865
|
-
### Version 2.0.5 (Aktuell) 🎉
|
|
866
|
-
|
|
867
|
-
- 📖 **README Glow-Up** – Version 2.0.5, Badges & Changelog
|
|
868
|
-
- 🧪 **Engine-Check** – Node.js 20+ Hinweis für stabile Laufzeit
|
|
869
|
-
- 🧰 **WAProto Tools** – GenerateStatics & Fix-Imports Skripte ergänzt
|
|
870
|
-
- 🔔 **Update-Check** – Liest Version von **npm-Registry** (registry.npmjs.org), nur 1× pro Prozess
|
|
871
|
-
- ✨ Semver-Vergleich für „Update verfügbar“ nur bei wirklich neuerer Version
|
|
872
|
-
- 🎨 **QR-Code** & **Message ID** – unverändert
|
|
873
|
-
- 🔄 Kompatibel mit **Baileys API 1.7.2**
|
|
874
|
-
|
|
875
|
-
### Version 2.0.2
|
|
876
|
-
|
|
877
|
-
- 📖 **README Glow-Up** – Version 2.0.2, Badges & Changelog
|
|
878
|
-
- 🔔 **Update-Check** – Liest Version von **npm-Registry** (registry.npmjs.org), nur 1× pro Prozess
|
|
879
|
-
- ✨ Semver-Vergleich für „Update verfügbar“ nur bei wirklich neuerer Version
|
|
880
|
-
- 🎨 **QR-Code** & **Message ID** – unverändert
|
|
881
|
-
- 🔄 Kompatibel mit **Baileys API 1.7.2**
|
|
882
|
-
|
|
883
|
-
### Version 2.0.1
|
|
884
|
-
|
|
885
|
-
- 🔄 Upstream aus Backup Baileys · LID in Pairing · historySyncConfig · getWebInfo · Defaults
|
|
886
|
-
|
|
887
|
-
### Version 2.0.0
|
|
888
|
-
|
|
889
|
-
- 🔄 Upstream aus Backup Baileys – validate-connection, Defaults & Pairing angeglichen
|
|
890
|
-
- 🔐 LID in Pairing · 📤 historySyncConfig · 🌐 getWebInfo · ⚙️ Defaults
|
|
891
|
-
- 🎨 QR-Code & Message ID unverändert · WhatsApp-Version [2, 3000, 1032141294]
|
|
892
|
-
|
|
893
|
-
### Version 1.1.2
|
|
97
|
+
## Pairing And QR Notes
|
|
894
98
|
|
|
895
|
-
-
|
|
896
|
-
-
|
|
897
|
-
-
|
|
99
|
+
- `printQRInTerminal: true` keeps the QR flow active
|
|
100
|
+
- `requestPairingCode(phoneNumber, customCode?)` is available on the socket
|
|
101
|
+
- This package keeps the existing Neelegirl QR and pairing behavior instead of replacing it with upstream packaging changes
|
|
898
102
|
|
|
899
|
-
|
|
103
|
+
## Addressing And Device Notes
|
|
900
104
|
|
|
901
|
-
|
|
902
|
-
- 🎨 QR-Anzeige, Message ID System
|
|
105
|
+
The package keeps Neelegirl-specific message and device handling and now forwards the additional addressing fields more consistently:
|
|
903
106
|
|
|
904
|
-
|
|
107
|
+
- `key.remoteJid`
|
|
108
|
+
- `key.remoteJidAlt`
|
|
109
|
+
- `key.participant`
|
|
110
|
+
- `key.participantAlt`
|
|
111
|
+
- `key.addressingMode`
|
|
905
112
|
|
|
906
|
-
-
|
|
907
|
-
- ✨ Auto-Update-Check, QR-Anzeige, Message ID System
|
|
113
|
+
This is relevant for PN/LID mixed environments, Web-specific event handling and group/member tagging behavior.
|
|
908
114
|
|
|
909
|
-
|
|
115
|
+
## Exports Available In This Package
|
|
910
116
|
|
|
911
|
-
-
|
|
912
|
-
-
|
|
913
|
-
-
|
|
914
|
-
- 🚀 **Basiert auf** @whiskeysockets/baileys 7.0.0-rc.9
|
|
915
|
-
- 🛠️ **Verbesserte Socket-Stabilität**
|
|
916
|
-
- 🔐 **Verbesserte Pre-Key-Verwaltung**
|
|
117
|
+
- Root entry: `require('@neelegirl/baileys')`
|
|
118
|
+
- Compatibility root subpath: `require('@neelegirl/baileys/lib')`
|
|
119
|
+
- WAProto subpath: `require('@neelegirl/baileys/WAProto')`
|
|
917
120
|
|
|
918
|
-
|
|
121
|
+
Primary runtime exports include:
|
|
919
122
|
|
|
920
|
-
-
|
|
921
|
-
-
|
|
922
|
-
-
|
|
123
|
+
- `makeWASocket`
|
|
124
|
+
- `proto`
|
|
125
|
+
- `Browsers`
|
|
126
|
+
- `fetchLatestBaileysVersion`
|
|
127
|
+
- `fetchLatestWaWebVersion`
|
|
128
|
+
- `useMultiFileAuthState`
|
|
129
|
+
- `useSingleFileAuthState`
|
|
130
|
+
- `useMongoFileAuthState`
|
|
131
|
+
- `makeInMemoryStore`
|
|
132
|
+
- `makeCacheManagerStore`
|
|
923
133
|
|
|
924
|
-
|
|
134
|
+
## Requirements
|
|
925
135
|
|
|
926
|
-
|
|
136
|
+
- Node.js `>=16.0.0`
|
|
137
|
+
- A WhatsApp account that is allowed to link a Web client
|
|
927
138
|
|
|
928
|
-
|
|
139
|
+
## Limits And Honesty Notes
|
|
929
140
|
|
|
930
|
-
|
|
141
|
+
- This package does not claim to be a 1:1 upstream 7.x layout
|
|
142
|
+
- This package does not bundle every new upstream internal module
|
|
143
|
+
- This README does not claim unsupported helpers such as `createSmartMessageQueue()`
|
|
931
144
|
|
|
932
|
-
|
|
145
|
+
## License
|
|
933
146
|
|
|
934
|
-
|
|
147
|
+
MIT
|