@deathnaitsa/wa-api 2.0.3 → 2.0.5

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
@@ -2,33 +2,68 @@
2
2
 
3
3
  Eine minimalistische, stabile WhatsApp Multi-Device API basierend auf Baileys mit erweiterten Session-Management und Statistik-Features.
4
4
 
5
+ ## 📑 Inhaltsverzeichnis
6
+
7
+ - [Status](#-status)
8
+ - [Features](#-features)
9
+ - [Installation](#-installation)
10
+ - [Quick Start](#-quick-start)
11
+ - [ES Modules](#es-modules-empfohlen)
12
+ - [CommonJS](#commonjs)
13
+ - [API Dokumentation](#-api-dokumentation)
14
+ - [Session Management](#-session-management-implementiert)
15
+ - [Nachrichten](#-nachrichten-implementiert)
16
+ - [Media & Stickers](#-media--stickers-implementiert)
17
+ - [Group Management](#-group-management-implementiert)
18
+ - [Advanced Messaging](#-advanced-messaging-implementiert)
19
+ - [Contact Management](#-contact-management-implementiert)
20
+ - [Presence & Typing](#-presence--typing-implementiert)
21
+ - [Poll Messages](#-poll-messages-implementiert)
22
+ - [Status/Stories](#-statusstories-implementiert)
23
+ - [Broadcast Lists](#-broadcast-lists-implementiert)
24
+ - [Message Queue & Rate Limiting](#-message-queue--rate-limiting-implementiert)
25
+ - [Webhook Support](#-webhook-support-implementiert)
26
+ - [Auto-Reconnect](#-auto-reconnect-implementiert)
27
+ - [Events](#-events-implementiert)
28
+ - [Statistiken](#-statistiken-implementiert)
29
+ - [Bot-Beispiel](#-bot-beispiel)
30
+ - [Statistik-System](#-statistik-system)
31
+ - [Architektur](#-architektur)
32
+ - [Technologie](#-technologie)
33
+ - [Performance](#-performance)
34
+ - [Bekannte Einschränkungen](#-bekannte-einschränkungen--design-entscheidungen)
35
+ - [Sicherheit](#-sicherheit)
36
+ - [Lizenz](#-lizenz)
37
+
5
38
  ## ⚠️ Status
6
39
 
7
- **🚧 Work in Progress** - Die API ist funktional und stabil, aber noch nicht feature-complete. Aktive Entwicklung läuft.
40
+ **🎉 Feature-Complete v2.0** - Die API ist stabil, vollständig und production-ready!
8
41
 
9
42
  ### ✅ Implementiert
10
- - Multi-Session Support
11
- - Session Control (Start, Stop, Restart, Pause, Resume)
12
- - Event System (Messages, Connected, Disconnected)
13
- - Statistik-System mit JSON-Persistenz
14
- - Message Parsing mit Mentions & Quoted Messages
15
- - Uptime & Performance Tracking
16
- - **Media Support** (Bilder, Videos, GIF-Playback)
17
- - **Sticker Support** (Bilder, GIFs, Videos → Sticker mit wa-sticker-formatter)
18
- - Media Download
19
-
20
- ### 🚧 In Entwicklung
21
- - Group Management
22
- - Contact Handling
23
- - Message Reactions
24
- - Status/Story Features
25
- - Typing Indicators
26
-
27
- ### 📋 Geplant
28
- - Auto-Reconnect Optionen
29
- - Message Queue System
30
- - Rate Limiting
31
- - Webhook Support
43
+ - Multi-Session Support
44
+ - Session Control (Start, Stop, Restart, Pause, Resume)
45
+ - Event System (Messages, Connected, Disconnected)
46
+ - Statistik-System mit JSON-Persistenz
47
+ - Message Parsing mit Mentions & Quoted Messages
48
+ - Uptime & Performance Tracking
49
+ - **Media Support** (Bilder, Videos, GIF-Playback)
50
+ - **Sticker Support** (Bilder, GIFs, Videos → Sticker mit wa-sticker-formatter)
51
+ - Media Download
52
+ - ✅ **Group Management** (Erstellen, Bearbeiten, Teilnehmer verwalten)
53
+ - **Advanced Messaging** (Audio, Document, Location, Contact, Reactions)
54
+ - **Contact Management** (Kontakte abrufen, Profilbilder, Status)
55
+ - **Presence & Typing** (Tipp-Indikatoren, Aufnahme-Status)
56
+ - **Poll Messages** (Umfragen erstellen)
57
+ - ✅ **Status/Stories** (Status hochladen)
58
+ - **Broadcast Lists** (Massenversand)
59
+ - ✅ **Message Queue & Rate Limiting** (Queue-System mit Prioritäten)
60
+ - **Webhook Support** (Externe Integrationen)
61
+ - ✅ **Auto-Reconnect** (Exponential Backoff, Max Retries)
62
+
63
+ ### 📋 Geplante Erweiterungen
64
+ - Message Editing (wenn Baileys unterstützt)
65
+ - Business API Features
66
+ - Multi-Device Sync Improvements
32
67
 
33
68
  ## ✨ Features
34
69
 
@@ -47,8 +82,13 @@ Eine minimalistische, stabile WhatsApp Multi-Device API basierend auf Baileys mi
47
82
  npm install
48
83
  ```
49
84
 
85
+ **Unterstützt beide Formate:**
86
+ - ✅ **ES Modules** (import)
87
+ - ✅ **CommonJS** (require)
88
+
50
89
  ## 🚀 Quick Start
51
90
 
91
+ ### ES Modules (empfohlen)
52
92
  ```javascript
53
93
  import { startSession, onMessage, sendText } from '@deathnaitsa/wa-api';
54
94
 
@@ -63,6 +103,23 @@ onMessage(async (msg) => {
63
103
  });
64
104
  ```
65
105
 
106
+ ### CommonJS
107
+ ```javascript
108
+ const { startSession, onMessage, sendText } = require('@deathnaitsa/wa-api');
109
+
110
+ (async () => {
111
+ await startSession('bot');
112
+
113
+ onMessage(async (msg) => {
114
+ console.log(`📨 ${msg.from}: ${msg.message}`);
115
+
116
+ if (msg.message === '!ping') {
117
+ await sendText(msg.sessionId, msg.from, 'Pong! 🏓');
118
+ }
119
+ });
120
+ })();
121
+ ```
122
+
66
123
  ## 📖 API Dokumentation
67
124
 
68
125
  ### Verfügbare Funktionen
@@ -101,6 +158,85 @@ onMessage((msg) => {
101
158
  });
102
159
  ```
103
160
 
161
+ **Message Object Struktur:**
162
+
163
+ Das `msg` Object in `onMessage()` enthält folgende Felder:
164
+
165
+ ```javascript
166
+ {
167
+ // Basis-Informationen
168
+ sessionId: 'bot1', // Session ID
169
+ id: '3EB0XXXXX', // Nachrichten-ID
170
+ from: '4915123456789@s.whatsapp.net', // Chat JID
171
+ fromMe: false, // Vom Bot gesendet?
172
+ name: 'Max Mustermann', // Absender-Name
173
+ message: 'Hallo, wie geht es?', // Nachrichtentext
174
+ timestamp: 1703001234, // Unix Timestamp
175
+
176
+ // Gruppen-Informationen
177
+ isGroup: false, // Ist Gruppenchat?
178
+ participant: '4915123456789@s.whatsapp.net', // Absender in Gruppe
179
+
180
+ // Erweiterte Features
181
+ type: 'conversation', // Nachrichtentyp
182
+ mentions: ['4915987654321@s.whatsapp.net'], // Erwähnte Kontakte (@mentions)
183
+ quoted: { /* quotedMessage Object */ }, // Zitierte Nachricht
184
+
185
+ // Raw Baileys Message (für erweiterte Nutzung)
186
+ raw: { /* vollständiges Baileys message object */ }
187
+ }
188
+ ```
189
+
190
+ **Nachrichtentypen (`msg.type`):**
191
+ - `conversation` - Einfache Textnachricht
192
+ - `extendedTextMessage` - Text mit Links/Mentions
193
+ - `imageMessage` - Bild
194
+ - `videoMessage` - Video
195
+ - `audioMessage` - Audio/Voice
196
+ - `documentMessage` - Dokument
197
+ - `stickerMessage` - Sticker
198
+ - `locationMessage` - Standort
199
+ - `contactMessage` - Kontakt
200
+ - `pollCreationMessage` - Umfrage
201
+
202
+ **Beispiele:**
203
+
204
+ ```javascript
205
+ onMessage(async (msg) => {
206
+ // Text-Nachricht
207
+ if (msg.type === 'conversation' || msg.type === 'extendedTextMessage') {
208
+ console.log(`Text: ${msg.message}`);
209
+ }
210
+
211
+ // Gruppennachricht
212
+ if (msg.isGroup) {
213
+ console.log(`Gruppe: ${msg.from}`);
214
+ console.log(`Von: ${msg.participant}`);
215
+ }
216
+
217
+ // Erwähnungen (@mentions)
218
+ if (msg.mentions && msg.mentions.length > 0) {
219
+ console.log(`Erwähnt: ${msg.mentions.join(', ')}`);
220
+ }
221
+
222
+ // Antwort auf Nachricht (quoted)
223
+ if (msg.quoted) {
224
+ console.log(`Antwortet auf: ${msg.quoted}`);
225
+ }
226
+
227
+ // Media herunterladen
228
+ if (msg.type === 'imageMessage' || msg.type === 'videoMessage') {
229
+ const buffer = await downloadMedia(msg);
230
+ console.log(`Media heruntergeladen: ${buffer.length} bytes`);
231
+ }
232
+
233
+ // Auf Nachricht antworten
234
+ if (msg.message === '!ping') {
235
+ await client.replyMessage(msg.sessionId, msg, 'Pong! 🏓');
236
+ }
237
+ });
238
+ ```
239
+
104
240
  #### ✅ Media & Stickers (Implementiert)
105
241
  ```javascript
106
242
  import {
@@ -239,34 +375,457 @@ console.log({
239
375
  countReceivedMessage('bot1');
240
376
  ```
241
377
 
378
+ ### ✅ Poll Messages (Implementiert)
379
+ ```javascript
380
+ import { sendPoll } from '@deathnaitsa/wa-api';
381
+
382
+ // Umfrage mit Einzelauswahl
383
+ await sendPoll('bot1', 'nummer@s.whatsapp.net',
384
+ 'Was ist deine Lieblingsfarbe?',
385
+ ['Rot', 'Blau', 'Grün', 'Gelb'],
386
+ 1 // Nur 1 Option wählbar
387
+ );
388
+
389
+ // Umfrage mit Mehrfachauswahl
390
+ await sendPoll('bot1', 'groupId@g.us',
391
+ 'Welche Programmiersprachen nutzt du?',
392
+ ['JavaScript', 'Python', 'Java', 'C++', 'Go', 'Rust'],
393
+ 3 // Bis zu 3 Optionen wählbar
394
+ );
395
+ ```
396
+
397
+ ### ✅ Status/Stories (Implementiert)
398
+ ```javascript
399
+ import { uploadStatus, getStatuses } from '@deathnaitsa/wa-api';
400
+
401
+ // Text-Status hochladen
402
+ await uploadStatus('bot1', { text: 'Hallo Welt! 👋' });
403
+
404
+ // Bild-Status hochladen
405
+ await uploadStatus('bot1', {
406
+ image: './status-image.jpg',
407
+ caption: 'Schöner Tag! ☀️'
408
+ });
409
+
410
+ // Video-Status hochladen
411
+ await uploadStatus('bot1', {
412
+ video: './status-video.mp4',
413
+ caption: 'Check this out! 🎥'
414
+ });
415
+
416
+ // Status-Liste abrufen (wenn verfügbar)
417
+ const statuses = await getStatuses('bot1');
418
+ ```
419
+
420
+ ### ✅ Broadcast Lists (Implementiert)
421
+ ```javascript
422
+ import { sendBroadcast } from '@deathnaitsa/wa-api';
423
+
424
+ // Broadcast an mehrere Empfänger
425
+ const recipients = [
426
+ '4915123456789@s.whatsapp.net',
427
+ '4915987654321@s.whatsapp.net',
428
+ '4916612345678@s.whatsapp.net'
429
+ ];
430
+
431
+ const results = await sendBroadcast('bot1', recipients, {
432
+ text: '🎉 Wichtige Ankündigung für alle!'
433
+ });
434
+
435
+ // Ergebnisse prüfen
436
+ results.forEach(result => {
437
+ console.log(`${result.recipient}: ${result.success ? '✅' : '❌'}`);
438
+ });
439
+
440
+ // Broadcast mit Medien
441
+ await sendBroadcast('bot1', recipients, {
442
+ image: './announcement.jpg',
443
+ caption: 'Neues Update verfügbar!'
444
+ });
445
+ ```
446
+
447
+ ### ✅ Message Queue & Rate Limiting (Implementiert)
448
+ ```javascript
449
+ import {
450
+ queueMessage,
451
+ setRateLimit,
452
+ getQueueStatus,
453
+ clearQueue,
454
+ pauseQueue,
455
+ resumeQueue
456
+ } from '@deathnaitsa/wa-api';
457
+
458
+ // Rate Limit setzen (30 Nachrichten pro Minute)
459
+ setRateLimit('bot1', 30);
460
+
461
+ // Nachricht mit Priorität zur Queue hinzufügen
462
+ queueMessage('bot1', 'nummer@s.whatsapp.net',
463
+ { text: 'Normale Nachricht' },
464
+ 0 // Priorität: 0 = normal
465
+ );
466
+
467
+ queueMessage('bot1', 'nummer@s.whatsapp.net',
468
+ { text: 'Wichtige Nachricht!' },
469
+ 10 // Priorität: 10 = hoch (wird zuerst gesendet)
470
+ );
471
+
472
+ // Queue Status abrufen
473
+ const status = getQueueStatus('bot1');
474
+ console.log(`Queue: ${status.queueLength} Nachrichten`);
475
+ console.log(`Rate Limit: ${status.rateLimit.count}/${status.rateLimit.limit}`);
476
+
477
+ // Queue verwalten
478
+ clearQueue('bot1'); // Queue leeren
479
+ pauseQueue('bot1'); // Queue pausieren
480
+ resumeQueue('bot1'); // Queue fortsetzen
481
+ ```
482
+
483
+ **Vorteile:**
484
+ - 🚫 Verhindert Spam-Erkennung
485
+ - 📊 Automatisches Rate Limiting
486
+ - 🎯 Prioritäts-basierte Zustellung
487
+ - ⏸️ Pausieren/Fortsetzen möglich
488
+
489
+ ### ✅ Webhook Support (Implementiert)
490
+ ```javascript
491
+ import {
492
+ registerWebhook,
493
+ unregisterWebhook,
494
+ getWebhooks
495
+ } from '@deathnaitsa/wa-api';
496
+
497
+ // Webhook registrieren
498
+ const webhookId = registerWebhook(
499
+ 'https://your-server.com/webhook',
500
+ ['message', 'connected', 'disconnected'], // Events
501
+ 'your-secret-key' // Optional: für Signature Verification
502
+ );
503
+
504
+ console.log(`Webhook registriert: ${webhookId}`);
505
+
506
+ // Webhook entfernen
507
+ unregisterWebhook(webhookId);
508
+
509
+ // Alle Webhooks anzeigen
510
+ const webhooks = getWebhooks();
511
+ console.log(webhooks);
512
+ ```
513
+
514
+ **Webhook Payload:**
515
+ ```json
516
+ {
517
+ "event": "message",
518
+ "data": {
519
+ "sessionId": "bot1",
520
+ "from": "4915123456789@s.whatsapp.net",
521
+ "message": "Hallo!",
522
+ "timestamp": 1703001234567
523
+ },
524
+ "timestamp": 1703001234567
525
+ }
526
+ ```
527
+
528
+ **Signature Verification:**
529
+ ```javascript
530
+ const crypto = require('crypto');
531
+
532
+ function verifyWebhook(payload, signature, secret) {
533
+ const hash = crypto.createHmac('sha256', secret)
534
+ .update(payload)
535
+ .digest('hex');
536
+ return hash === signature;
537
+ }
538
+
539
+ // Im Webhook-Handler:
540
+ const signature = req.headers['x-webhook-signature'];
541
+ const isValid = verifyWebhook(req.body, signature, 'your-secret-key');
542
+ ```
543
+
544
+ ### ✅ Auto-Reconnect (Implementiert)
545
+ ```javascript
546
+ import { setAutoReconnect, getConnectionHealth } from '@deathnaitsa/wa-api';
547
+
548
+ // Auto-Reconnect aktivieren
549
+ setAutoReconnect(
550
+ 'bot1',
551
+ true, // enabled
552
+ 5, // maxRetries
553
+ 2 // backoff multiplier
554
+ );
555
+
556
+ // Verhalten:
557
+ // - 1. Versuch: nach 5 Sekunden
558
+ // - 2. Versuch: nach 10 Sekunden (5 * 2^1)
559
+ // - 3. Versuch: nach 20 Sekunden (5 * 2^2)
560
+ // - 4. Versuch: nach 40 Sekunden (5 * 2^3)
561
+ // - 5. Versuch: nach 80 Sekunden (5 * 2^4)
562
+
563
+ // Connection Health prüfen
564
+ const health = getConnectionHealth('bot1');
565
+ console.log({
566
+ connected: health.connected,
567
+ status: health.status,
568
+ uptime: health.uptime,
569
+ autoReconnect: health.autoReconnect,
570
+ retryCount: health.retryCount,
571
+ maxRetries: health.maxRetries
572
+ });
573
+
574
+ // Events abhören
575
+ client.on('reconnect:failed', ({ sessionId }) => {
576
+ console.log(`${sessionId} konnte nicht wiederverbunden werden`);
577
+ });
578
+ ```
579
+
580
+ **Vorteile:**
581
+ - 📈 Exponential Backoff verhindert Server-Überlastung
582
+ - 🔢 Konfigurierbare Max Retries
583
+ - 🎯 Automatische Wiederverbindung bei Netzwerkfehlern
584
+ - 📊 Connection Health Monitoring
585
+
242
586
  #### ❌ Noch nicht implementiert
243
587
  ```javascript
244
- // Group Management
245
- // await client.createGroup(sessionId, subject, participants);
246
- // await client.leaveGroup(sessionId, groupJid);
247
- // await client.updateGroupSubject(sessionId, groupJid, subject);
248
-
249
- // Contact Management
250
- // await client.getContacts(sessionId);
251
- // await client.blockUser(sessionId, jid);
252
-
253
- // Status/Stories
254
- // await client.sendStory(sessionId, content);
255
- // await client.getStatus(sessionId, jid);
256
-
257
- // Advanced Features
258
- // await client.sendReaction(sessionId, messageKey, emoji);
259
- // await client.sendPresenceUpdate(sessionId, type);
588
+ // Message Editing (wartet auf Baileys Support)
589
+ // await client.editMessage(sessionId, messageKey, newText);
590
+
591
+ // Business API Features
592
+ // await client.getBusinessCategories();
593
+ // await client.updateBusinessHours();
594
+ ```
595
+
596
+ ## 🚀 Neue Features in v2.0
597
+
598
+ ### Group Management (Implementiert)
599
+ ```javascript
600
+ import {
601
+ createGroup,
602
+ getGroupMetadata,
603
+ updateGroupSubject,
604
+ updateGroupDescription,
605
+ addParticipants,
606
+ removeParticipants,
607
+ promoteParticipants,
608
+ demoteParticipants,
609
+ leaveGroup,
610
+ getGroupInviteCode,
611
+ acceptGroupInvite,
612
+ updateGroupSettings
613
+ } from '@deathnaitsa/wa-api';
614
+
615
+ // Gruppe erstellen
616
+ const group = await createGroup('bot1', 'Meine Gruppe', [
617
+ '4915123456789@s.whatsapp.net',
618
+ '4915987654321@s.whatsapp.net'
619
+ ]);
620
+
621
+ // Gruppen-Metadaten abrufen
622
+ const metadata = await getGroupMetadata('bot1', 'groupId@g.us');
623
+ console.log(metadata.subject, metadata.participants.length);
624
+
625
+ // Gruppennamen ändern
626
+ await updateGroupSubject('bot1', 'groupId@g.us', 'Neuer Name');
627
+
628
+ // Beschreibung ändern
629
+ await updateGroupDescription('bot1', 'groupId@g.us', 'Neue Beschreibung');
630
+
631
+ // Teilnehmer hinzufügen
632
+ await addParticipants('bot1', 'groupId@g.us', ['4915123456789@s.whatsapp.net']);
633
+
634
+ // Teilnehmer entfernen
635
+ await removeParticipants('bot1', 'groupId@g.us', ['4915123456789@s.whatsapp.net']);
636
+
637
+ // Zum Admin machen
638
+ await promoteParticipants('bot1', 'groupId@g.us', ['4915123456789@s.whatsapp.net']);
639
+
640
+ // Admin-Rechte entfernen
641
+ await demoteParticipants('bot1', 'groupId@g.us', ['4915123456789@s.whatsapp.net']);
642
+
643
+ // Gruppe verlassen
644
+ await leaveGroup('bot1', 'groupId@g.us');
645
+
646
+ // Einladungslink erhalten
647
+ const code = await getGroupInviteCode('bot1', 'groupId@g.us');
648
+ console.log(`https://chat.whatsapp.com/${code}`);
649
+
650
+ // Gruppe über Link beitreten
651
+ await acceptGroupInvite('bot1', 'inviteCode');
652
+
653
+ // Gruppen-Einstellungen (nur Admins können schreiben)
654
+ await updateGroupSettings('bot1', 'groupId@g.us', 'announcement');
655
+ // Alle können schreiben
656
+ await updateGroupSettings('bot1', 'groupId@g.us', 'not_announcement');
657
+ ```
658
+
659
+ ### ✅ Advanced Messaging (Implementiert)
660
+ ```javascript
661
+ import {
662
+ sendAudio,
663
+ sendDocument,
664
+ sendLocation,
665
+ sendContact,
666
+ sendReaction,
667
+ deleteMessage
668
+ } from '@deathnaitsa/wa-api';
669
+
670
+ // Audio senden (Voice Message)
671
+ await sendAudio('bot1', 'nummer@s.whatsapp.net', './audio.mp3', true);
672
+
673
+ // Audio senden (normaler Audio-File)
674
+ await sendAudio('bot1', 'nummer@s.whatsapp.net', './song.mp3', false);
675
+
676
+ // Dokument senden
677
+ await sendDocument('bot1', 'nummer@s.whatsapp.net',
678
+ './file.pdf',
679
+ 'Dokument.pdf',
680
+ 'application/pdf',
681
+ 'Hier ist das Dokument'
682
+ );
683
+
684
+ // Standort senden
685
+ await sendLocation('bot1', 'nummer@s.whatsapp.net', 52.520008, 13.404954, 'Berlin');
686
+
687
+ // Kontakt senden
688
+ await sendContact('bot1', 'nummer@s.whatsapp.net', [
689
+ {
690
+ displayName: 'Max Mustermann',
691
+ vcard: 'BEGIN:VCARD\nVERSION:3.0\nFN:Max Mustermann\nTEL:+4915123456789\nEND:VCARD'
692
+ }
693
+ ]);
694
+
695
+ // Reaktion senden
696
+ await sendReaction('bot1', 'chatId@s.whatsapp.net', 'messageId', '👍');
697
+
698
+ // Reaktion entfernen
699
+ await sendReaction('bot1', 'chatId@s.whatsapp.net', 'messageId', '');
700
+
701
+ // Nachricht löschen
702
+ await deleteMessage('bot1', messageKey);
703
+ ```
704
+
705
+ ### ✅ Contact Management (Implementiert)
706
+ ```javascript
707
+ import {
708
+ getProfilePicture,
709
+ getContact,
710
+ checkNumbersOnWhatsApp,
711
+ blockContact,
712
+ unblockContact,
713
+ getBusinessProfile,
714
+ getStatus
715
+ } from '@deathnaitsa/wa-api';
716
+
717
+ // Profilbild URL abrufen
718
+ const url = await getProfilePicture('bot1', '4915123456789@s.whatsapp.net');
719
+
720
+ // Kontaktinfo
721
+ const contact = await getContact('bot1', '4915123456789@s.whatsapp.net');
722
+
723
+ // Nummern auf WhatsApp prüfen
724
+ const results = await checkNumbersOnWhatsApp('bot1', ['4915123456789', '4915987654321']);
725
+
726
+ // Kontakt blockieren
727
+ await blockContact('bot1', '4915123456789@s.whatsapp.net');
728
+
729
+ // Kontakt entblocken
730
+ await unblockContact('bot1', '4915123456789@s.whatsapp.net');
731
+
732
+ // Business-Profil abrufen
733
+ const business = await getBusinessProfile('bot1', 'businessNumber@s.whatsapp.net');
734
+
735
+ // Status/About abrufen
736
+ const status = await getStatus('bot1', '4915123456789@s.whatsapp.net');
737
+ console.log(status?.status);
738
+ ```
739
+
740
+ ### ✅ Presence & Typing (Implementiert)
741
+ ```javascript
742
+ import {
743
+ sendTyping,
744
+ sendRecording,
745
+ updateProfileStatus,
746
+ updateProfileName,
747
+ setProfilePicture,
748
+ markChatRead
749
+ } from '@deathnaitsa/wa-api';
750
+
751
+ // Tipp-Indikator anzeigen
752
+ await sendTyping('bot1', 'chatId@s.whatsapp.net', true);
753
+ // Stoppen
754
+ await sendTyping('bot1', 'chatId@s.whatsapp.net', false);
755
+
756
+ // Aufnahme-Indikator anzeigen
757
+ await sendRecording('bot1', 'chatId@s.whatsapp.net', true);
758
+ // Stoppen
759
+ await sendRecording('bot1', 'chatId@s.whatsapp.net', false);
760
+
761
+ // Eigenen Status ändern
762
+ await updateProfileStatus('bot1', 'Verfügbar 🟢');
763
+
764
+ // Eigenen Namen ändern
765
+ await updateProfileName('bot1', 'Neuer Name');
766
+
767
+ // Profilbild setzen
768
+ await setProfilePicture('bot1', './profile.jpg');
769
+
770
+ // Chat als gelesen markieren
771
+ await markChatRead('bot1', 'chatId@s.whatsapp.net', [messageKey1, messageKey2]);
260
772
  ```
261
773
 
262
774
  ## 🎮 Bot-Beispiel
263
775
 
264
- Siehe `socket.js` für ein vollständiges Bot-Beispiel mit:
265
- - Chat-Assignment System (keine Doppel-Antworten bei mehreren Sessions)
266
- - Command-Lock System (keine Race-Conditions)
267
- - Deutsche Befehle (!ping, !stats, !gesamtstats, !neustart, etc.)
268
- - Session-Control Commands
269
- - Latenz-Messung
776
+ Siehe `socket.js` für ein vollständiges Bot-Beispiel mit **50+ Befehlen**:
777
+
778
+ ### Basis-Befehle
779
+ - **!ping** / **!ping all** - Bot & alle Sessions testen
780
+ - **!info** - Nachrichteninfo anzeigen
781
+ - **!liste** - Alle Sessions auflisten
782
+ - **!stats** - Detaillierte Session-Statistiken
783
+ - **!gesamtstats** - Gesamtstatistik aller Sessions
784
+
785
+ ### Gruppen-Befehle
786
+ - **!gruppeninfo** - Infos zur aktuellen Gruppe
787
+ - **!gruppenlink** - Einladungslink der Gruppe
788
+ - **!gruppenname** - Gruppennamen ändern
789
+ - **!gruppenbio** - Gruppenbeschreibung ändern
790
+ - **!hinzufügen** / **!entfernen** - Teilnehmer verwalten
791
+ - **!promoten** / **!demoten** - Admin-Rechte verwalten
792
+
793
+ ### Nachrichten-Befehle
794
+ - **!ort** - Standort senden
795
+ - **!reaktion** - Auf Nachricht reagieren
796
+ - **!tippen** / **!aufnehmen** - Indikatoren anzeigen
797
+ - **!umfrage** - Umfrage erstellen
798
+ - **!broadcast** - Broadcast senden
799
+
800
+ ### Status & Queue
801
+ - **!status** - Status hochladen
802
+ - **!queue** - Nachricht zur Queue hinzufügen
803
+ - **!queuestatus** - Queue Status anzeigen
804
+ - **!clearqueue** - Queue leeren
805
+ - **!ratelimit** - Rate Limit setzen
806
+
807
+ ### Profil & Kontakt
808
+ - **!profilbild** - Profilbild anzeigen
809
+ - **!status** - Status abrufen
810
+ - **!kontakt** - Kontaktinfo anzeigen
811
+ - **!meinestatus** - Eigenen Status ändern
812
+
813
+ ### Verbindung
814
+ - **!autoreconnect** - Auto-Reconnect aktivieren
815
+ - **!health** - Verbindungs-Status prüfen
816
+
817
+ ### Session-Verwaltung
818
+ - **!neustart** / **!pause** / **!fortsetzen** / **!stopp** - Session Control
819
+ - **!löschen** - Session-Daten löschen
820
+ - **!start** - Neue Session starten
821
+ - **!zuweisen** - Chat einer Session zuweisen
822
+ - **!zuweisungen** - Alle Zuweisungen anzeigen
823
+
824
+ **Features:**
825
+ - ✅ Chat-Assignment System (keine Doppel-Antworten)
826
+ - ✅ Command-Lock System (keine Race-Conditions)
827
+ - ✅ Latenz-Messung
828
+ - ✅ Error-Handling
270
829
 
271
830
  ## 📊 Statistik-System
272
831
 
@@ -367,31 +926,40 @@ wa_credentials/ # Session-Daten
367
926
 
368
927
  ## 🛠️ Bekannte Einschränkungen & Design-Entscheidungen
369
928
 
370
- ### Nicht implementiert (Stand: Dezember 2024)
371
- - ❌ Audio/Voice Messages
372
- - ❌ Document/PDF Upload
373
- - ❌ Group Management (Create/Leave/Update Groups)
374
- - ❌ Contact Management (Block/Unblock)
375
- - Status/Story Features
376
- - Message Reactions
377
- - Typing Indicators
378
- - Presence Updates (Online/Offline Status)
379
- - Auto-Reconnect (bewusst einfach gehalten)
380
- - Message Queue/Rate Limiting
381
- - Webhook Support
929
+ ### Was ist NICHT implementiert
930
+ - ❌ Message Editing (wartet auf Baileys Support)
931
+ - ❌ Business API erweiterte Features
932
+ - ❌ Chat Archive/Mute/Pin über API (manuell möglich)
933
+
934
+ ### Vollständig implementiert in v2.0 ✅
935
+ - Group Management (Complete - 12 Funktionen)
936
+ - Advanced Messaging (Complete - 6 Funktionen)
937
+ - Contact Management (Complete - 7 Funktionen)
938
+ - Presence & Typing (Complete - 7 Funktionen)
939
+ - Poll Messages (Complete)
940
+ - Status/Stories (Complete)
941
+ - ✅ Broadcast Lists (Complete)
942
+ - ✅ Message Queue & Rate Limiting (Complete - 6 Funktionen)
943
+ - ✅ Webhook Support (Complete - 3 Funktionen)
944
+ - ✅ Enhanced Auto-Reconnect (Complete mit Exponential Backoff)
945
+
946
+ **Total: 60+ Funktionen implementiert!**
382
947
 
383
948
  ### Design-Philosophie
384
- - **Einfachheit über Features** - Lieber stabil als feature-reich
385
- - **Kein Auto-Reconnect** - Manuelles Management für mehr Kontrolle
386
- - **Minimale Dependencies** - Nur Baileys, Pino, QRCode-Terminal
949
+ - **Feature-Complete über Minimalismus** - Alle wichtigen Features implementiert
950
+ - **Production-Ready** - Robustes Error-Handling und Rate Limiting
951
+ - **Dual Package Support** - CommonJS + ES Modules
387
952
  - **Event-Driven** - Keine Polling, nur Events
388
953
  - **Map-basiert** - Schnelle Session-Lookups
954
+ - **Obfuskiert** - Source Code geschützt
389
955
 
390
956
  ### Performance-Charakteristiken
391
957
  - ✅ Sehr schnelle Session-Switches
392
- - ✅ Geringer Memory-Footprint (~50MB pro Session)
958
+ - ✅ Geringer Memory-Footprint (~50-100MB pro Session)
393
959
  - ✅ Keine Blocking Operations
394
- - ⚠️ Kein Built-in Rate Limiting (muss selbst implementiert werden)
960
+ - Built-in Rate Limiting
961
+ - ✅ Queue System für Mass-Messaging
962
+ - ✅ Auto-Reconnect mit Exponential Backoff
395
963
 
396
964
  ## 🔒 Sicherheit
397
965