@neelegirl/wa-api 1.6.0 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/readme.md CHANGED
@@ -1,676 +1,88 @@
1
- <div align="center">
1
+ # @neelegirl/wa-api
2
2
 
3
- # @neelegirl/wa-api
3
+ ![Neelegirl wa-api](https://files.catbox.moe/6np1ii.JPG)
4
4
 
5
- **Mehrfach-Sessions, QR-Login, Pairing-Code und vereinfachtes Messaging**
6
- **aufbauend auf dem gepflegten `@neelegirl/baileys`-Fork.**
5
+ High-level multi-session API wrapper for WhatsApp automation, built on `@neelegirl/baileys`.
7
6
 
8
- [![npm](https://img.shields.io/npm/v/@neelegirl/wa-api?style=for-the-badge&color=ff69b4&logo=npm)](https://www.npmjs.com/package/@neelegirl/wa-api)
9
- [![Dependency](https://img.shields.io/badge/@neelegirl%2Fbaileys-2.1.x-6f42c1?style=for-the-badge)](https://www.npmjs.com/package/@neelegirl/baileys)
10
- [![Node](https://img.shields.io/badge/Node-20+-2ea043?style=for-the-badge&logo=node.js)](https://nodejs.org)
7
+ ## Status
11
8
 
12
- <p align="center">
13
- <img src="https://files.catbox.moe/6np1ii.JPG" width="920" alt="Neelegirl wa-api Hero" />
14
- </p>
9
+ - Package version: `1.6.0`
10
+ - Runtime: Node.js `>=20`
11
+ - Core dependency: `@neelegirl/baileys` `^2.1.0`
15
12
 
16
- </div>
13
+ ## Features
17
14
 
18
- ## Überblick
15
+ - Multi-session start/stop with filesystem credentials
16
+ - QR flow via callback
17
+ - Pairing-code flow via callback
18
+ - Auto reconnect retries (up to 10 attempts)
19
+ - Message upsert/update callbacks with helper media savers
20
+ - `sendMessage`, `sendStatusMentions`, and low-level `relayMessage`
19
21
 
20
- `@neelegirl/wa-api` ist die bequemere Multi-Session-Schicht für Projekte, die nicht direkt auf der vollständigen Baileys-Oberfläche arbeiten wollen. Das Paket nutzt `@neelegirl/baileys` als eigentliche WhatsApp-Web-Basis und stellt darauf ein kompakteres API-Set für Sessions, Event-Hooks und das Senden von Nachrichten bereit.
21
-
22
- ## Update-Stand
23
-
24
- - abgestimmt auf `@neelegirl/baileys@2.1.x`
25
- - Dokumentation auf den realen Dist-Exports bereinigt
26
- - Bild/Branding modernisiert
27
- - Hinweise ergänzt, was lokal funktioniert und was bewusst nicht behauptet wird
28
-
29
- **Wichtig:** `wa-api` baut auf dem aktualisierten Neelegirl-Baileys-Fork auf. Es ist keine eigenständige Neuimplementierung von WhiskeySockets/Baileys, sondern eine Wrapper-Schicht darüber.
30
-
31
- ## Installation
22
+ ## Install
32
23
 
33
24
  ```bash
34
- npm install @neelegirl/wa-api @neelegirl/baileys
25
+ npm install @neelegirl/wa-api
35
26
  ```
36
27
 
37
- oder:
38
-
39
- ```bash
40
- yarn add @neelegirl/wa-api @neelegirl/baileys
41
- ```
42
-
43
- ## Voraussetzungen
44
-
45
- - Node.js `20+`
46
- - WhatsApp Multi-Device-Konto
47
- - persistenter Speicherort für Sessiondaten
48
-
49
- ## Schnellstart
28
+ ## Quick Start
50
29
 
51
30
  ```js
52
31
  const wa = require('@neelegirl/wa-api')
53
32
 
54
- async function bootstrap() {
55
- await wa.startSession('main-session', {
56
- printQR: true
57
- })
58
-
59
- console.log('Session gestartet')
60
- }
61
-
62
- wa.onConnected((sessionId) => {
63
- console.log(`[${sessionId}] verbunden`)
33
+ wa.onQRUpdated(({ sessionId, qr }) => {
34
+ console.log('QR for session:', sessionId)
35
+ console.log(qr)
64
36
  })
65
37
 
66
- wa.onDisconnected((sessionId) => {
67
- console.log(`[${sessionId}] getrennt`)
38
+ wa.onConnected((sessionId) => {
39
+ console.log('connected:', sessionId)
68
40
  })
69
41
 
70
- wa.onMessageReceived(async ({ sessionId, key, message }) => {
71
- const jid = key.remoteJid
72
- const text = message?.conversation || message?.extendedTextMessage?.text || ''
42
+ wa.onMessageReceived(async (msg) => {
43
+ const sessionId = msg.sessionId
44
+ const jid = msg.key?.remoteJid
45
+ const text = msg.message?.conversation || msg.message?.extendedTextMessage?.text || ''
73
46
 
74
- if (text.toLowerCase() === 'ping') {
47
+ if (jid && text.toLowerCase() === 'ping') {
75
48
  await wa.sendMessage(sessionId, jid, { text: 'pong' })
76
49
  }
77
50
  })
78
51
 
79
- bootstrap().catch(console.error)
80
- ```
81
-
82
- ## Session-API
83
-
84
- ### Starten
85
-
86
- ```js
87
- await wa.startSession('session-a', { printQR: true })
88
-
89
- await wa.startSessionWithPairingCode('session-b', {
90
- phoneNumber: '491234567890'
91
- })
92
- ```
93
-
94
- ### Verwalten
95
-
96
- ```js
97
- const all = wa.getAllSession()
98
- const one = wa.getSession('session-a')
99
-
100
- await wa.deleteSession('session-a')
101
- await wa.loadSessionsFromStorage()
102
- ```
103
-
104
- ## Messaging
105
-
106
- Die Dist-API bietet einen universellen `sendMessage`-Wrapper über die aktive Session:
107
-
108
- ```js
109
- await wa.sendMessage('session-a', '491234567890@s.whatsapp.net', {
110
- text: 'Hallo aus wa-api'
111
- })
112
- ```
113
-
114
- Zusätzlich gibt es `relayMessage`, wenn du gezielt weiterleiten bzw. rohe Baileys-Pfade der Session nutzen willst.
115
-
116
- ## Event-Hooks
117
-
118
- Vorhandene Event-Helper im Dist-Build:
119
-
120
- - `onMessageReceived(listener)`
121
- - `onQRUpdated(listener)`
122
- - `onConnected(listener)`
123
- - `onDisconnected(listener)`
124
- - `onConnecting(listener)`
125
- - `onMessageUpdate(listener)`
126
- - `onPairingCode(listener)`
127
-
128
- ## Konsole beim Start
129
-
130
- Diese Zustände sind beim echten Start normal:
131
-
132
- - QR wird im Terminal angezeigt, wenn noch keine Session gespeichert ist
133
- - Pairing-Code wird ausgegeben, wenn du die Pairing-Variante nutzt
134
- - `connected`/`disconnected` wechseln bei Reconnects sauber
135
- - nach `creds.update` bleibt die Session für Folgestarts erhalten
136
-
137
- ## Was wirklich funktioniert
138
-
139
- - mehrere parallele Sessions
140
- - Sessionstart per QR
141
- - Sessionstart per Pairing-Code
142
- - Nachrichtenversand über aktive Sessions
143
- - Sessionzugriff über `getSession()` für tiefergehende eigene Arbeit
144
- - Event-Listener für eingehende Nachrichten und Verbindungsstatus
145
-
146
- ## Was bewusst **nicht** behauptet wird
147
-
148
- - kein separater, vollständig dokumentierter Source-Build im Paket selbst
149
- - kein vollständiger Ersatz für das volle Baileys-API-Surface
150
- - kein Anspruch auf vollständigen Upstream-Gleichstand in jeder internen Implementierungsdetailschicht
151
-
152
- ## Empfehlung für produktive Nutzung
153
-
154
- - `@neelegirl/baileys` und `@neelegirl/wa-api` immer gemeinsam aktualisieren
155
- - Sessionordner außerhalb flüchtiger Deploy-Ordner speichern
156
- - bei Multi-Session-Projekten eigene Health-/Reconnect-Logs ergänzen
157
-
158
- ## Lizenz
159
-
160
- `wa-api` bleibt die einfache Bedienebene. Die technische WhatsApp-Web-Basis stammt aus `@neelegirl/baileys`, das selektiv auf aktuellem WhiskeySockets/Baileys-Wissen aufsetzt.
161
- image: { url: './bild.jpg' },
162
- caption: 'Schönes Bild! ✨'
163
- });
164
- ```
165
-
166
- #### 3. **Video**
167
-
168
- ```javascript
169
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
170
- video: { url: './video.mp4' },
171
- caption: 'Mein Video! 🎬'
172
- });
173
- ```
174
-
175
- #### 4. **GIF (als Video)**
176
-
177
- ```javascript
178
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
179
- video: { url: './animation.mp4' },
180
- gifPlayback: true, // Wichtig für GIFs!
181
- caption: 'Kawaii GIF! ✨'
182
- });
183
- ```
184
-
185
- #### 5. **Audio/Sprachnachricht**
186
-
187
- ```javascript
188
- const fs = require('fs');
189
-
190
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
191
- audio: fs.createReadStream('./audio.ogg'),
192
- mimetype: 'audio/ogg',
193
- ptt: true // Push-to-Talk (Sprachnachricht)
194
- });
195
- ```
196
-
197
- #### 6. **Dokument**
198
-
199
- ```javascript
200
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
201
- document: {
202
- url: './dokument.pdf',
203
- filename: 'Wichtiges Dokument.pdf'
204
- },
205
- mimetype: 'application/pdf'
206
- });
207
- ```
208
-
209
- #### 7. **Umfrage (Poll)**
210
-
211
- ```javascript
212
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
213
- poll: {
214
- name: 'Was ist deine Lieblingsfarbe?',
215
- values: ['Rot', 'Blau', 'Grün', 'Gelb'],
216
- selectableCount: 1 // Anzahl der auswählbaren Optionen
217
- }
218
- });
219
- ```
220
-
221
- #### 8. **Reaktion**
222
-
223
- ```javascript
224
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
225
- react: {
226
- text: '❤️', // Emoji
227
- key: message.key // Key der Nachricht
228
- }
229
- });
230
-
231
- // Reaktion entfernen
232
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
233
- react: {
234
- text: '', // Leerer String entfernt Reaktion
235
- key: message.key
236
- }
237
- });
238
- ```
239
-
240
- #### 9. **Nachricht löschen**
241
-
242
- ```javascript
243
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
244
- delete: message.key // Für alle löschen
245
- });
246
- ```
247
-
248
- #### 10. **Nachricht anpinnen**
249
-
250
- ```javascript
251
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
252
- pin: {
253
- type: 1, // 0 = entfernen, 1 = anpinnen
254
- time: 86400, // Sekunden (24h = 86400)
255
- key: message.key
256
- }
257
- });
258
- ```
259
-
260
- #### 11. **Kontakt teilen**
261
-
262
- ```javascript
263
- const vcard = `BEGIN:VCARD
264
- VERSION:3.0
265
- FN:Max Mustermann
266
- TEL;type=CELL;type=VOICE;waid=491234567890:+49 123 4567890
267
- END:VCARD`;
268
-
269
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
270
- contacts: {
271
- displayName: 'Max Mustermann',
272
- contacts: [{ vcard }]
273
- }
274
- });
275
- ```
276
-
277
- #### 12. **Standort**
278
-
279
- ```javascript
280
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
281
- location: {
282
- degreesLatitude: 52.520008,
283
- degreesLongitude: 13.404954
284
- }
285
- });
286
- ```
287
-
288
- #### 13. **Nachricht weiterleiten**
289
-
290
- ```javascript
291
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
292
- forward: originalMessage // Originale Nachricht
293
- });
294
- ```
295
-
296
- #### 14. **Mit Quote (Antwort)**
297
-
298
- ```javascript
299
- await onimai.sendMessage(
300
- 'session1',
301
- '491234567890@s.whatsapp.net',
302
- {
303
- text: 'Das ist eine Antwort!'
304
- },
305
- {
306
- quoted: originalMessage // Originale Nachricht
307
- }
308
- );
309
- ```
310
-
311
- #### 15. **Mit Erwähnung**
312
-
313
- ```javascript
314
- await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
315
- text: '@491111111111 Hallo!',
316
- mentions: ['491111111111@s.whatsapp.net']
317
- });
318
- ```
319
-
320
- ---
321
-
322
- ## 🎧 Event Listener
323
-
324
- ### 📥 **Nachrichten empfangen**
325
-
326
- ```javascript
327
- onimai.onMessageReceived(async (msg) => {
328
- const {
329
- sessionId, // Session-ID
330
- key, // Message-Key (id, remoteJid, fromMe)
331
- message, // Nachrichteninhalt
332
- messageTimestamp // Zeitstempel
333
- } = msg;
334
-
335
- const from = key.remoteJid;
336
- const text = message?.conversation || message?.extendedTextMessage?.text || '';
337
-
338
- console.log(`📥 Neue Nachricht von ${from}: ${text}`);
339
-
340
- // Medien speichern (wenn vorhanden)
341
- if (message?.imageMessage) {
342
- await msg.saveImage('./downloads/');
343
- }
344
- if (message?.videoMessage) {
345
- await msg.saveVideo('./downloads/');
346
- }
347
- if (message?.documentMessage) {
348
- await msg.saveDocument('./downloads/');
349
- }
350
- });
52
+ wa.startSession('main', { printQR: true }).catch(console.error)
351
53
  ```
352
54
 
353
- ### 🔄 **Nachrichten-Updates**
354
-
355
- ```javascript
356
- onimai.onMessageUpdate((sessionId, data) => {
357
- const {
358
- update, // Update-Objekt
359
- messageStatus // Lesbarer Status
360
- } = data;
361
-
362
- console.log(`📊 Status Update: ${messageStatus}`);
363
- // Mögliche Status: 'sent', 'delivered', 'read', 'failed'
364
- });
365
- ```
366
-
367
- ### 🔌 **Verbindungs-Events**
368
-
369
- ```javascript
370
- // Verbunden
371
- onimai.onConnected((sessionId) => {
372
- console.log(`✅ Session ${sessionId} ist jetzt verbunden!`);
373
- });
374
-
375
- // Verbindung wird hergestellt
376
- onimai.onConnecting((sessionId) => {
377
- console.log(`🔄 Session ${sessionId} verbindet...`);
378
- });
379
-
380
- // Getrennt
381
- onimai.onDisconnected((sessionId) => {
382
- console.log(`❌ Session ${sessionId} wurde getrennt`);
383
- });
384
- ```
385
-
386
- ### 📱 **QR-Code Updates**
387
-
388
- ```javascript
389
- onimai.onQRUpdated((info) => {
390
- const { sessionId, qr } = info;
391
- console.log(`📱 Neuer QR-Code für Session ${sessionId}:`);
392
- console.log(qr);
393
-
394
- // Du kannst den QR-Code auch in eine Datei speichern oder auf einer Webseite anzeigen
395
- });
396
- ```
397
-
398
- ### 🔑 **Pairing-Code**
399
-
400
- ```javascript
401
- onimai.onPairingCode((sessionId, code) => {
402
- console.log(`🔑 Pairing-Code für Session ${sessionId}: ${code}`);
403
- });
404
- ```
405
-
406
- ---
407
-
408
- ## 🔧 Erweiterte Funktionen
409
-
410
- ### 💾 **Medien speichern**
411
-
412
- ```javascript
413
- onimai.onMessageReceived(async (msg) => {
414
- // Bild speichern
415
- if (msg.message?.imageMessage) {
416
- const path = await msg.saveImage('./downloads/');
417
- console.log('✅ Bild gespeichert:', path);
418
- }
419
-
420
- // Video speichern
421
- if (msg.message?.videoMessage) {
422
- const path = await msg.saveVideo('./downloads/');
423
- console.log('✅ Video gespeichert:', path);
424
- }
425
-
426
- // Dokument speichern
427
- if (msg.message?.documentMessage) {
428
- const path = await msg.saveDocument('./downloads/');
429
- console.log('✅ Dokument gespeichert:', path);
430
- }
431
- });
432
- ```
433
-
434
- ### 🔄 **Multi-Session Beispiel**
435
-
436
- ```javascript
437
- // Mehrere Sessions gleichzeitig starten
438
- const sessions = ['session1', 'session2', 'session3'];
439
-
440
- for (const sessionId of sessions) {
441
- await onimai.startSession(sessionId, { printQR: true });
442
- }
443
-
444
- // Nachricht an alle Sessions senden
445
- const message = { text: 'Broadcast-Nachricht! 📢' };
446
- const recipients = ['491234567890@s.whatsapp.net'];
447
-
448
- for (const sessionId of sessions) {
449
- for (const recipient of recipients) {
450
- await onimai.sendMessage(sessionId, recipient, message);
451
- }
452
- }
453
- ```
454
-
455
- ### 🚀 **Smart Queue Integration**
456
-
457
- ```javascript
458
- // Nutze die Smart Message Queue von Baileys für zuverlässiges Bulk-Messaging
459
- const baileys = require('@neelegirl/baileys');
460
- const session = onimai.getSession('session1');
461
-
462
- if (session) {
463
- const queue = baileys.createSmartMessageQueue(session, {
464
- maxRetries: 5,
465
- retryDelay: 2000,
466
- maxConcurrent: 3
467
- });
468
-
469
- // Viele Nachrichten zur Queue hinzufügen
470
- const recipients = ['491234567890@s.whatsapp.net', '499876543210@s.whatsapp.net'];
471
-
472
- for (const jid of recipients) {
473
- await queue.add({
474
- jid,
475
- message: { text: 'Wichtige Ankündigung! 📢' },
476
- priority: 'high'
477
- });
478
- }
479
- }
480
- ```
481
-
482
- ---
483
-
484
- ## 📚 Vollständige API-Referenz
485
-
486
- ### 🔌 **Session-Funktionen**
487
-
488
- | Funktion | Beschreibung | Beispiel |
489
- |----------|-------------|----------|
490
- | `startSession(id, options)` | Startet eine Session mit QR-Code | `await onimai.startSession('session1')` |
491
- | `startSessionWithPairingCode(id, options)` | Startet mit Pairing-Code | `await onimai.startSessionWithPairingCode('session2', { phoneNumber: '491234567890' })` |
492
- | `getAllSession()` | Gibt alle aktiven Sessions zurück | `const sessions = onimai.getAllSession()` |
493
- | `getSession(id)` | Gibt eine spezifische Session zurück | `const session = onimai.getSession('session1')` |
494
- | `deleteSession(id)` | Löscht eine Session | `await onimai.deleteSession('session1')` |
495
- | `loadSessionsFromStorage()` | Lädt alle Sessions aus Storage | `const loaded = await onimai.loadSessionsFromStorage()` |
496
-
497
- ### 💬 **Nachrichten-Funktionen**
498
-
499
- | Funktion | Beschreibung |
500
- |----------|-------------|
501
- | `sendMessage(sessionId, jid, content, options)` | Sendet eine Nachricht |
502
-
503
- **Content-Typen:**
504
- - `{ text: string }` - Text
505
- - `{ image: { url: string }, caption?: string }` - Bild
506
- - `{ video: { url: string }, caption?: string, gifPlayback?: boolean }` - Video/GIF
507
- - `{ audio: Stream, mimetype: string, ptt?: boolean }` - Audio
508
- - `{ document: { url: string, filename?: string }, mimetype: string }` - Dokument
509
- - `{ poll: { name: string, values: string[], selectableCount: number } }` - Umfrage
510
- - `{ react: { text: string, key: MessageKey } }` - Reaktion
511
- - `{ delete: MessageKey }` - Löschen
512
- - `{ pin: { type: number, time: number, key: MessageKey } }` - Anpinnen
513
- - `{ contacts: { displayName: string, contacts: Array } }` - Kontakt
514
- - `{ location: { degreesLatitude: number, degreesLongitude: number } }` - Standort
515
- - `{ forward: Message }` - Weiterleiten
516
-
517
- ### 🎧 **Event-Listener**
518
-
519
- | Event | Beschreibung | Callback-Parameter |
520
- |-------|-------------|-------------------|
521
- | `onMessageReceived` | Neue Nachricht empfangen | `(msg: Message)` |
522
- | `onMessageUpdate` | Nachrichten-Update | `(sessionId: string, data: UpdateData)` |
523
- | `onConnected` | Session verbunden | `(sessionId: string)` |
524
- | `onConnecting` | Session verbindet | `(sessionId: string)` |
525
- | `onDisconnected` | Session getrennt | `(sessionId: string)` |
526
- | `onQRUpdated` | QR-Code aktualisiert | `(info: { sessionId: string, qr: string })` |
527
- | `onPairingCode` | Pairing-Code erhalten | `(sessionId: string, code: string)` |
528
-
529
- ---
530
-
531
- ## ⚠️ Wichtige Hinweise
532
-
533
- ### 🚨 **Disclaimer**
534
-
535
- > ⚠️ **WICHTIG**: Diese Library funktioniert **ausschließlich** mit **@neelegirl/baileys**!
536
- >
537
- > - ✖️ **Kein Spam** oder Massennachrichten
538
- > - ✖️ **Kein Missbrauch** für unethische Zwecke
539
- > - ✖️ **Keine Stalkerware** oder automatisierte Überwachung
540
- > - ✔️ **Verantwortungsvoller Gebrauch** wird erwartet
541
-
542
- ### 🔒 **Sicherheit**
543
-
544
- - **Nie** deine Session-Daten öffentlich teilen
545
- - **Immer** `.gitignore` für Credentials-Ordner verwenden
546
- - **Regelmäßig** Backups erstellen
547
- - **Sichere** Passwörter für deine Server verwenden
548
-
549
- ### 💡 **Best Practices**
550
-
551
- 1. **Error-Handling**: Immer try-catch für wichtige Operationen
552
- 2. **Rate-Limiting**: Nutze Smart Message Queue für Bulk-Messaging
553
- 3. **Session-Management**: Sessions ordentlich verwalten und löschen wenn nicht mehr benötigt
554
- 4. **Updates**: Regelmäßig auf Updates prüfen (automatisch aktiviert, nur einmal angezeigt)
555
-
556
- ---
557
-
558
- ## 🆕 Was ist neu in Version 1.5.1?
559
-
560
- ### ✨ **Neue Features & Glow-Up**
561
-
562
- - 📖 **README Glow-Up** – Version 1.5.1, Badges & Changelog
563
- - ✅ **Kompatibilität** mit **@neelegirl/baileys 2.0.4** & **Baileys API 1.7.2**
564
- - 🔔 **Update-Check** – Liest Version von **npm-Registry** (registry.npmjs.org), nur 1× pro Prozess
565
- - 📦 **Abhängigkeit** auf `@neelegirl/baileys@^2.0.4` (empfohlen 2.0.4)
566
- - 🚀 **Smart Queue Ready** · QR · Pairing · Auto-Reconnect
567
- - 💎 **Multi-Device** & Session-Management optimiert
568
-
569
- ### 🔄 **Verbesserungen**
570
-
571
- - Semver-Vergleich für „Update verfügbar“ nur bei wirklich neuerer Version
572
- - Verbesserte Fehlerbehandlung & Stabilität
573
- - Schnellerer Verbindungsaufbau · Bessere LID-Unterstützung
574
-
575
- ---
576
-
577
- ## 💬 Support & Community
578
-
579
- <div align="center">
580
-
581
- ### 🌸 **Made with Love by @neelegirl** 🌸
582
-
583
- [![GitHub](https://img.shields.io/badge/GitHub-@neelegirl-pink?style=for-the-badge&logo=github)](https://github.com/neelegirl)
584
- [![Email](https://img.shields.io/badge/Email-Support-pink?style=for-the-badge&logo=gmail)](mailto:neelehoven@gmail.com)
585
- [![Docs](https://img.shields.io/badge/Docs-wa--api.org-pink?style=for-the-badge)](https://wa-api.org)
586
-
587
- **⭐ Wenn dir dieses Projekt gefällt, gib ihm ein Star auf GitHub! ⭐**
588
-
589
- </div>
590
-
591
- ---
592
-
593
- ## 📝 Changelog
594
-
595
- ### Version 1.5.1 (Aktuell) 🎉
596
-
597
- - 📖 **README Glow-Up** – Version 1.5.1, Baileys 2.0.5 Badges
598
- - 🔔 Update-Check von **npm-Registry** (registry.npmjs.org), nur 1× pro Prozess
599
- - ✨ Kompatibilität mit **@neelegirl/baileys 2.0.4** & **Baileys API 1.7.2**
600
- - 📦 Abhängigkeit `@neelegirl/baileys@^2.0.4`
601
-
602
- ### Version 1.3.2
603
-
604
- - 📖 **README Glow-Up** – Version 1.3.2, Baileys 2.0.2 Badges
605
- - 🔔 Update-Check von **npm-Registry** (registry.npmjs.org), nur 1× pro Prozess
606
- - ✨ Kompatibilität mit **@neelegirl/baileys 2.0.2** & **Baileys API 1.7.2**
607
- - 📦 Abhängigkeit `@neelegirl/baileys@^2.0.0`
608
- - 🚀 Smart Queue Ready · Semver-Vergleich für Update-Hinweis
609
- - 💎 Multi-Device & Session-Management optimiert
610
- - 🚀 Smart Queue Ready · Semver-Vergleich für Update-Hinweis
611
- - 💎 Multi-Device & Session-Management optimiert
612
-
613
- ### Version 1.3.1
614
-
615
- - 📖 README Glow-Up · Changelog · Baileys 2.0.2
616
-
617
- ### Version 1.2.5
618
-
619
- - 📖 README Glow-Up · Changelog
620
-
621
- ### Version 1.2.4
622
-
623
- - 📖 README Glow-Up · Changelog
624
-
625
- ### Version 1.2.3
626
-
627
- - 📖 README Glow-Up · Changelog
628
-
629
- ### Version 1.2.2
630
-
631
- - 📖 README Glow-Up · Changelog ergänzt
632
-
633
- ### Version 1.2.1
634
-
635
- - 📖 README Glow-Up · Update-Check von npm-Registry · Baileys 2.0.2 Badges
636
-
637
- ### Version 1.2.0
638
-
639
- - 📖 README Glow-Up · Baileys 2.0.0 Badges
640
- - ✨ Kompatibilität mit @neelegirl/baileys 2.0.0 & Baileys API 1.7.2
641
- - 🚀 Smart Queue Ready · Auto-Update-Check (1x pro Prozess)
642
-
643
- ### Version 1.1.1
644
-
645
- - 📖 README Glow-Up · Kompatibilität mit @neelegirl/baileys 1.7.1
646
- - 🚀 Smart Queue Ready, Auto-Update-Check
647
-
648
- ### Version 1.1.0
649
-
650
- - ✨ Kompatibilität mit @neelegirl/baileys 1.7.0
651
- - 🚀 Smart Queue Ready, Auto-Update-Check
652
-
653
- ### Version 1.0.10
654
-
655
- - ✨ Automatische Update-Prüfung hinzugefügt
656
- - 🎨 Verbesserte QR-Code-Anzeige
657
- - 🔄 Kompatibilität mit @neelegirl/baileys 1.6.6
658
- - 🚀 Verbesserte Stabilität
659
- - 🐛 Bugfixes für Session-Management
660
-
661
- ### Version 1.0.9
55
+ ## API Surface
662
56
 
663
- - 🔔 Update-Benachrichtigung hinzugefügt
664
- - 💎 Optimierungen für Multi-Device
57
+ - Session lifecycle
58
+ - `startSession(sessionId, options)`
59
+ - `startSessionWithPairingCode(sessionId, { phoneNumber }, pairingCode?)`
60
+ - `deleteSession(sessionId)`
61
+ - `getSession(sessionId)`
62
+ - `getAllSession()`
63
+ - `loadSessionsFromStorage()`
665
64
 
666
- ---
65
+ - Messaging
66
+ - `sendMessage(sessionId, jidOrPhone, content, options?)`
67
+ - `sendStatusMentions(sessionId, content, options?)`
68
+ - `relayMessage(sessionId, jidOrPhone, content, options?)`
667
69
 
668
- <div align="center">
70
+ - Events
71
+ - `onMessageReceived(listener)`
72
+ - `onMessageUpdate(listener)`
73
+ - `onQRUpdated(listener)`
74
+ - `onConnected(listener)`
75
+ - `onConnecting(listener)`
76
+ - `onDisconnected(listener)`
77
+ - `onPairingCode(listener)`
669
78
 
670
- ### *Stay kawaii, stay connected – Onimai forever!* ✨
79
+ ## Operational Notes
671
80
 
672
- **🌸 Made with Love & Glitter 🌸**
81
+ - Credentials are stored under `wa_credentials/<session>_credentials`.
82
+ - The package performs a lightweight npm update check once per process start.
83
+ - No dedicated Word2Web module is shipped in this package.
673
84
 
674
- [⬆️ Nach oben](#-neelegirlwa-api)
85
+ ## Legal
675
86
 
676
- </div>
87
+ This project is not affiliated with WhatsApp.
88
+ Use responsibly and comply with applicable laws and platform terms.