@neelegirl/wa-api 1.0.13 → 1.1.0

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.
@@ -49,9 +49,29 @@ const sessions = new Map();
49
49
  const callback = new Map();
50
50
  const retryCount = new Map();
51
51
  let stock;
52
- const CURRENT_WA_API_VERSION = "1.0.13";
52
+ const CURRENT_WA_API_VERSION = "1.1.0";
53
+ // Globale Flag um sicherzustellen, dass Update-Benachrichtigung nur einmal angezeigt wird
54
+ if (typeof global !== 'undefined' && !global.__waApiUpdateCheckShown) {
55
+ global.__waApiUpdateCheckShown = false;
56
+ }
57
+ // Version-Vergleichsfunktion (semantische Versionierung)
58
+ const compareVersions = (v1, v2) => {
59
+ const parts1 = v1.split('.').map(Number);
60
+ const parts2 = v2.split('.').map(Number);
61
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
62
+ const part1 = parts1[i] || 0;
63
+ const part2 = parts2[i] || 0;
64
+ if (part1 > part2) return 1;
65
+ if (part1 < part2) return -1;
66
+ }
67
+ return 0;
68
+ };
53
69
  // Update-Check-Funktion für WA-API
54
70
  const checkWaApiUpdate = () => {
71
+ // Wenn bereits angezeigt, nicht erneut prüfen
72
+ if (typeof global !== 'undefined' && global.__waApiUpdateCheckShown) {
73
+ return Promise.resolve(null);
74
+ }
55
75
  return new Promise((resolve) => {
56
76
  const url = `https://registry.npmjs.org/@neelegirl/wa-api/latest`;
57
77
  https_1.default.get(url, { timeout: 5000 }, (res) => {
@@ -63,9 +83,13 @@ const checkWaApiUpdate = () => {
63
83
  try {
64
84
  const packageInfo = JSON.parse(data);
65
85
  const latestVersion = packageInfo.version;
66
- if (latestVersion && latestVersion !== CURRENT_WA_API_VERSION) {
86
+ // Nur anzeigen wenn latestVersion wirklich NEUER ist als die aktuelle Version
87
+ if (latestVersion && compareVersions(latestVersion, CURRENT_WA_API_VERSION) > 0) {
67
88
  const updateMessage = `\n╔════════════════════════════════════════╗\n║ 🔔 NEUES UPDATE VERFÜGBAR! 🔔 ║\n╠════════════════════════════════════════╣\n║ @neelegirl/wa-api ║\n║ Aktuelle Version: ${CURRENT_WA_API_VERSION.padEnd(20)} ║\n║ Neue Version: ${latestVersion.padEnd(20)} ║\n║ ║\n║ Bitte aktualisiere: ║\n║ npm install @neelegirl/wa-api@latest ║\n╚════════════════════════════════════════╝\n`;
68
89
  console.log(updateMessage);
90
+ if (typeof global !== 'undefined') {
91
+ global.__waApiUpdateCheckShown = true; // Markiere als angezeigt
92
+ }
69
93
  resolve({
70
94
  current: CURRENT_WA_API_VERSION,
71
95
  latest: latestVersion,
@@ -73,8 +97,10 @@ const checkWaApiUpdate = () => {
73
97
  });
74
98
  }
75
99
  else {
76
- const currentVersionMessage = `\n╔════════════════════════════════════════╗\n║ ✅ Du nutzt gerade die aktuelle ║\n║ Version von @neelegirl/wa-api ║\n║ ║\n║ Wir informieren dich, wenn es ein ║\n║ Update gibt. ║\n╚════════════════════════════════════════╝\n`;
77
- console.log(currentVersionMessage);
100
+ // Kein Update verfügbar oder lokale Version ist neuer/gleich
101
+ if (typeof global !== 'undefined') {
102
+ global.__waApiUpdateCheckShown = true; // Markiere als geprüft
103
+ }
78
104
  resolve({
79
105
  current: CURRENT_WA_API_VERSION,
80
106
  latest: latestVersion,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neelegirl/wa-api",
3
- "version": "1.0.13",
3
+ "version": "1.1.0",
4
4
  "description": "Multi Session Whatsapp Library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "jest": "^29.0.0",
28
28
  "@adiwajshing/keyed-db": "^0.2.4",
29
29
  "@hapi/boom": "^10.0.1",
30
- "@neelegirl/baileys": "^1.6.9",
30
+ "@neelegirl/baileys": "^1.7.0",
31
31
  "mime": "^3.0.0",
32
32
  "pino": "^8.11.0",
33
33
  "qrcode-terminal": "^0.12.0"
package/readme.md CHANGED
@@ -1,56 +1,87 @@
1
- <p align="center">
2
- <img src="https://files.catbox.moe/63h8xn.jpeg" width="720" alt="Neele WA-API Header" />
3
- </p>
1
+ <div align="center">
4
2
 
5
- # 💌 @neelegirl/wa-api → **onimai**
3
+ # 💌 @neelegirl/wa-api 💌
6
4
 
7
- ✨ *Die elegante & simple WhatsApp-Bibliothek*
8
- zur Verwaltung **mehrerer Sessions** mit
9
- 💎 **universeller `sendMessage`** und direkter
10
- ⚡ **`relayMessage`-Power** für Profis.
5
+ ### ✨ *Die ultimative Multi-Session WhatsApp-Bibliothek*
6
+ ### 🎀 *Einfach, elegant & voller Magie* 🎀
11
7
 
12
- <p align="center"><strong>🌟 Version 1.0.9 – Kompatibel mit @neelegirl/baileys 1.6.4 🌟</strong></p>
8
+ [![Version](https://img.shields.io/badge/Version-1.1.0-pink?style=for-the-badge&logo=github)](https://github.com/neelegirl/wa-api)
9
+ [![npm](https://img.shields.io/npm/v/@neelegirl/wa-api?style=for-the-badge&color=pink&logo=npm)](https://www.npmjs.com/package/@neelegirl/wa-api)
10
+ [![Downloads](https://img.shields.io/npm/dw/@neelegirl/wa-api?style=for-the-badge&color=pink&logo=npm)](https://www.npmjs.com/package/@neelegirl/wa-api)
11
+ [![License](https://img.shields.io/github/license/neelegirl/wa-api?style=for-the-badge&color=pink)](LICENSE)
12
+ [![Baileys](https://img.shields.io/badge/Baileys-1.7.0-pink?style=for-the-badge)](https://www.npmjs.com/package/@neelegirl/baileys)
13
13
 
14
14
  ---
15
15
 
16
16
  <p align="center">
17
- 🌟 <b>Ja, jetzt ist endlich mal wieder eine neue Funktion raus!</b> 🌟<br/>
18
- 💫 <b>Ultramäßig cool, ultramäßig geil!</b> 💫<br/>
19
- ✨ <b>Die Daily Girl hat wieder was Neues für euch!</b> ✨
17
+ <img src="https://files.catbox.moe/63h8xn.jpeg" width="720" alt="Neele WA-API Header" />
20
18
  </p>
21
19
 
20
+ **🌟 Version 1.1.0 - Kompatibel mit @neelegirl/baileys 1.7.0 🌟**
21
+
22
+ [🚀 Installation](#-installation) • [📖 Quickstart](#-quickstart-guide) • [✨ Features](#-features) • [📚 Dokumentation](#-dokumentation) • [💬 Support](#-support--community)
23
+
24
+ </div>
25
+
22
26
  ---
23
27
 
24
- > ⚠️ **Hinweis:**
25
- > Diese Library funktioniert **ausschließlich** mit **@neelegirl/baileys** und ist auch **mit LID kompatibel**.
26
- > 🔒 Andere Baileys-Forks oder Varianten sind **nicht unterstützt**.
28
+ ## 📋 Inhaltsverzeichnis
29
+
30
+ - [✨ Was ist @neelegirl/wa-api?](#-was-ist-neelegirlwa-api)
31
+ - [🚀 Installation](#-installation)
32
+ - [📖 Quickstart Guide](#-quickstart-guide)
33
+ - [✨ Features](#-features)
34
+ - [📲 Session Management](#-session-management)
35
+ - [💬 Nachrichten senden](#-nachrichten-senden)
36
+ - [🎧 Event Listener](#-event-listener)
37
+ - [🔧 Erweiterte Funktionen](#-erweiterte-funktionen)
38
+ - [📚 Vollständige API-Referenz](#-vollständige-api-referenz)
39
+ - [⚠️ Wichtige Hinweise](#️-wichtige-hinweise)
40
+ - [💬 Support & Community](#-support--community)
27
41
 
28
42
  ---
29
43
 
30
- ## 📚 Inhaltsverzeichnis
44
+ ## Was ist @neelegirl/wa-api?
45
+
46
+ <div align="center">
47
+
48
+ ### 🎯 **Die perfekte Lösung für Multi-Session WhatsApp Bots** 🎯
49
+
50
+ </div>
31
51
 
32
- 1. [📦 Installation](#-installation)
33
- 2. [🔌 Import & Setup](#-import--setup)
34
- 3. [📲 Session Management](#-session-management)
35
- 4. [💬 Nachrichten senden (`sendMessage`)](#-nachrichten-senden-sendmessage)
36
- 5. [🔧 Spezialfunktionen (`relayMessage`)](#-spezialfunktionen-relaymessage)
37
- 6. [🎧 Listener](#-listener)
38
- 7. [🚨 Fehlerbehandlung](#-fehlerbehandlung)
39
- 8. [👩‍💻 Autorin & Support](#-autorin--support)
52
+ | Feature | Beschreibung | Status |
53
+ |---------|-------------|--------|
54
+ | 🔀 **Multi-Session** | Mehrere WhatsApp-Sessions gleichzeitig | ✅ |
55
+ | 💎 **Universal API** | Einfache `sendMessage` für alle Typen | ✅ |
56
+ | **RelayMessage** | Direkte Nachrichten-Weiterleitung | ✅ |
57
+ | 🔄 **Auto-Reconnect** | Automatisches Wiederverbinden | ✅ |
58
+ | 📱 **QR-Code** | Schöne QR-Code-Anzeige | ✅ |
59
+ | 🔔 **Auto-Updates** | Automatische Update-Prüfung (nur einmal) | ✅ |
60
+ | 🧩 **LID-Support** | Vollständige LID-Kompatibilität | ✅ |
61
+ | 🎨 **Einfach** | Simple API für Anfänger | ✅ |
62
+ | 🚀 **Smart Queue** | Nutzt Baileys Smart Message Queue | ✅ |
63
+
64
+ > ⚠️ **Wichtig**: Diese Library funktioniert **ausschließlich** mit **@neelegirl/baileys**!
40
65
 
41
66
  ---
42
67
 
43
- ## 📦 Installation
68
+ ## 🚀 Installation
69
+
70
+ ### 📦 Mit npm
44
71
 
45
72
  ```bash
46
73
  npm install @neelegirl/wa-api@latest
47
74
  ```
48
75
 
49
- ---
76
+ ### 📦 Mit yarn
77
+
78
+ ```bash
79
+ yarn add @neelegirl/wa-api@latest
80
+ ```
50
81
 
51
- ## 🔌 Import & Setup
82
+ ### 📥 Import
52
83
 
53
- ```js
84
+ ```javascript
54
85
  // CommonJS
55
86
  const onimai = require('@neelegirl/wa-api');
56
87
 
@@ -60,106 +91,615 @@ import * as onimai from '@neelegirl/wa-api';
60
91
 
61
92
  ---
62
93
 
94
+ ## 📖 Quickstart Guide
95
+
96
+ ### 🎯 **Für Anfänger: Dein erster Multi-Session Bot**
97
+
98
+ ```javascript
99
+ const onimai = require('@neelegirl/wa-api');
100
+
101
+ // 1️⃣ Session starten (mit QR-Code)
102
+ async function start() {
103
+ // Session starten
104
+ await onimai.startSession('meine-session', {
105
+ printQR: true // QR-Code anzeigen
106
+ });
107
+
108
+ console.log('✅ Session gestartet!');
109
+ }
110
+
111
+ // 2️⃣ Nachrichten empfangen
112
+ onimai.onMessageReceived(async (msg) => {
113
+ const { sessionId, key, message } = msg;
114
+ const from = key.remoteJid;
115
+ const text = message?.conversation || message?.extendedTextMessage?.text || '';
116
+
117
+ // Echo-Bot
118
+ if (text.toLowerCase() === 'hallo') {
119
+ await onimai.sendMessage(sessionId, from, {
120
+ text: '🌸 Hallo! Ich bin ein Onimai-Bot! ✨'
121
+ });
122
+ }
123
+ });
124
+
125
+ // 3️⃣ Verbindungs-Status
126
+ onimai.onConnected((sessionId) => {
127
+ console.log(`✅ Session ${sessionId} ist verbunden!`);
128
+ });
129
+
130
+ onimai.onDisconnected((sessionId) => {
131
+ console.log(`❌ Session ${sessionId} wurde getrennt`);
132
+ });
133
+
134
+ // Bot starten
135
+ start().catch(console.error);
136
+ ```
137
+
138
+ ### 🎨 **Was passiert hier?**
139
+
140
+ 1. **`startSession`**: Startet eine neue WhatsApp-Session mit QR-Code
141
+ 2. **`onMessageReceived`**: Event-Handler für neue Nachrichten
142
+ 3. **`sendMessage`**: Sendet Nachrichten an einen Chat
143
+ 4. **`onConnected`/`onDisconnected`**: Events für Verbindungsstatus
144
+
145
+ ---
146
+
147
+ ## ✨ Features
148
+
149
+ ### 🔥 **Hauptfeatures**
150
+
151
+ - ✅ **Multi-Session Support** - Mehrere Sessions gleichzeitig verwalten
152
+ - ✅ **Universal sendMessage** - Einfache API für alle Nachrichtentypen
153
+ - ✅ **Auto-Reconnect** - Automatisches Wiederverbinden bei Verbindungsabbruch
154
+ - ✅ **QR-Code Display** - Schöne QR-Code-Anzeige im Terminal
155
+ - ✅ **Auto-Update-Check** - Automatische Prüfung auf neue Versionen (nur einmal pro Prozess)
156
+ - ✅ **LID-Kompatibel** - Vollständige Linked ID Unterstützung
157
+ - ✅ **Session-Management** - Einfaches Starten, Stoppen und Verwalten
158
+ - ✅ **Event-System** - Umfangreiches Event-System für alle Events
159
+ - ✅ **Smart Queue Ready** - Kompatibel mit Baileys Smart Message Queue
160
+
161
+ ---
162
+
63
163
  ## 📲 Session Management
64
164
 
65
- ```js
66
- await onimai.startSession('session1');
165
+ ### 🚀 **Session starten**
166
+
167
+ ```javascript
168
+ // Mit QR-Code (Standard)
169
+ await onimai.startSession('session1', {
170
+ printQR: true // QR-Code im Terminal anzeigen
171
+ });
172
+
173
+ // Mit Pairing-Code (ohne QR-Code)
67
174
  await onimai.startSessionWithPairingCode('session2', {
68
- phoneNumber: '491234567890'
175
+ phoneNumber: '491234567890' // Ohne +, mit Ländercode
69
176
  });
70
- const all = onimai.getAllSession();
71
- const one = onimai.getSession('session1');
72
- const loaded = await onimai.loadSessionsFromStorage();
73
177
  ```
74
178
 
75
- ---
179
+ ### 📋 **Sessions verwalten**
180
+
181
+ ```javascript
182
+ // Alle Sessions auflisten
183
+ const allSessions = onimai.getAllSession();
184
+ console.log('Aktive Sessions:', allSessions);
185
+ // Output: ['session1', 'session2', 'session3']
76
186
 
77
- ## 💬 Nachrichten senden (`sendMessage`)
187
+ // Eine Session abrufen
188
+ const session = onimai.getSession('session1');
189
+ if (session) {
190
+ console.log('Session gefunden!');
191
+ }
78
192
 
79
- ```js
80
- await onimai1.sendMessage(sessionId, jidOrPhone, content, options);
193
+ // Session löschen
194
+ await onimai.deleteSession('session1');
81
195
  ```
82
196
 
83
- ### Beispiele
197
+ ### 💾 **Sessions aus Storage laden**
84
198
 
85
- | 📨 Typ | 📘 Beschreibung | 🧾 Inhalt Beispiel |
86
- |--------------|------------------------|--------------------|
87
- | **Text** | Klassische Nachricht | `{ text: 'Hallo!' }` |
88
- | **Bild** | Mit Caption | `{ image: { url: './img.png' }, caption: 'Hey' }` |
89
- | **Video** | Mit Caption | `{ video: { url: './vid.mp4' }, caption: 'Clip' }` |
90
- | **GIF** | Loop-Video | `{ video: { url: './gif.mp4' }, gifPlayback: true }` |
91
- | **Audio** | Sprachnachricht | `{ audio: fs.createReadStream('voice.ogg'), mimetype: 'audio/ogg', ptt: true }` |
92
- | **Dokument** | PDF o.ä. | `{ document: { url: './doc.pdf', filename: 'Beispiel.pdf' } }` |
93
- | **Umfrage** | Poll erstellen | `{ pollCreationMessage: { name: 'Frage?', options: [...], selectableCount: 1 } }` |
94
- | **Reaktion** | Emoji antworten | `{ react: { text: '❤️', key: msg.key } }` |
95
- | **Löschen** | Nachricht zurückziehen | `{ delete: msg.key }` |
96
- | **Pin** | Nachricht anpinnen | `{ pin: { type: 1, time: 3600, key: msg.key } }` |
97
- | **Kontakt** | vCard teilen | `{ contacts: { displayName: 'Max', contacts: [{ vcard }] } }` |
98
- | **Standort** | Map teilen | `{ location: { degreesLatitude: 52.52, degreesLongitude: 13.405 } }` |
99
- | **Forward** | Nachricht weiterleiten | `{ forward: origMsg }` |
100
- | **Status** | Story posten | `{ video: { url: 'story.mp4' }, caption: 'Mein Status' }` |
199
+ ```javascript
200
+ // Alle gespeicherten Sessions automatisch laden
201
+ const loadedSessions = await onimai.loadSessionsFromStorage();
202
+ console.log('Geladene Sessions:', loadedSessions);
203
+ // Output: ['session1', 'session2']
204
+ ```
101
205
 
102
206
  ---
103
207
 
104
- ## 🔧 Spezialfunktionen (`relayMessage`)
208
+ ## 💬 Nachrichten senden
209
+
210
+ ### 📨 **Grundlegende Verwendung**
211
+
212
+ ```javascript
213
+ await onimai.sendMessage(sessionId, jidOrPhone, content, options);
214
+ ```
215
+
216
+ **Parameter:**
217
+ - `sessionId` - Die Session-ID (z.B. 'session1')
218
+ - `jidOrPhone` - WhatsApp-ID oder Telefonnummer (z.B. '491234567890@s.whatsapp.net' oder '491234567890')
219
+ - `content` - Der Nachrichteninhalt (siehe Beispiele unten)
220
+ - `options` - Optionale Parameter (z.B. `{ quoted: message }`)
221
+
222
+ ### 📝 **Nachrichtentypen**
223
+
224
+ #### 1. **Text-Nachricht**
225
+
226
+ ```javascript
227
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
228
+ text: 'Hallo! 🌸'
229
+ });
230
+ ```
231
+
232
+ #### 2. **Bild mit Caption**
233
+
234
+ ```javascript
235
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
236
+ image: { url: './bild.jpg' },
237
+ caption: 'Schönes Bild! ✨'
238
+ });
239
+ ```
240
+
241
+ #### 3. **Video**
242
+
243
+ ```javascript
244
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
245
+ video: { url: './video.mp4' },
246
+ caption: 'Mein Video! 🎬'
247
+ });
248
+ ```
249
+
250
+ #### 4. **GIF (als Video)**
251
+
252
+ ```javascript
253
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
254
+ video: { url: './animation.mp4' },
255
+ gifPlayback: true, // Wichtig für GIFs!
256
+ caption: 'Kawaii GIF! ✨'
257
+ });
258
+ ```
259
+
260
+ #### 5. **Audio/Sprachnachricht**
261
+
262
+ ```javascript
263
+ const fs = require('fs');
264
+
265
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
266
+ audio: fs.createReadStream('./audio.ogg'),
267
+ mimetype: 'audio/ogg',
268
+ ptt: true // Push-to-Talk (Sprachnachricht)
269
+ });
270
+ ```
271
+
272
+ #### 6. **Dokument**
273
+
274
+ ```javascript
275
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
276
+ document: {
277
+ url: './dokument.pdf',
278
+ filename: 'Wichtiges Dokument.pdf'
279
+ },
280
+ mimetype: 'application/pdf'
281
+ });
282
+ ```
283
+
284
+ #### 7. **Umfrage (Poll)**
285
+
286
+ ```javascript
287
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
288
+ poll: {
289
+ name: 'Was ist deine Lieblingsfarbe?',
290
+ values: ['Rot', 'Blau', 'Grün', 'Gelb'],
291
+ selectableCount: 1 // Anzahl der auswählbaren Optionen
292
+ }
293
+ });
294
+ ```
295
+
296
+ #### 8. **Reaktion**
297
+
298
+ ```javascript
299
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
300
+ react: {
301
+ text: '❤️', // Emoji
302
+ key: message.key // Key der Nachricht
303
+ }
304
+ });
305
+
306
+ // Reaktion entfernen
307
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
308
+ react: {
309
+ text: '', // Leerer String entfernt Reaktion
310
+ key: message.key
311
+ }
312
+ });
313
+ ```
314
+
315
+ #### 9. **Nachricht löschen**
316
+
317
+ ```javascript
318
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
319
+ delete: message.key // Für alle löschen
320
+ });
321
+ ```
322
+
323
+ #### 10. **Nachricht anpinnen**
324
+
325
+ ```javascript
326
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
327
+ pin: {
328
+ type: 1, // 0 = entfernen, 1 = anpinnen
329
+ time: 86400, // Sekunden (24h = 86400)
330
+ key: message.key
331
+ }
332
+ });
333
+ ```
334
+
335
+ #### 11. **Kontakt teilen**
105
336
 
106
- - **Nachricht löschen (Revoke)**
107
- - **Ephemeral-Mode an/aus**
108
- - **Status posten (Story)**
109
- - **Weiterleiten**
110
- - **Profilbild ändern**
111
- - **Chat als gelesen markieren**
112
- - **Custom Message IDs setzen**
337
+ ```javascript
338
+ const vcard = `BEGIN:VCARD
339
+ VERSION:3.0
340
+ FN:Max Mustermann
341
+ TEL;type=CELL;type=VOICE;waid=491234567890:+49 123 4567890
342
+ END:VCARD`;
113
343
 
114
- ➡️ Beispiele siehe Code im Repo – alle Funktionen sind out-of-the-box!
344
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
345
+ contacts: {
346
+ displayName: 'Max Mustermann',
347
+ contacts: [{ vcard }]
348
+ }
349
+ });
350
+ ```
351
+
352
+ #### 12. **Standort**
353
+
354
+ ```javascript
355
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
356
+ location: {
357
+ degreesLatitude: 52.520008,
358
+ degreesLongitude: 13.404954
359
+ }
360
+ });
361
+ ```
362
+
363
+ #### 13. **Nachricht weiterleiten**
364
+
365
+ ```javascript
366
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
367
+ forward: originalMessage // Originale Nachricht
368
+ });
369
+ ```
370
+
371
+ #### 14. **Mit Quote (Antwort)**
372
+
373
+ ```javascript
374
+ await onimai.sendMessage(
375
+ 'session1',
376
+ '491234567890@s.whatsapp.net',
377
+ {
378
+ text: 'Das ist eine Antwort!'
379
+ },
380
+ {
381
+ quoted: originalMessage // Originale Nachricht
382
+ }
383
+ );
384
+ ```
385
+
386
+ #### 15. **Mit Erwähnung**
387
+
388
+ ```javascript
389
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
390
+ text: '@491111111111 Hallo!',
391
+ mentions: ['491111111111@s.whatsapp.net']
392
+ });
393
+ ```
115
394
 
116
395
  ---
117
396
 
118
- ## 🎧 Listener
397
+ ## 🎧 Event Listener
398
+
399
+ ### 📥 **Nachrichten empfangen**
400
+
401
+ ```javascript
402
+ onimai.onMessageReceived(async (msg) => {
403
+ const {
404
+ sessionId, // Session-ID
405
+ key, // Message-Key (id, remoteJid, fromMe)
406
+ message, // Nachrichteninhalt
407
+ messageTimestamp // Zeitstempel
408
+ } = msg;
409
+
410
+ const from = key.remoteJid;
411
+ const text = message?.conversation || message?.extendedTextMessage?.text || '';
412
+
413
+ console.log(`📥 Neue Nachricht von ${from}: ${text}`);
414
+
415
+ // Medien speichern (wenn vorhanden)
416
+ if (message?.imageMessage) {
417
+ await msg.saveImage('./downloads/');
418
+ }
419
+ if (message?.videoMessage) {
420
+ await msg.saveVideo('./downloads/');
421
+ }
422
+ if (message?.documentMessage) {
423
+ await msg.saveDocument('./downloads/');
424
+ }
425
+ });
426
+ ```
119
427
 
120
- ```js
121
- onimai.onConnected(id => console.log('✅ Online:', id));
122
- onimai.onQRUpdated(info => console.log('📲 QR-Code:', info));
123
- onimai.onMessageReceived(msg => console.log('📥 Nachricht:', msg));
428
+ ### 🔄 **Nachrichten-Updates**
429
+
430
+ ```javascript
431
+ onimai.onMessageUpdate((sessionId, data) => {
432
+ const {
433
+ update, // Update-Objekt
434
+ messageStatus // Lesbarer Status
435
+ } = data;
436
+
437
+ console.log(`📊 Status Update: ${messageStatus}`);
438
+ // Mögliche Status: 'sent', 'delivered', 'read', 'failed'
439
+ });
440
+ ```
441
+
442
+ ### 🔌 **Verbindungs-Events**
443
+
444
+ ```javascript
445
+ // Verbunden
446
+ onimai.onConnected((sessionId) => {
447
+ console.log(`✅ Session ${sessionId} ist jetzt verbunden!`);
448
+ });
449
+
450
+ // Verbindung wird hergestellt
451
+ onimai.onConnecting((sessionId) => {
452
+ console.log(`🔄 Session ${sessionId} verbindet...`);
453
+ });
454
+
455
+ // Getrennt
456
+ onimai.onDisconnected((sessionId) => {
457
+ console.log(`❌ Session ${sessionId} wurde getrennt`);
458
+ });
459
+ ```
460
+
461
+ ### 📱 **QR-Code Updates**
462
+
463
+ ```javascript
464
+ onimai.onQRUpdated((info) => {
465
+ const { sessionId, qr } = info;
466
+ console.log(`📱 Neuer QR-Code für Session ${sessionId}:`);
467
+ console.log(qr);
468
+
469
+ // Du kannst den QR-Code auch in eine Datei speichern oder auf einer Webseite anzeigen
470
+ });
471
+ ```
472
+
473
+ ### 🔑 **Pairing-Code**
474
+
475
+ ```javascript
476
+ onimai.onPairingCode((sessionId, code) => {
477
+ console.log(`🔑 Pairing-Code für Session ${sessionId}: ${code}`);
478
+ });
124
479
  ```
125
480
 
126
481
  ---
127
482
 
128
- ## 🚨 Fehlerbehandlung
483
+ ## 🔧 Erweiterte Funktionen
484
+
485
+ ### 💾 **Medien speichern**
486
+
487
+ ```javascript
488
+ onimai.onMessageReceived(async (msg) => {
489
+ // Bild speichern
490
+ if (msg.message?.imageMessage) {
491
+ const path = await msg.saveImage('./downloads/');
492
+ console.log('✅ Bild gespeichert:', path);
493
+ }
494
+
495
+ // Video speichern
496
+ if (msg.message?.videoMessage) {
497
+ const path = await msg.saveVideo('./downloads/');
498
+ console.log('✅ Video gespeichert:', path);
499
+ }
500
+
501
+ // Dokument speichern
502
+ if (msg.message?.documentMessage) {
503
+ const path = await msg.saveDocument('./downloads/');
504
+ console.log('✅ Dokument gespeichert:', path);
505
+ }
506
+ });
507
+ ```
508
+
509
+ ### 🔄 **Multi-Session Beispiel**
129
510
 
130
- ```js
131
- try {
132
- await onimai1.sendMessage(...);
133
- } catch (e) {
134
- console.error('⚠️ Fehler:', e);
511
+ ```javascript
512
+ // Mehrere Sessions gleichzeitig starten
513
+ const sessions = ['session1', 'session2', 'session3'];
514
+
515
+ for (const sessionId of sessions) {
516
+ await onimai.startSession(sessionId, { printQR: true });
517
+ }
518
+
519
+ // Nachricht an alle Sessions senden
520
+ const message = { text: 'Broadcast-Nachricht! 📢' };
521
+ const recipients = ['491234567890@s.whatsapp.net'];
522
+
523
+ for (const sessionId of sessions) {
524
+ for (const recipient of recipients) {
525
+ await onimai.sendMessage(sessionId, recipient, message);
526
+ }
135
527
  }
136
528
  ```
137
529
 
530
+ ### 🚀 **Smart Queue Integration**
531
+
532
+ ```javascript
533
+ // Nutze die Smart Message Queue von Baileys für zuverlässiges Bulk-Messaging
534
+ const baileys = require('@neelegirl/baileys');
535
+ const session = onimai.getSession('session1');
536
+
537
+ if (session) {
538
+ const queue = baileys.createSmartMessageQueue(session, {
539
+ maxRetries: 5,
540
+ retryDelay: 2000,
541
+ maxConcurrent: 3
542
+ });
543
+
544
+ // Viele Nachrichten zur Queue hinzufügen
545
+ const recipients = ['491234567890@s.whatsapp.net', '499876543210@s.whatsapp.net'];
546
+
547
+ for (const jid of recipients) {
548
+ await queue.add({
549
+ jid,
550
+ message: { text: 'Wichtige Ankündigung! 📢' },
551
+ priority: 'high'
552
+ });
553
+ }
554
+ }
555
+ ```
556
+
557
+ ---
558
+
559
+ ## 📚 Vollständige API-Referenz
560
+
561
+ ### 🔌 **Session-Funktionen**
562
+
563
+ | Funktion | Beschreibung | Beispiel |
564
+ |----------|-------------|----------|
565
+ | `startSession(id, options)` | Startet eine Session mit QR-Code | `await onimai.startSession('session1')` |
566
+ | `startSessionWithPairingCode(id, options)` | Startet mit Pairing-Code | `await onimai.startSessionWithPairingCode('session2', { phoneNumber: '491234567890' })` |
567
+ | `getAllSession()` | Gibt alle aktiven Sessions zurück | `const sessions = onimai.getAllSession()` |
568
+ | `getSession(id)` | Gibt eine spezifische Session zurück | `const session = onimai.getSession('session1')` |
569
+ | `deleteSession(id)` | Löscht eine Session | `await onimai.deleteSession('session1')` |
570
+ | `loadSessionsFromStorage()` | Lädt alle Sessions aus Storage | `const loaded = await onimai.loadSessionsFromStorage()` |
571
+
572
+ ### 💬 **Nachrichten-Funktionen**
573
+
574
+ | Funktion | Beschreibung |
575
+ |----------|-------------|
576
+ | `sendMessage(sessionId, jid, content, options)` | Sendet eine Nachricht |
577
+
578
+ **Content-Typen:**
579
+ - `{ text: string }` - Text
580
+ - `{ image: { url: string }, caption?: string }` - Bild
581
+ - `{ video: { url: string }, caption?: string, gifPlayback?: boolean }` - Video/GIF
582
+ - `{ audio: Stream, mimetype: string, ptt?: boolean }` - Audio
583
+ - `{ document: { url: string, filename?: string }, mimetype: string }` - Dokument
584
+ - `{ poll: { name: string, values: string[], selectableCount: number } }` - Umfrage
585
+ - `{ react: { text: string, key: MessageKey } }` - Reaktion
586
+ - `{ delete: MessageKey }` - Löschen
587
+ - `{ pin: { type: number, time: number, key: MessageKey } }` - Anpinnen
588
+ - `{ contacts: { displayName: string, contacts: Array } }` - Kontakt
589
+ - `{ location: { degreesLatitude: number, degreesLongitude: number } }` - Standort
590
+ - `{ forward: Message }` - Weiterleiten
591
+
592
+ ### 🎧 **Event-Listener**
593
+
594
+ | Event | Beschreibung | Callback-Parameter |
595
+ |-------|-------------|-------------------|
596
+ | `onMessageReceived` | Neue Nachricht empfangen | `(msg: Message)` |
597
+ | `onMessageUpdate` | Nachrichten-Update | `(sessionId: string, data: UpdateData)` |
598
+ | `onConnected` | Session verbunden | `(sessionId: string)` |
599
+ | `onConnecting` | Session verbindet | `(sessionId: string)` |
600
+ | `onDisconnected` | Session getrennt | `(sessionId: string)` |
601
+ | `onQRUpdated` | QR-Code aktualisiert | `(info: { sessionId: string, qr: string })` |
602
+ | `onPairingCode` | Pairing-Code erhalten | `(sessionId: string, code: string)` |
603
+
604
+ ---
605
+
606
+ ## ⚠️ Wichtige Hinweise
607
+
608
+ ### 🚨 **Disclaimer**
609
+
610
+ > ⚠️ **WICHTIG**: Diese Library funktioniert **ausschließlich** mit **@neelegirl/baileys**!
611
+ >
612
+ > - ✖️ **Kein Spam** oder Massennachrichten
613
+ > - ✖️ **Kein Missbrauch** für unethische Zwecke
614
+ > - ✖️ **Keine Stalkerware** oder automatisierte Überwachung
615
+ > - ✔️ **Verantwortungsvoller Gebrauch** wird erwartet
616
+
617
+ ### 🔒 **Sicherheit**
618
+
619
+ - **Nie** deine Session-Daten öffentlich teilen
620
+ - **Immer** `.gitignore` für Credentials-Ordner verwenden
621
+ - **Regelmäßig** Backups erstellen
622
+ - **Sichere** Passwörter für deine Server verwenden
623
+
624
+ ### 💡 **Best Practices**
625
+
626
+ 1. **Error-Handling**: Immer try-catch für wichtige Operationen
627
+ 2. **Rate-Limiting**: Nutze Smart Message Queue für Bulk-Messaging
628
+ 3. **Session-Management**: Sessions ordentlich verwalten und löschen wenn nicht mehr benötigt
629
+ 4. **Updates**: Regelmäßig auf Updates prüfen (automatisch aktiviert, nur einmal angezeigt)
630
+
138
631
  ---
139
632
 
140
- ## 🆕 Was ist neu in Version 1.0.9?
633
+ ## 🆕 Was ist neu in Version 1.1.0?
634
+
635
+ ### ✨ **Neue Features**
141
636
 
142
- - ✅ **Kompatibilität** mit @neelegirl/baileys 1.6.4
143
- - 🔔 **Update-Benachrichtigung** Automatische Prüfung auf neue Versionen beim Start
637
+ - ✅ **Kompatibilität** mit @neelegirl/baileys 1.7.0
638
+ - 🚀 **Smart Queue Ready** - Bereit für Baileys Smart Message Queue
639
+ - 🔔 **Auto-Update-Check** - Automatische Prüfung auf neue Versionen beim Start (nur einmal pro Prozess angezeigt)
144
640
  - 🚀 **Verbesserte Stabilität** und Performance
145
641
  - 🐛 **Bugfixes** für Session-Management
146
642
  - 💎 **Optimierungen** für Multi-Device-Umgebungen
643
+ - 📦 **Aktualisiert** auf Basis von @whiskeysockets/baileys 7.0.0-rc.9
644
+ - 🎨 **Verbesserte QR-Code-Anzeige** mit Version-Info
645
+
646
+ ### 🔄 **Verbesserungen**
647
+
648
+ - Verbesserte Fehlerbehandlung
649
+ - Optimierte Session-Verwaltung
650
+ - Schnellere Verbindungsaufbau
651
+ - Bessere LID-Unterstützung
652
+ - Smart Queue Integration möglich
147
653
 
148
654
  ---
149
655
 
150
- ## 👩‍💻 Autorin & Support
656
+ ## 💬 Support & Community
657
+
658
+ <div align="center">
659
+
660
+ ### 🌸 **Made with Love by @neelegirl** 🌸
661
+
662
+ [![GitHub](https://img.shields.io/badge/GitHub-@neelegirl-pink?style=for-the-badge&logo=github)](https://github.com/neelegirl)
663
+ [![Email](https://img.shields.io/badge/Email-Support-pink?style=for-the-badge&logo=gmail)](mailto:neelehoven@gmail.com)
664
+ [![Docs](https://img.shields.io/badge/Docs-wa--api.org-pink?style=for-the-badge)](https://wa-api.org)
665
+
666
+ **⭐ Wenn dir dieses Projekt gefällt, gib ihm ein Star auf GitHub! ⭐**
151
667
 
152
- © 2026 **@neelegirl/wa-api**
153
- 🌸 Made with Love by **Neele**
154
- 💌 Support: [neelehoven@gmail.com](mailto:neelehoven@gmail.com)
155
- 📚 Docs: [wa-api.org](https://wa-api.org)
668
+ </div>
156
669
 
157
670
  ---
158
671
 
159
- ## 💖 Community
672
+ ## 📝 Changelog
160
673
 
161
- Wir danken allen **schönen & treuen Usern**, die diese Library benutzen und supporten.
162
- Euer Vertrauen macht dieses Projekt **LID** und einzigartig. ✨
674
+ ### Version 1.1.0 (Aktuell) 🎉
675
+
676
+ - ✨ Kompatibilität mit @neelegirl/baileys 1.7.0
677
+ - 🚀 Smart Queue Ready - Bereit für Baileys Smart Message Queue
678
+ - 🔔 Auto-Update-Check (nur einmalige Anzeige pro Prozess)
679
+ - 🚀 Verbesserte Stabilität und Fehlerbehandlung
680
+ - 💎 Optimierungen für Multi-Device & Session-Management
681
+
682
+ ### Version 1.0.10
683
+
684
+ - ✨ Automatische Update-Prüfung hinzugefügt
685
+ - 🎨 Verbesserte QR-Code-Anzeige
686
+ - 🔄 Kompatibilität mit @neelegirl/baileys 1.6.6
687
+ - 🚀 Verbesserte Stabilität
688
+ - 🐛 Bugfixes für Session-Management
689
+
690
+ ### Version 1.0.9
691
+
692
+ - 🔔 Update-Benachrichtigung hinzugefügt
693
+ - 💎 Optimierungen für Multi-Device
163
694
 
164
695
  ---
165
- 🌸 *Stay kawaii, stay connected – Onimai forever!* 🌸
696
+
697
+ <div align="center">
698
+
699
+ ### ✨ *Stay kawaii, stay connected – Onimai forever!* ✨
700
+
701
+ **🌸 Made with Love & Glitter 🌸**
702
+
703
+ [⬆️ Nach oben](#-neelegirlwa-api)
704
+
705
+ </div>