@neelegirl/wa-api 1.5.1 → 1.6.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/package.json +32 -10
- package/readme.md +99 -179
package/package.json
CHANGED
|
@@ -1,36 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neelegirl/wa-api",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Multi
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"description": "Multi-session WhatsApp wrapper built on @neelegirl/baileys for QR, pairing and message automation.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
7
15
|
"repository": {
|
|
8
16
|
"type": "git",
|
|
9
17
|
"url": "git+https://github.com/neelegirly/neelegirl-wa-api.git"
|
|
10
18
|
},
|
|
11
19
|
"homepage": "https://github.com/neelegirly/neelegirl-wa-api#readme",
|
|
12
20
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/neelegirly/neelegirl-wa-api"
|
|
21
|
+
"url": "https://github.com/neelegirly/neelegirl-wa-api/issues"
|
|
14
22
|
},
|
|
15
|
-
"
|
|
23
|
+
"keywords": [
|
|
24
|
+
"whatsapp",
|
|
25
|
+
"wa-api",
|
|
26
|
+
"multi-session",
|
|
27
|
+
"pairing",
|
|
28
|
+
"qr",
|
|
29
|
+
"automation",
|
|
30
|
+
"neelegirl"
|
|
31
|
+
],
|
|
32
|
+
"files": [
|
|
33
|
+
"dist/**/*",
|
|
34
|
+
"readme.md",
|
|
35
|
+
"LICENSE"
|
|
36
|
+
],
|
|
16
37
|
"scripts": {
|
|
17
|
-
"
|
|
18
|
-
"start": "tsc && node ./dist/index.js",
|
|
19
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
38
|
+
"start": "node ./dist/index.js",
|
|
20
39
|
"run-script": "node ./dist/index.js"
|
|
21
40
|
},
|
|
22
|
-
"author":
|
|
41
|
+
"author": "Neele",
|
|
23
42
|
"license": "ISC",
|
|
24
43
|
"dependencies": {
|
|
25
|
-
"jest": "^29.0.0",
|
|
26
44
|
"@adiwajshing/keyed-db": "^0.2.4",
|
|
27
45
|
"@hapi/boom": "^10.0.1",
|
|
28
|
-
"@neelegirl/baileys": "^2.0
|
|
46
|
+
"@neelegirl/baileys": "^2.1.0",
|
|
47
|
+
"jest": "^29.0.0",
|
|
29
48
|
"mime": "^3.0.0",
|
|
30
49
|
"pino": "^8.11.0",
|
|
31
50
|
"qrcode-terminal": "^0.12.0"
|
|
32
51
|
},
|
|
33
52
|
"devDependencies": {
|
|
34
53
|
"@types/mime": "^3.0.1"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=20.0.0"
|
|
35
57
|
}
|
|
36
58
|
}
|
package/readme.md
CHANGED
|
@@ -1,243 +1,163 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# @neelegirl/wa-api
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
**Mehrfach-Sessions, QR-Login, Pairing-Code und vereinfachtes Messaging**
|
|
6
|
+
**aufbauend auf dem gepflegten `@neelegirl/baileys`-Fork.**
|
|
7
7
|
|
|
8
|
-
[](https://github.com/neelegirl/wa-api)
|
|
9
|
-
[](https://www.npmjs.com/package/@neelegirl/baileys)
|
|
10
|
-
[](https://github.com/WhiskeySockets/Baileys)
|
|
11
8
|
[](https://www.npmjs.com/package/@neelegirl/wa-api)
|
|
12
|
-
[](https://www.npmjs.com/package/@neelegirl/baileys)
|
|
10
|
+
[](https://nodejs.org)
|
|
16
11
|
|
|
17
12
|
<p align="center">
|
|
18
|
-
<img src="https://files.catbox.moe/
|
|
13
|
+
<img src="https://files.catbox.moe/6np1ii.JPG" width="920" alt="Neelegirl wa-api Hero" />
|
|
19
14
|
</p>
|
|
20
15
|
|
|
21
|
-
| 📦 Paket | 🎯 Baileys | ✨ Highlights |
|
|
22
|
-
|----------|------------|----------------|
|
|
23
|
-
| **@neelegirl/wa-api v1.5.1** | **@neelegirl/baileys 2.0.5** | Multi-Session · QR · Pairing · Update-Check von npm |
|
|
24
|
-
|
|
25
|
-
**✨ v1.5.1** · README Glow-Up · Kompatibel mit **@neelegirl/baileys 2.0.5** & **Baileys API 1.7.2** · Update-Prüfung via npm-Registry
|
|
26
|
-
|
|
27
|
-
[**Installation**](#-installation) · [**Quickstart**](#-quickstart-guide) · [**Features**](#-features) · [**API**](#-vollständige-api-referenz) · [**Support**](#-support--community)
|
|
28
|
-
|
|
29
16
|
</div>
|
|
30
17
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
## 📋 Inhaltsverzeichnis
|
|
34
|
-
|
|
35
|
-
- [✨ Was ist @neelegirl/wa-api?](#-was-ist-neelegirlwa-api)
|
|
36
|
-
- [🚀 Installation](#-installation)
|
|
37
|
-
- [📖 Quickstart Guide](#-quickstart-guide)
|
|
38
|
-
- [✨ Features](#-features)
|
|
39
|
-
- [📲 Session Management](#-session-management)
|
|
40
|
-
- [💬 Nachrichten senden](#-nachrichten-senden)
|
|
41
|
-
- [🎧 Event Listener](#-event-listener)
|
|
42
|
-
- [🔧 Erweiterte Funktionen](#-erweiterte-funktionen)
|
|
43
|
-
- [📚 Vollständige API-Referenz](#-vollständige-api-referenz)
|
|
44
|
-
- [⚠️ Wichtige Hinweise](#️-wichtige-hinweise)
|
|
45
|
-
- [💬 Support & Community](#-support--community)
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## ✨ Was ist @neelegirl/wa-api?
|
|
50
|
-
|
|
51
|
-
<div align="center">
|
|
52
|
-
|
|
53
|
-
### 🎯 **Die perfekte Lösung für Multi-Session WhatsApp Bots** 🎯
|
|
54
|
-
|
|
55
|
-
</div>
|
|
18
|
+
## Überblick
|
|
56
19
|
|
|
57
|
-
|
|
58
|
-
|---------|-------------|--------|
|
|
59
|
-
| 🔀 **Multi-Session** | Mehrere WhatsApp-Sessions gleichzeitig | ✅ |
|
|
60
|
-
| 💎 **Universal API** | Einfache `sendMessage` für alle Typen | ✅ |
|
|
61
|
-
| ⚡ **RelayMessage** | Direkte Nachrichten-Weiterleitung | ✅ |
|
|
62
|
-
| 🔄 **Auto-Reconnect** | Automatisches Wiederverbinden | ✅ |
|
|
63
|
-
| 📱 **QR-Code** | Schöne QR-Code-Anzeige | ✅ |
|
|
64
|
-
| 🔔 **Auto-Updates** | Automatische Update-Prüfung (nur einmal) | ✅ |
|
|
65
|
-
| 🧩 **LID-Support** | Vollständige LID-Kompatibilität | ✅ |
|
|
66
|
-
| 🎨 **Einfach** | Simple API für Anfänger | ✅ |
|
|
67
|
-
| 🚀 **Smart Queue** | Nutzt Baileys Smart Message Queue | ✅ |
|
|
20
|
+
`@neelegirl/wa-api` ist die bequemere Multi-Session-Schicht für Projekte, die nicht direkt auf der vollständigen Baileys-Oberfläche arbeiten wollen. Das Paket nutzt `@neelegirl/baileys` als eigentliche WhatsApp-Web-Basis und stellt darauf ein kompakteres API-Set für Sessions, Event-Hooks und das Senden von Nachrichten bereit.
|
|
68
21
|
|
|
69
|
-
|
|
22
|
+
## Update-Stand
|
|
70
23
|
|
|
71
|
-
|
|
24
|
+
- abgestimmt auf `@neelegirl/baileys@2.1.x`
|
|
25
|
+
- Dokumentation auf den realen Dist-Exports bereinigt
|
|
26
|
+
- Bild/Branding modernisiert
|
|
27
|
+
- Hinweise ergänzt, was lokal funktioniert und was bewusst nicht behauptet wird
|
|
72
28
|
|
|
73
|
-
|
|
29
|
+
**Wichtig:** `wa-api` baut auf dem aktualisierten Neelegirl-Baileys-Fork auf. Es ist keine eigenständige Neuimplementierung von WhiskeySockets/Baileys, sondern eine Wrapper-Schicht darüber.
|
|
74
30
|
|
|
75
|
-
|
|
31
|
+
## Installation
|
|
76
32
|
|
|
77
33
|
```bash
|
|
78
|
-
npm install @neelegirl/wa-api@
|
|
34
|
+
npm install @neelegirl/wa-api @neelegirl/baileys
|
|
79
35
|
```
|
|
80
36
|
|
|
81
|
-
|
|
37
|
+
oder:
|
|
82
38
|
|
|
83
39
|
```bash
|
|
84
|
-
yarn add @neelegirl/wa-api@
|
|
40
|
+
yarn add @neelegirl/wa-api @neelegirl/baileys
|
|
85
41
|
```
|
|
86
42
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```javascript
|
|
90
|
-
// CommonJS
|
|
91
|
-
const onimai = require('@neelegirl/wa-api');
|
|
92
|
-
|
|
93
|
-
// ES Module
|
|
94
|
-
import * as onimai from '@neelegirl/wa-api';
|
|
95
|
-
```
|
|
43
|
+
## Voraussetzungen
|
|
96
44
|
|
|
97
|
-
|
|
45
|
+
- Node.js `20+`
|
|
46
|
+
- WhatsApp Multi-Device-Konto
|
|
47
|
+
- persistenter Speicherort für Sessiondaten
|
|
98
48
|
|
|
99
|
-
##
|
|
49
|
+
## Schnellstart
|
|
100
50
|
|
|
101
|
-
|
|
51
|
+
```js
|
|
52
|
+
const wa = require('@neelegirl/wa-api')
|
|
102
53
|
|
|
103
|
-
|
|
104
|
-
|
|
54
|
+
async function bootstrap() {
|
|
55
|
+
await wa.startSession('main-session', {
|
|
56
|
+
printQR: true
|
|
57
|
+
})
|
|
105
58
|
|
|
106
|
-
|
|
107
|
-
async function start() {
|
|
108
|
-
// Session starten
|
|
109
|
-
await onimai.startSession('meine-session', {
|
|
110
|
-
printQR: true // QR-Code anzeigen
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
console.log('✅ Session gestartet!');
|
|
59
|
+
console.log('Session gestartet')
|
|
114
60
|
}
|
|
115
61
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const from = key.remoteJid;
|
|
120
|
-
const text = message?.conversation || message?.extendedTextMessage?.text || '';
|
|
121
|
-
|
|
122
|
-
// Echo-Bot
|
|
123
|
-
if (text.toLowerCase() === 'hallo') {
|
|
124
|
-
await onimai.sendMessage(sessionId, from, {
|
|
125
|
-
text: '🌸 Hallo! Ich bin ein Onimai-Bot! ✨'
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
});
|
|
62
|
+
wa.onConnected((sessionId) => {
|
|
63
|
+
console.log(`[${sessionId}] verbunden`)
|
|
64
|
+
})
|
|
129
65
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
});
|
|
66
|
+
wa.onDisconnected((sessionId) => {
|
|
67
|
+
console.log(`[${sessionId}] getrennt`)
|
|
68
|
+
})
|
|
134
69
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
70
|
+
wa.onMessageReceived(async ({ sessionId, key, message }) => {
|
|
71
|
+
const jid = key.remoteJid
|
|
72
|
+
const text = message?.conversation || message?.extendedTextMessage?.text || ''
|
|
138
73
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
74
|
+
if (text.toLowerCase() === 'ping') {
|
|
75
|
+
await wa.sendMessage(sessionId, jid, { text: 'pong' })
|
|
76
|
+
}
|
|
77
|
+
})
|
|
142
78
|
|
|
143
|
-
|
|
79
|
+
bootstrap().catch(console.error)
|
|
80
|
+
```
|
|
144
81
|
|
|
145
|
-
|
|
146
|
-
2. **`onMessageReceived`**: Event-Handler für neue Nachrichten
|
|
147
|
-
3. **`sendMessage`**: Sendet Nachrichten an einen Chat
|
|
148
|
-
4. **`onConnected`/`onDisconnected`**: Events für Verbindungsstatus
|
|
82
|
+
## Session-API
|
|
149
83
|
|
|
150
|
-
|
|
84
|
+
### Starten
|
|
151
85
|
|
|
152
|
-
|
|
86
|
+
```js
|
|
87
|
+
await wa.startSession('session-a', { printQR: true })
|
|
153
88
|
|
|
154
|
-
|
|
89
|
+
await wa.startSessionWithPairingCode('session-b', {
|
|
90
|
+
phoneNumber: '491234567890'
|
|
91
|
+
})
|
|
92
|
+
```
|
|
155
93
|
|
|
156
|
-
|
|
157
|
-
- ✅ **Universal sendMessage** - Einfache API für alle Nachrichtentypen
|
|
158
|
-
- ✅ **Auto-Reconnect** - Automatisches Wiederverbinden bei Verbindungsabbruch
|
|
159
|
-
- ✅ **QR-Code Display** - Schöne QR-Code-Anzeige im Terminal
|
|
160
|
-
- ✅ **Auto-Update-Check** - Automatische Prüfung auf neue Versionen (nur einmal pro Prozess)
|
|
161
|
-
- ✅ **LID-Kompatibel** - Vollständige Linked ID Unterstützung
|
|
162
|
-
- ✅ **Session-Management** - Einfaches Starten, Stoppen und Verwalten
|
|
163
|
-
- ✅ **Event-System** - Umfangreiches Event-System für alle Events
|
|
164
|
-
- ✅ **Smart Queue Ready** - Kompatibel mit Baileys Smart Message Queue
|
|
94
|
+
### Verwalten
|
|
165
95
|
|
|
166
|
-
|
|
96
|
+
```js
|
|
97
|
+
const all = wa.getAllSession()
|
|
98
|
+
const one = wa.getSession('session-a')
|
|
167
99
|
|
|
168
|
-
|
|
100
|
+
await wa.deleteSession('session-a')
|
|
101
|
+
await wa.loadSessionsFromStorage()
|
|
102
|
+
```
|
|
169
103
|
|
|
170
|
-
|
|
104
|
+
## Messaging
|
|
171
105
|
|
|
172
|
-
|
|
173
|
-
// Mit QR-Code (Standard)
|
|
174
|
-
await onimai.startSession('session1', {
|
|
175
|
-
printQR: true // QR-Code im Terminal anzeigen
|
|
176
|
-
});
|
|
106
|
+
Die Dist-API bietet einen universellen `sendMessage`-Wrapper über die aktive Session:
|
|
177
107
|
|
|
178
|
-
|
|
179
|
-
await
|
|
180
|
-
|
|
181
|
-
})
|
|
108
|
+
```js
|
|
109
|
+
await wa.sendMessage('session-a', '491234567890@s.whatsapp.net', {
|
|
110
|
+
text: 'Hallo aus wa-api'
|
|
111
|
+
})
|
|
182
112
|
```
|
|
183
113
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
```javascript
|
|
187
|
-
// Alle Sessions auflisten
|
|
188
|
-
const allSessions = onimai.getAllSession();
|
|
189
|
-
console.log('Aktive Sessions:', allSessions);
|
|
190
|
-
// Output: ['session1', 'session2', 'session3']
|
|
114
|
+
Zusätzlich gibt es `relayMessage`, wenn du gezielt weiterleiten bzw. rohe Baileys-Pfade der Session nutzen willst.
|
|
191
115
|
|
|
192
|
-
|
|
193
|
-
const session = onimai.getSession('session1');
|
|
194
|
-
if (session) {
|
|
195
|
-
console.log('Session gefunden!');
|
|
196
|
-
}
|
|
116
|
+
## Event-Hooks
|
|
197
117
|
|
|
198
|
-
|
|
199
|
-
await onimai.deleteSession('session1');
|
|
200
|
-
```
|
|
118
|
+
Vorhandene Event-Helper im Dist-Build:
|
|
201
119
|
|
|
202
|
-
|
|
120
|
+
- `onMessageReceived(listener)`
|
|
121
|
+
- `onQRUpdated(listener)`
|
|
122
|
+
- `onConnected(listener)`
|
|
123
|
+
- `onDisconnected(listener)`
|
|
124
|
+
- `onConnecting(listener)`
|
|
125
|
+
- `onMessageUpdate(listener)`
|
|
126
|
+
- `onPairingCode(listener)`
|
|
203
127
|
|
|
204
|
-
|
|
205
|
-
// Alle gespeicherten Sessions automatisch laden
|
|
206
|
-
const loadedSessions = await onimai.loadSessionsFromStorage();
|
|
207
|
-
console.log('Geladene Sessions:', loadedSessions);
|
|
208
|
-
// Output: ['session1', 'session2']
|
|
209
|
-
```
|
|
128
|
+
## Konsole beim Start
|
|
210
129
|
|
|
211
|
-
|
|
130
|
+
Diese Zustände sind beim echten Start normal:
|
|
212
131
|
|
|
213
|
-
|
|
132
|
+
- QR wird im Terminal angezeigt, wenn noch keine Session gespeichert ist
|
|
133
|
+
- Pairing-Code wird ausgegeben, wenn du die Pairing-Variante nutzt
|
|
134
|
+
- `connected`/`disconnected` wechseln bei Reconnects sauber
|
|
135
|
+
- nach `creds.update` bleibt die Session für Folgestarts erhalten
|
|
214
136
|
|
|
215
|
-
|
|
137
|
+
## Was wirklich funktioniert
|
|
216
138
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
139
|
+
- mehrere parallele Sessions
|
|
140
|
+
- Sessionstart per QR
|
|
141
|
+
- Sessionstart per Pairing-Code
|
|
142
|
+
- Nachrichtenversand über aktive Sessions
|
|
143
|
+
- Sessionzugriff über `getSession()` für tiefergehende eigene Arbeit
|
|
144
|
+
- Event-Listener für eingehende Nachrichten und Verbindungsstatus
|
|
220
145
|
|
|
221
|
-
**
|
|
222
|
-
- `sessionId` - Die Session-ID (z.B. 'session1')
|
|
223
|
-
- `jidOrPhone` - WhatsApp-ID oder Telefonnummer (z.B. '491234567890@s.whatsapp.net' oder '491234567890')
|
|
224
|
-
- `content` - Der Nachrichteninhalt (siehe Beispiele unten)
|
|
225
|
-
- `options` - Optionale Parameter (z.B. `{ quoted: message }`)
|
|
146
|
+
## Was bewusst **nicht** behauptet wird
|
|
226
147
|
|
|
227
|
-
|
|
148
|
+
- kein separater, vollständig dokumentierter Source-Build im Paket selbst
|
|
149
|
+
- kein vollständiger Ersatz für das volle Baileys-API-Surface
|
|
150
|
+
- kein Anspruch auf vollständigen Upstream-Gleichstand in jeder internen Implementierungsdetailschicht
|
|
228
151
|
|
|
229
|
-
|
|
152
|
+
## Empfehlung für produktive Nutzung
|
|
230
153
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
});
|
|
235
|
-
```
|
|
154
|
+
- `@neelegirl/baileys` und `@neelegirl/wa-api` immer gemeinsam aktualisieren
|
|
155
|
+
- Sessionordner außerhalb flüchtiger Deploy-Ordner speichern
|
|
156
|
+
- bei Multi-Session-Projekten eigene Health-/Reconnect-Logs ergänzen
|
|
236
157
|
|
|
237
|
-
|
|
158
|
+
## Lizenz
|
|
238
159
|
|
|
239
|
-
|
|
240
|
-
await onimai.sendMessage('session1', '491234567890@s.whatsapp.net', {
|
|
160
|
+
`wa-api` bleibt die einfache Bedienebene. Die technische WhatsApp-Web-Basis stammt aus `@neelegirl/baileys`, das selektiv auf aktuellem WhiskeySockets/Baileys-Wissen aufsetzt.
|
|
241
161
|
image: { url: './bild.jpg' },
|
|
242
162
|
caption: 'Schönes Bild! ✨'
|
|
243
163
|
});
|