@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.
- package/dist/Socket/index.js +30 -4
- package/package.json +2 -2
- package/readme.md +627 -87
package/dist/Socket/index.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
77
|
-
|
|
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
|
|
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.
|
|
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
|
-
<
|
|
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
|
|
3
|
+
# 💌 @neelegirl/wa-api 💌
|
|
6
4
|
|
|
7
|
-
✨ *Die
|
|
8
|
-
|
|
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
|
-
|
|
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
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
82
|
+
### 📥 Import
|
|
52
83
|
|
|
53
|
-
```
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
187
|
+
// Eine Session abrufen
|
|
188
|
+
const session = onimai.getSession('session1');
|
|
189
|
+
if (session) {
|
|
190
|
+
console.log('Session gefunden!');
|
|
191
|
+
}
|
|
78
192
|
|
|
79
|
-
|
|
80
|
-
await
|
|
193
|
+
// Session löschen
|
|
194
|
+
await onimai.deleteSession('session1');
|
|
81
195
|
```
|
|
82
196
|
|
|
83
|
-
###
|
|
197
|
+
### 💾 **Sessions aus Storage laden**
|
|
84
198
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
onimai.
|
|
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
|
-
##
|
|
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
|
-
```
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
|
633
|
+
## 🆕 Was ist neu in Version 1.1.0?
|
|
634
|
+
|
|
635
|
+
### ✨ **Neue Features**
|
|
141
636
|
|
|
142
|
-
- ✅ **Kompatibilität** mit @neelegirl/baileys 1.
|
|
143
|
-
-
|
|
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
|
-
##
|
|
656
|
+
## 💬 Support & Community
|
|
657
|
+
|
|
658
|
+
<div align="center">
|
|
659
|
+
|
|
660
|
+
### 🌸 **Made with Love by @neelegirl** 🌸
|
|
661
|
+
|
|
662
|
+
[](https://github.com/neelegirl)
|
|
663
|
+
[](mailto:neelehoven@gmail.com)
|
|
664
|
+
[](https://wa-api.org)
|
|
665
|
+
|
|
666
|
+
**⭐ Wenn dir dieses Projekt gefällt, gib ihm ein Star auf GitHub! ⭐**
|
|
151
667
|
|
|
152
|
-
|
|
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
|
-
##
|
|
672
|
+
## 📝 Changelog
|
|
160
673
|
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
|
|
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>
|