@neelegirl/wa-api 1.0.9 → 1.0.11

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.9";
52
+ const CURRENT_WA_API_VERSION = "1.0.10";
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.9",
3
+ "version": "1.0.11",
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.4",
30
+ "@neelegirl/baileys": "^1.6.7",
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,86 @@
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 elegante & simple WhatsApp-Bibliothek*
6
+ ### 🎀 *Zur Verwaltung mehrerer Sessions* 🎀
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.0.10-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.6.6-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
+ **🌟 Kompatibel mit @neelegirl/baileys 1.6.6 🌟**
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 | ✅ |
60
+ | 🧩 **LID-Support** | Vollständige LID-Kompatibilität | ✅ |
61
+ | 🎨 **Einfach** | Simple API für Anfänger | ✅ |
62
+
63
+ > ⚠️ **Wichtig**: Diese Library funktioniert **ausschließlich** mit **@neelegirl/baileys**!
40
64
 
41
65
  ---
42
66
 
43
- ## 📦 Installation
67
+ ## 🚀 Installation
68
+
69
+ ### 📦 Mit npm
44
70
 
45
71
  ```bash
46
72
  npm install @neelegirl/wa-api@latest
47
73
  ```
48
74
 
49
- ---
75
+ ### 📦 Mit yarn
76
+
77
+ ```bash
78
+ yarn add @neelegirl/wa-api@latest
79
+ ```
50
80
 
51
- ## 🔌 Import & Setup
81
+ ### 📥 Import
52
82
 
53
- ```js
83
+ ```javascript
54
84
  // CommonJS
55
85
  const onimai = require('@neelegirl/wa-api');
56
86
 
@@ -60,106 +90,577 @@ import * as onimai from '@neelegirl/wa-api';
60
90
 
61
91
  ---
62
92
 
93
+ ## 📖 Quickstart Guide
94
+
95
+ ### 🎯 **Für Anfänger: Dein erster Multi-Session Bot**
96
+
97
+ ```javascript
98
+ const onimai = require('@neelegirl/wa-api');
99
+
100
+ // 1️⃣ Session starten (mit QR-Code)
101
+ async function start() {
102
+ // Session starten
103
+ await onimai.startSession('meine-session', {
104
+ printQR: true // QR-Code anzeigen
105
+ });
106
+
107
+ console.log('✅ Session gestartet!');
108
+ }
109
+
110
+ // 2️⃣ Nachrichten empfangen
111
+ onimai.onMessageReceived(async (msg) => {
112
+ const { sessionId, key, message } = msg;
113
+ const from = key.remoteJid;
114
+ const text = message?.conversation || message?.extendedTextMessage?.text || '';
115
+
116
+ // Echo-Bot
117
+ if (text.toLowerCase() === 'hallo') {
118
+ await onimai.sendMessage(sessionId, from, {
119
+ text: '🌸 Hallo! Ich bin ein Onimai-Bot! ✨'
120
+ });
121
+ }
122
+ });
123
+
124
+ // 3️⃣ Verbindungs-Status
125
+ onimai.onConnected((sessionId) => {
126
+ console.log(`✅ Session ${sessionId} ist verbunden!`);
127
+ });
128
+
129
+ onimai.onDisconnected((sessionId) => {
130
+ console.log(`❌ Session ${sessionId} wurde getrennt`);
131
+ });
132
+
133
+ // Bot starten
134
+ start().catch(console.error);
135
+ ```
136
+
137
+ ### 🎨 **Was passiert hier?**
138
+
139
+ 1. **`startSession`**: Startet eine neue WhatsApp-Session mit QR-Code
140
+ 2. **`onMessageReceived`**: Event-Handler für neue Nachrichten
141
+ 3. **`sendMessage`**: Sendet Nachrichten an einen Chat
142
+ 4. **`onConnected`/`onDisconnected`**: Events für Verbindungsstatus
143
+
144
+ ---
145
+
146
+ ## ✨ Features
147
+
148
+ ### 🔥 **Hauptfeatures**
149
+
150
+ - ✅ **Multi-Session Support** - Mehrere Sessions gleichzeitig verwalten
151
+ - ✅ **Universal sendMessage** - Einfache API für alle Nachrichtentypen
152
+ - ✅ **Auto-Reconnect** - Automatisches Wiederverbinden bei Verbindungsabbruch
153
+ - ✅ **QR-Code Display** - Schöne QR-Code-Anzeige im Terminal
154
+ - ✅ **Auto-Update-Check** - Automatische Prüfung auf neue Versionen
155
+ - ✅ **LID-Kompatibel** - Vollständige Linked ID Unterstützung
156
+ - ✅ **Session-Management** - Einfaches Starten, Stoppen und Verwalten
157
+ - ✅ **Event-System** - Umfangreiches Event-System für alle Events
158
+
159
+ ---
160
+
63
161
  ## 📲 Session Management
64
162
 
65
- ```js
66
- await onimai.startSession('session1');
163
+ ### 🚀 **Session starten**
164
+
165
+ ```javascript
166
+ // Mit QR-Code (Standard)
167
+ await onimai.startSession('session1', {
168
+ printQR: true // QR-Code im Terminal anzeigen
169
+ });
170
+
171
+ // Mit Pairing-Code (ohne QR-Code)
67
172
  await onimai.startSessionWithPairingCode('session2', {
68
- phoneNumber: '491234567890'
173
+ phoneNumber: '491234567890' // Ohne +, mit Ländercode
69
174
  });
70
- const all = onimai.getAllSession();
71
- const one = onimai.getSession('session1');
72
- const loaded = await onimai.loadSessionsFromStorage();
73
175
  ```
74
176
 
75
- ---
177
+ ### 📋 **Sessions verwalten**
178
+
179
+ ```javascript
180
+ // Alle Sessions auflisten
181
+ const allSessions = onimai.getAllSession();
182
+ console.log('Aktive Sessions:', allSessions);
183
+ // Output: ['session1', 'session2', 'session3']
76
184
 
77
- ## 💬 Nachrichten senden (`sendMessage`)
185
+ // Eine Session abrufen
186
+ const session = onimai.getSession('session1');
187
+ if (session) {
188
+ console.log('Session gefunden!');
189
+ }
78
190
 
79
- ```js
80
- await onimai1.sendMessage(sessionId, jidOrPhone, content, options);
191
+ // Session löschen
192
+ await onimai.deleteSession('session1');
81
193
  ```
82
194
 
83
- ### Beispiele
195
+ ### 💾 **Sessions aus Storage laden**
84
196
 
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' }` |
197
+ ```javascript
198
+ // Alle gespeicherten Sessions automatisch laden
199
+ const loadedSessions = await onimai.loadSessionsFromStorage();
200
+ console.log('Geladene Sessions:', loadedSessions);
201
+ // Output: ['session1', 'session2']
202
+ ```
101
203
 
102
204
  ---
103
205
 
104
- ## 🔧 Spezialfunktionen (`relayMessage`)
206
+ ## 💬 Nachrichten senden
207
+
208
+ ### 📨 **Grundlegende Verwendung**
209
+
210
+ ```javascript
211
+ await onimai.sendMessage(sessionId, jidOrPhone, content, options);
212
+ ```
213
+
214
+ **Parameter:**
215
+ - `sessionId` - Die Session-ID (z.B. 'session1')
216
+ - `jidOrPhone` - WhatsApp-ID oder Telefonnummer (z.B. '491234567890@s.whatsapp.net' oder '491234567890')
217
+ - `content` - Der Nachrichteninhalt (siehe Beispiele unten)
218
+ - `options` - Optionale Parameter (z.B. `{ quoted: message }`)
219
+
220
+ ### 📝 **Nachrichtentypen**
221
+
222
+ #### 1. **Text-Nachricht**
105
223
 
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**
224
+ ```javascript
225
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
226
+ text: 'Hallo! 🌸'
227
+ });
228
+ ```
229
+
230
+ #### 2. **Bild mit Caption**
231
+
232
+ ```javascript
233
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
234
+ image: { url: './bild.jpg' },
235
+ caption: 'Schönes Bild! ✨'
236
+ });
237
+ ```
238
+
239
+ #### 3. **Video**
240
+
241
+ ```javascript
242
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
243
+ video: { url: './video.mp4' },
244
+ caption: 'Mein Video! 🎬'
245
+ });
246
+ ```
113
247
 
114
- ➡️ Beispiele siehe Code im Repo – alle Funktionen sind out-of-the-box!
248
+ #### 4. **GIF (als Video)**
249
+
250
+ ```javascript
251
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
252
+ video: { url: './animation.mp4' },
253
+ gifPlayback: true, // Wichtig für GIFs!
254
+ caption: 'Kawaii GIF! ✨'
255
+ });
256
+ ```
257
+
258
+ #### 5. **Audio/Sprachnachricht**
259
+
260
+ ```javascript
261
+ const fs = require('fs');
262
+
263
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
264
+ audio: fs.createReadStream('./audio.ogg'),
265
+ mimetype: 'audio/ogg',
266
+ ptt: true // Push-to-Talk (Sprachnachricht)
267
+ });
268
+ ```
269
+
270
+ #### 6. **Dokument**
271
+
272
+ ```javascript
273
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
274
+ document: {
275
+ url: './dokument.pdf',
276
+ filename: 'Wichtiges Dokument.pdf'
277
+ },
278
+ mimetype: 'application/pdf'
279
+ });
280
+ ```
281
+
282
+ #### 7. **Umfrage (Poll)**
283
+
284
+ ```javascript
285
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
286
+ poll: {
287
+ name: 'Was ist deine Lieblingsfarbe?',
288
+ values: ['Rot', 'Blau', 'Grün', 'Gelb'],
289
+ selectableCount: 1 // Anzahl der auswählbaren Optionen
290
+ }
291
+ });
292
+ ```
293
+
294
+ #### 8. **Reaktion**
295
+
296
+ ```javascript
297
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
298
+ react: {
299
+ text: '❤️', // Emoji
300
+ key: message.key // Key der Nachricht
301
+ }
302
+ });
303
+
304
+ // Reaktion entfernen
305
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
306
+ react: {
307
+ text: '', // Leerer String entfernt Reaktion
308
+ key: message.key
309
+ }
310
+ });
311
+ ```
312
+
313
+ #### 9. **Nachricht löschen**
314
+
315
+ ```javascript
316
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
317
+ delete: message.key // Für alle löschen
318
+ });
319
+ ```
320
+
321
+ #### 10. **Nachricht anpinnen**
322
+
323
+ ```javascript
324
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
325
+ pin: {
326
+ type: 1, // 0 = entfernen, 1 = anpinnen
327
+ time: 86400, // Sekunden (24h = 86400)
328
+ key: message.key
329
+ }
330
+ });
331
+ ```
332
+
333
+ #### 11. **Kontakt teilen**
334
+
335
+ ```javascript
336
+ const vcard = `BEGIN:VCARD
337
+ VERSION:3.0
338
+ FN:Max Mustermann
339
+ TEL;type=CELL;type=VOICE;waid=491234567890:+49 123 4567890
340
+ END:VCARD`;
341
+
342
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
343
+ contacts: {
344
+ displayName: 'Max Mustermann',
345
+ contacts: [{ vcard }]
346
+ }
347
+ });
348
+ ```
349
+
350
+ #### 12. **Standort**
351
+
352
+ ```javascript
353
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
354
+ location: {
355
+ degreesLatitude: 52.520008,
356
+ degreesLongitude: 13.404954
357
+ }
358
+ });
359
+ ```
360
+
361
+ #### 13. **Nachricht weiterleiten**
362
+
363
+ ```javascript
364
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
365
+ forward: originalMessage // Originale Nachricht
366
+ });
367
+ ```
368
+
369
+ #### 14. **Mit Quote (Antwort)**
370
+
371
+ ```javascript
372
+ await onimai.sendMessage(
373
+ 'session1',
374
+ '491234567890@s.whatsapp.net',
375
+ {
376
+ text: 'Das ist eine Antwort!'
377
+ },
378
+ {
379
+ quoted: originalMessage // Originale Nachricht
380
+ }
381
+ );
382
+ ```
383
+
384
+ #### 15. **Mit Erwähnung**
385
+
386
+ ```javascript
387
+ await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
388
+ text: '@491111111111 Hallo!',
389
+ mentions: ['491111111111@s.whatsapp.net']
390
+ });
391
+ ```
115
392
 
116
393
  ---
117
394
 
118
- ## 🎧 Listener
395
+ ## 🎧 Event Listener
396
+
397
+ ### 📥 **Nachrichten empfangen**
398
+
399
+ ```javascript
400
+ onimai.onMessageReceived(async (msg) => {
401
+ const {
402
+ sessionId, // Session-ID
403
+ key, // Message-Key (id, remoteJid, fromMe)
404
+ message, // Nachrichteninhalt
405
+ messageTimestamp // Zeitstempel
406
+ } = msg;
407
+
408
+ const from = key.remoteJid;
409
+ const text = message?.conversation || message?.extendedTextMessage?.text || '';
410
+
411
+ console.log(`📥 Neue Nachricht von ${from}: ${text}`);
412
+
413
+ // Medien speichern (wenn vorhanden)
414
+ if (message?.imageMessage) {
415
+ await msg.saveImage('./downloads/');
416
+ }
417
+ if (message?.videoMessage) {
418
+ await msg.saveVideo('./downloads/');
419
+ }
420
+ if (message?.documentMessage) {
421
+ await msg.saveDocument('./downloads/');
422
+ }
423
+ });
424
+ ```
425
+
426
+ ### 🔄 **Nachrichten-Updates**
427
+
428
+ ```javascript
429
+ onimai.onMessageUpdate((sessionId, data) => {
430
+ const {
431
+ update, // Update-Objekt
432
+ messageStatus // Lesbarer Status
433
+ } = data;
434
+
435
+ console.log(`📊 Status Update: ${messageStatus}`);
436
+ // Mögliche Status: 'sent', 'delivered', 'read', 'failed'
437
+ });
438
+ ```
439
+
440
+ ### 🔌 **Verbindungs-Events**
441
+
442
+ ```javascript
443
+ // Verbunden
444
+ onimai.onConnected((sessionId) => {
445
+ console.log(`✅ Session ${sessionId} ist jetzt verbunden!`);
446
+ });
447
+
448
+ // Verbindung wird hergestellt
449
+ onimai.onConnecting((sessionId) => {
450
+ console.log(`🔄 Session ${sessionId} verbindet...`);
451
+ });
452
+
453
+ // Getrennt
454
+ onimai.onDisconnected((sessionId) => {
455
+ console.log(`❌ Session ${sessionId} wurde getrennt`);
456
+ });
457
+ ```
458
+
459
+ ### 📱 **QR-Code Updates**
119
460
 
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));
461
+ ```javascript
462
+ onimai.onQRUpdated((info) => {
463
+ const { sessionId, qr } = info;
464
+ console.log(`📱 Neuer QR-Code für Session ${sessionId}:`);
465
+ console.log(qr);
466
+
467
+ // Du kannst den QR-Code auch in eine Datei speichern oder auf einer Webseite anzeigen
468
+ });
469
+ ```
470
+
471
+ ### 🔑 **Pairing-Code**
472
+
473
+ ```javascript
474
+ onimai.onPairingCode((sessionId, code) => {
475
+ console.log(`🔑 Pairing-Code für Session ${sessionId}: ${code}`);
476
+ });
124
477
  ```
125
478
 
126
479
  ---
127
480
 
128
- ## 🚨 Fehlerbehandlung
481
+ ## 🔧 Erweiterte Funktionen
482
+
483
+ ### 💾 **Medien speichern**
484
+
485
+ ```javascript
486
+ onimai.onMessageReceived(async (msg) => {
487
+ // Bild speichern
488
+ if (msg.message?.imageMessage) {
489
+ const path = await msg.saveImage('./downloads/');
490
+ console.log('✅ Bild gespeichert:', path);
491
+ }
492
+
493
+ // Video speichern
494
+ if (msg.message?.videoMessage) {
495
+ const path = await msg.saveVideo('./downloads/');
496
+ console.log('✅ Video gespeichert:', path);
497
+ }
498
+
499
+ // Dokument speichern
500
+ if (msg.message?.documentMessage) {
501
+ const path = await msg.saveDocument('./downloads/');
502
+ console.log('✅ Dokument gespeichert:', path);
503
+ }
504
+ });
505
+ ```
506
+
507
+ ### 🔄 **Multi-Session Beispiel**
508
+
509
+ ```javascript
510
+ // Mehrere Sessions gleichzeitig starten
511
+ const sessions = ['session1', 'session2', 'session3'];
129
512
 
130
- ```js
131
- try {
132
- await onimai1.sendMessage(...);
133
- } catch (e) {
134
- console.error('⚠️ Fehler:', e);
513
+ for (const sessionId of sessions) {
514
+ await onimai.startSession(sessionId, { printQR: true });
515
+ }
516
+
517
+ // Nachricht an alle Sessions senden
518
+ const message = { text: 'Broadcast-Nachricht! 📢' };
519
+ const recipients = ['491234567890@s.whatsapp.net'];
520
+
521
+ for (const sessionId of sessions) {
522
+ for (const recipient of recipients) {
523
+ await onimai.sendMessage(sessionId, recipient, message);
524
+ }
135
525
  }
136
526
  ```
137
527
 
138
528
  ---
139
529
 
140
- ## 🆕 Was ist neu in Version 1.0.9?
530
+ ## 📚 Vollständige API-Referenz
531
+
532
+ ### 🔌 **Session-Funktionen**
533
+
534
+ | Funktion | Beschreibung | Beispiel |
535
+ |----------|-------------|----------|
536
+ | `startSession(id, options)` | Startet eine Session mit QR-Code | `await onimai.startSession('session1')` |
537
+ | `startSessionWithPairingCode(id, options)` | Startet mit Pairing-Code | `await onimai.startSessionWithPairingCode('session2', { phoneNumber: '491234567890' })` |
538
+ | `getAllSession()` | Gibt alle aktiven Sessions zurück | `const sessions = onimai.getAllSession()` |
539
+ | `getSession(id)` | Gibt eine spezifische Session zurück | `const session = onimai.getSession('session1')` |
540
+ | `deleteSession(id)` | Löscht eine Session | `await onimai.deleteSession('session1')` |
541
+ | `loadSessionsFromStorage()` | Lädt alle Sessions aus Storage | `const loaded = await onimai.loadSessionsFromStorage()` |
542
+
543
+ ### 💬 **Nachrichten-Funktionen**
544
+
545
+ | Funktion | Beschreibung |
546
+ |----------|-------------|
547
+ | `sendMessage(sessionId, jid, content, options)` | Sendet eine Nachricht |
548
+
549
+ **Content-Typen:**
550
+ - `{ text: string }` - Text
551
+ - `{ image: { url: string }, caption?: string }` - Bild
552
+ - `{ video: { url: string }, caption?: string, gifPlayback?: boolean }` - Video/GIF
553
+ - `{ audio: Stream, mimetype: string, ptt?: boolean }` - Audio
554
+ - `{ document: { url: string, filename?: string }, mimetype: string }` - Dokument
555
+ - `{ poll: { name: string, values: string[], selectableCount: number } }` - Umfrage
556
+ - `{ react: { text: string, key: MessageKey } }` - Reaktion
557
+ - `{ delete: MessageKey }` - Löschen
558
+ - `{ pin: { type: number, time: number, key: MessageKey } }` - Anpinnen
559
+ - `{ contacts: { displayName: string, contacts: Array } }` - Kontakt
560
+ - `{ location: { degreesLatitude: number, degreesLongitude: number } }` - Standort
561
+ - `{ forward: Message }` - Weiterleiten
562
+
563
+ ### 🎧 **Event-Listener**
564
+
565
+ | Event | Beschreibung | Callback-Parameter |
566
+ |-------|-------------|-------------------|
567
+ | `onMessageReceived` | Neue Nachricht empfangen | `(msg: Message)` |
568
+ | `onMessageUpdate` | Nachrichten-Update | `(sessionId: string, data: UpdateData)` |
569
+ | `onConnected` | Session verbunden | `(sessionId: string)` |
570
+ | `onConnecting` | Session verbindet | `(sessionId: string)` |
571
+ | `onDisconnected` | Session getrennt | `(sessionId: string)` |
572
+ | `onQRUpdated` | QR-Code aktualisiert | `(info: { sessionId: string, qr: string })` |
573
+ | `onPairingCode` | Pairing-Code erhalten | `(sessionId: string, code: string)` |
574
+
575
+ ---
576
+
577
+ ## ⚠️ Wichtige Hinweise
578
+
579
+ ### 🚨 **Disclaimer**
580
+
581
+ > ⚠️ **WICHTIG**: Diese Library funktioniert **ausschließlich** mit **@neelegirl/baileys**!
582
+ >
583
+ > - ✖️ **Kein Spam** oder Massennachrichten
584
+ > - ✖️ **Kein Missbrauch** für unethische Zwecke
585
+ > - ✖️ **Keine Stalkerware** oder automatisierte Überwachung
586
+ > - ✔️ **Verantwortungsvoller Gebrauch** wird erwartet
587
+
588
+ ### 🔒 **Sicherheit**
589
+
590
+ - **Nie** deine Session-Daten öffentlich teilen
591
+ - **Immer** `.gitignore` für Credentials-Ordner verwenden
592
+ - **Regelmäßig** Backups erstellen
593
+ - **Sichere** Passwörter für deine Server verwenden
141
594
 
142
- - **Kompatibilität** mit @neelegirl/baileys 1.6.4
143
- - 🔔 **Update-Benachrichtigung** – Automatische Prüfung auf neue Versionen beim Start
595
+ ### 💡 **Best Practices**
596
+
597
+ 1. **Error-Handling**: Immer try-catch für wichtige Operationen
598
+ 2. **Rate-Limiting**: Nicht zu viele Nachrichten auf einmal senden
599
+ 3. **Session-Management**: Sessions ordentlich verwalten und löschen wenn nicht mehr benötigt
600
+ 4. **Updates**: Regelmäßig auf Updates prüfen (automatisch aktiviert)
601
+
602
+ ---
603
+
604
+ ## 🆕 Was ist neu in Version 1.0.10?
605
+
606
+ ### ✨ **Neue Features**
607
+
608
+ - ✅ **Kompatibilität** mit @neelegirl/baileys 1.6.6
609
+ - 🔔 **Auto-Update-Check** - Automatische Prüfung auf neue Versionen beim Start (nur einmal angezeigt)
144
610
  - 🚀 **Verbesserte Stabilität** und Performance
145
611
  - 🐛 **Bugfixes** für Session-Management
146
612
  - 💎 **Optimierungen** für Multi-Device-Umgebungen
613
+ - 📦 **Aktualisiert** auf Basis von @whiskeysockets/baileys 7.0.0-rc.9
614
+ - 🎨 **Verbesserte QR-Code-Anzeige** mit Version-Info
615
+
616
+ ### 🔄 **Verbesserungen**
617
+
618
+ - Verbesserte Fehlerbehandlung
619
+ - Optimierte Session-Verwaltung
620
+ - Schnellere Verbindungsaufbau
621
+ - Bessere LID-Unterstützung
147
622
 
148
623
  ---
149
624
 
150
- ## 👩‍💻 Autorin & Support
625
+ ## 💬 Support & Community
626
+
627
+ <div align="center">
628
+
629
+ ### 🌸 **Made with Love by @neelegirl** 🌸
151
630
 
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)
631
+ [![GitHub](https://img.shields.io/badge/GitHub-@neelegirl-pink?style=for-the-badge&logo=github)](https://github.com/neelegirl)
632
+ [![Email](https://img.shields.io/badge/Email-Support-pink?style=for-the-badge&logo=gmail)](mailto:neelehoven@gmail.com)
633
+ [![Docs](https://img.shields.io/badge/Docs-wa--api.org-pink?style=for-the-badge)](https://wa-api.org)
634
+
635
+ **⭐ Wenn dir dieses Projekt gefällt, gib ihm ein Star auf GitHub! ⭐**
636
+
637
+ </div>
156
638
 
157
639
  ---
158
640
 
159
- ## 💖 Community
641
+ ## 📝 Changelog
642
+
643
+ ### Version 1.0.10 (Aktuell)
644
+
645
+ - ✨ Automatische Update-Prüfung hinzugefügt
646
+ - 🎨 Verbesserte QR-Code-Anzeige
647
+ - 🔄 Kompatibilität mit @neelegirl/baileys 1.6.6
648
+ - 🚀 Verbesserte Stabilität
649
+ - 🐛 Bugfixes für Session-Management
650
+
651
+ ### Version 1.0.9
160
652
 
161
- Wir danken allen **schönen & treuen Usern**, die diese Library benutzen und supporten.
162
- Euer Vertrauen macht dieses Projekt **LID** und einzigartig. ✨
653
+ - 🔔 Update-Benachrichtigung hinzugefügt
654
+ - 💎 Optimierungen für Multi-Device
163
655
 
164
656
  ---
165
- 🌸 *Stay kawaii, stay connected – Onimai forever!* 🌸
657
+
658
+ <div align="center">
659
+
660
+ ### ✨ *Stay kawaii, stay connected – Onimai forever!* ✨
661
+
662
+ **🌸 Made with Love & Glitter 🌸**
663
+
664
+ [⬆️ Nach oben](#-neelegirlwa-api)
665
+
666
+ </div>