@neelegirl/wa-api 1.0.11 → 1.0.13
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/dist/Socket/index.js +4 -30
- package/package.json +2 -2
- package/readme.md +87 -588
package/dist/Socket/index.js
CHANGED
|
@@ -49,29 +49,9 @@ 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.
|
|
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
|
-
};
|
|
52
|
+
const CURRENT_WA_API_VERSION = "1.0.13";
|
|
69
53
|
// Update-Check-Funktion für WA-API
|
|
70
54
|
const checkWaApiUpdate = () => {
|
|
71
|
-
// Wenn bereits angezeigt, nicht erneut prüfen
|
|
72
|
-
if (typeof global !== 'undefined' && global.__waApiUpdateCheckShown) {
|
|
73
|
-
return Promise.resolve(null);
|
|
74
|
-
}
|
|
75
55
|
return new Promise((resolve) => {
|
|
76
56
|
const url = `https://registry.npmjs.org/@neelegirl/wa-api/latest`;
|
|
77
57
|
https_1.default.get(url, { timeout: 5000 }, (res) => {
|
|
@@ -83,13 +63,9 @@ const checkWaApiUpdate = () => {
|
|
|
83
63
|
try {
|
|
84
64
|
const packageInfo = JSON.parse(data);
|
|
85
65
|
const latestVersion = packageInfo.version;
|
|
86
|
-
|
|
87
|
-
if (latestVersion && compareVersions(latestVersion, CURRENT_WA_API_VERSION) > 0) {
|
|
66
|
+
if (latestVersion && latestVersion !== CURRENT_WA_API_VERSION) {
|
|
88
67
|
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`;
|
|
89
68
|
console.log(updateMessage);
|
|
90
|
-
if (typeof global !== 'undefined') {
|
|
91
|
-
global.__waApiUpdateCheckShown = true; // Markiere als angezeigt
|
|
92
|
-
}
|
|
93
69
|
resolve({
|
|
94
70
|
current: CURRENT_WA_API_VERSION,
|
|
95
71
|
latest: latestVersion,
|
|
@@ -97,10 +73,8 @@ const checkWaApiUpdate = () => {
|
|
|
97
73
|
});
|
|
98
74
|
}
|
|
99
75
|
else {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
global.__waApiUpdateCheckShown = true; // Markiere als geprüft
|
|
103
|
-
}
|
|
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);
|
|
104
78
|
resolve({
|
|
105
79
|
current: CURRENT_WA_API_VERSION,
|
|
106
80
|
latest: latestVersion,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neelegirl/wa-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
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.
|
|
30
|
+
"@neelegirl/baileys": "^1.6.9",
|
|
31
31
|
"mime": "^3.0.0",
|
|
32
32
|
"pino": "^8.11.0",
|
|
33
33
|
"qrcode-terminal": "^0.12.0"
|
package/readme.md
CHANGED
|
@@ -1,86 +1,56 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# 💌 @neelegirl/wa-api 💌
|
|
4
|
-
|
|
5
|
-
### ✨ *Die elegante & simple WhatsApp-Bibliothek* ✨
|
|
6
|
-
### 🎀 *Zur Verwaltung mehrerer Sessions* 🎀
|
|
7
|
-
|
|
8
|
-
[](https://github.com/neelegirl/wa-api)
|
|
9
|
-
[](https://www.npmjs.com/package/@neelegirl/wa-api)
|
|
10
|
-
[](https://www.npmjs.com/package/@neelegirl/wa-api)
|
|
11
|
-
[](LICENSE)
|
|
12
|
-
[](https://www.npmjs.com/package/@neelegirl/baileys)
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
1
|
<p align="center">
|
|
17
2
|
<img src="https://files.catbox.moe/63h8xn.jpeg" width="720" alt="Neele WA-API Header" />
|
|
18
3
|
</p>
|
|
19
4
|
|
|
20
|
-
|
|
5
|
+
# 💌 @neelegirl/wa-api → **onimai**
|
|
21
6
|
|
|
22
|
-
|
|
7
|
+
✨ *Die elegante & simple WhatsApp-Bibliothek*
|
|
8
|
+
zur Verwaltung **mehrerer Sessions** – mit
|
|
9
|
+
💎 **universeller `sendMessage`** und direkter
|
|
10
|
+
⚡ **`relayMessage`-Power** für Profis.
|
|
23
11
|
|
|
24
|
-
|
|
12
|
+
<p align="center"><strong>🌟 Version 1.0.9 – Kompatibel mit @neelegirl/baileys 1.6.4 🌟</strong></p>
|
|
25
13
|
|
|
26
14
|
---
|
|
27
15
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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)
|
|
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> ✨
|
|
20
|
+
</p>
|
|
41
21
|
|
|
42
22
|
---
|
|
43
23
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
### 🎯 **Die perfekte Lösung für Multi-Session WhatsApp Bots** 🎯
|
|
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**.
|
|
49
27
|
|
|
50
|
-
|
|
28
|
+
---
|
|
51
29
|
|
|
52
|
-
|
|
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 | ✅ |
|
|
30
|
+
## 📚 Inhaltsverzeichnis
|
|
62
31
|
|
|
63
|
-
|
|
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)
|
|
64
40
|
|
|
65
41
|
---
|
|
66
42
|
|
|
67
|
-
##
|
|
68
|
-
|
|
69
|
-
### 📦 Mit npm
|
|
43
|
+
## 📦 Installation
|
|
70
44
|
|
|
71
45
|
```bash
|
|
72
46
|
npm install @neelegirl/wa-api@latest
|
|
73
47
|
```
|
|
74
48
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
yarn add @neelegirl/wa-api@latest
|
|
79
|
-
```
|
|
49
|
+
---
|
|
80
50
|
|
|
81
|
-
|
|
51
|
+
## 🔌 Import & Setup
|
|
82
52
|
|
|
83
|
-
```
|
|
53
|
+
```js
|
|
84
54
|
// CommonJS
|
|
85
55
|
const onimai = require('@neelegirl/wa-api');
|
|
86
56
|
|
|
@@ -90,577 +60,106 @@ import * as onimai from '@neelegirl/wa-api';
|
|
|
90
60
|
|
|
91
61
|
---
|
|
92
62
|
|
|
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
|
-
|
|
161
63
|
## 📲 Session Management
|
|
162
64
|
|
|
163
|
-
|
|
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)
|
|
65
|
+
```js
|
|
66
|
+
await onimai.startSession('session1');
|
|
172
67
|
await onimai.startSessionWithPairingCode('session2', {
|
|
173
|
-
phoneNumber: '491234567890'
|
|
68
|
+
phoneNumber: '491234567890'
|
|
174
69
|
});
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
```javascript
|
|
180
|
-
// Alle Sessions auflisten
|
|
181
|
-
const allSessions = onimai.getAllSession();
|
|
182
|
-
console.log('Aktive Sessions:', allSessions);
|
|
183
|
-
// Output: ['session1', 'session2', 'session3']
|
|
184
|
-
|
|
185
|
-
// Eine Session abrufen
|
|
186
|
-
const session = onimai.getSession('session1');
|
|
187
|
-
if (session) {
|
|
188
|
-
console.log('Session gefunden!');
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// Session löschen
|
|
192
|
-
await onimai.deleteSession('session1');
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### 💾 **Sessions aus Storage laden**
|
|
196
|
-
|
|
197
|
-
```javascript
|
|
198
|
-
// Alle gespeicherten Sessions automatisch laden
|
|
199
|
-
const loadedSessions = await onimai.loadSessionsFromStorage();
|
|
200
|
-
console.log('Geladene Sessions:', loadedSessions);
|
|
201
|
-
// Output: ['session1', 'session2']
|
|
70
|
+
const all = onimai.getAllSession();
|
|
71
|
+
const one = onimai.getSession('session1');
|
|
72
|
+
const loaded = await onimai.loadSessionsFromStorage();
|
|
202
73
|
```
|
|
203
74
|
|
|
204
75
|
---
|
|
205
76
|
|
|
206
|
-
## 💬 Nachrichten senden
|
|
207
|
-
|
|
208
|
-
### 📨 **Grundlegende Verwendung**
|
|
77
|
+
## 💬 Nachrichten senden (`sendMessage`)
|
|
209
78
|
|
|
210
|
-
```
|
|
211
|
-
await
|
|
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**
|
|
223
|
-
|
|
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
|
-
});
|
|
79
|
+
```js
|
|
80
|
+
await onimai1.sendMessage(sessionId, jidOrPhone, content, options);
|
|
237
81
|
```
|
|
238
82
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
```javascript
|
|
242
|
-
await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
|
|
243
|
-
video: { url: './video.mp4' },
|
|
244
|
-
caption: 'Mein Video! 🎬'
|
|
245
|
-
});
|
|
246
|
-
```
|
|
247
|
-
|
|
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
|
-
```
|
|
83
|
+
### ✨ Beispiele
|
|
293
84
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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
|
-
```
|
|
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' }` |
|
|
392
101
|
|
|
393
102
|
---
|
|
394
103
|
|
|
395
|
-
##
|
|
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
|
-
});
|
|
104
|
+
## 🔧 Spezialfunktionen (`relayMessage`)
|
|
452
105
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
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**
|
|
458
113
|
|
|
459
|
-
|
|
114
|
+
➡️ Beispiele siehe Code im Repo – alle Funktionen sind out-of-the-box!
|
|
460
115
|
|
|
461
|
-
|
|
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
|
-
```
|
|
116
|
+
---
|
|
470
117
|
|
|
471
|
-
|
|
118
|
+
## 🎧 Listener
|
|
472
119
|
|
|
473
|
-
```
|
|
474
|
-
onimai.
|
|
475
|
-
|
|
476
|
-
|
|
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));
|
|
477
124
|
```
|
|
478
125
|
|
|
479
126
|
---
|
|
480
127
|
|
|
481
|
-
##
|
|
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'];
|
|
128
|
+
## 🚨 Fehlerbehandlung
|
|
512
129
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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
|
-
}
|
|
130
|
+
```js
|
|
131
|
+
try {
|
|
132
|
+
await onimai1.sendMessage(...);
|
|
133
|
+
} catch (e) {
|
|
134
|
+
console.error('⚠️ Fehler:', e);
|
|
525
135
|
}
|
|
526
136
|
```
|
|
527
137
|
|
|
528
138
|
---
|
|
529
139
|
|
|
530
|
-
##
|
|
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
|
|
140
|
+
## 🆕 Was ist neu in Version 1.0.9?
|
|
594
141
|
|
|
595
|
-
|
|
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)
|
|
142
|
+
- ✅ **Kompatibilität** mit @neelegirl/baileys 1.6.4
|
|
143
|
+
- 🔔 **Update-Benachrichtigung** – Automatische Prüfung auf neue Versionen beim Start
|
|
610
144
|
- 🚀 **Verbesserte Stabilität** und Performance
|
|
611
145
|
- 🐛 **Bugfixes** für Session-Management
|
|
612
146
|
- 💎 **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
|
|
622
147
|
|
|
623
148
|
---
|
|
624
149
|
|
|
625
|
-
##
|
|
626
|
-
|
|
627
|
-
<div align="center">
|
|
628
|
-
|
|
629
|
-
### 🌸 **Made with Love by @neelegirl** 🌸
|
|
150
|
+
## 👩💻 Autorin & Support
|
|
630
151
|
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
[
|
|
634
|
-
|
|
635
|
-
**⭐ Wenn dir dieses Projekt gefällt, gib ihm ein Star auf GitHub! ⭐**
|
|
636
|
-
|
|
637
|
-
</div>
|
|
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)
|
|
638
156
|
|
|
639
157
|
---
|
|
640
158
|
|
|
641
|
-
##
|
|
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
|
|
159
|
+
## 💖 Community
|
|
652
160
|
|
|
653
|
-
|
|
654
|
-
|
|
161
|
+
Wir danken allen **schönen & treuen Usern**, die diese Library benutzen und supporten.
|
|
162
|
+
Euer Vertrauen macht dieses Projekt **LID** und einzigartig. ✨
|
|
655
163
|
|
|
656
164
|
---
|
|
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>
|
|
165
|
+
🌸 *Stay kawaii, stay connected – Onimai forever!* 🌸
|