@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.
- package/dist/Socket/index.js +30 -4
- package/package.json +2 -2
- package/readme.md +588 -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.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
|
-
|
|
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.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.
|
|
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
|
-
<
|
|
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 elegante & simple WhatsApp-Bibliothek*
|
|
8
|
-
|
|
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
|
-
|
|
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
|
+
**🌟 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
|
-
|
|
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 | ✅ |
|
|
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
|
-
##
|
|
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
|
-
|
|
81
|
+
### 📥 Import
|
|
52
82
|
|
|
53
|
-
```
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
185
|
+
// Eine Session abrufen
|
|
186
|
+
const session = onimai.getSession('session1');
|
|
187
|
+
if (session) {
|
|
188
|
+
console.log('Session gefunden!');
|
|
189
|
+
}
|
|
78
190
|
|
|
79
|
-
|
|
80
|
-
await
|
|
191
|
+
// Session löschen
|
|
192
|
+
await onimai.deleteSession('session1');
|
|
81
193
|
```
|
|
82
194
|
|
|
83
|
-
###
|
|
195
|
+
### 💾 **Sessions aus Storage laden**
|
|
84
196
|
|
|
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' }` |
|
|
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
|
-
##
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
121
|
-
onimai.
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
143
|
-
|
|
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
|
-
##
|
|
625
|
+
## 💬 Support & Community
|
|
626
|
+
|
|
627
|
+
<div align="center">
|
|
628
|
+
|
|
629
|
+
### 🌸 **Made with Love by @neelegirl** 🌸
|
|
151
630
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
631
|
+
[](https://github.com/neelegirl)
|
|
632
|
+
[](mailto:neelehoven@gmail.com)
|
|
633
|
+
[](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
|
-
##
|
|
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
|
-
|
|
162
|
-
|
|
653
|
+
- 🔔 Update-Benachrichtigung hinzugefügt
|
|
654
|
+
- 💎 Optimierungen für Multi-Device
|
|
163
655
|
|
|
164
656
|
---
|
|
165
|
-
|
|
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>
|