@deathnaitsa/wa-api 2.0.28 → 2.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/CONFIG.md +350 -0
- package/README.md +177 -11
- package/dist/WhatsAppClient.cjs +1 -1
- package/dist/WhatsAppClient.js +1 -1
- package/dist/auth/sqliteAuthState.cjs +1 -1
- package/dist/auth/sqliteAuthState.js +1 -1
- package/dist/config-helper.cjs +1 -0
- package/dist/config-helper.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/wa-api.config.cjs +1 -0
- package/dist/wa-api.config.js +1 -0
- package/examples/config-example.js +41 -0
- package/package.json +1 -1
package/CONFIG.md
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Config-System - Nishi WhatsApp API
|
|
2
|
+
|
|
3
|
+
## 🎯 Überblick
|
|
4
|
+
|
|
5
|
+
Das neue Config-System ermöglicht zentrale Konfiguration aller API-Einstellungen über eine `wa-api.config.js` Datei.
|
|
6
|
+
|
|
7
|
+
## ✨ Vorteile
|
|
8
|
+
|
|
9
|
+
- **Keine Wiederholungen**: Einmal konfigurieren, überall verwenden
|
|
10
|
+
- **Zentrale Verwaltung**: Alle Einstellungen an einem Ort
|
|
11
|
+
- **Einfaches Deployment**: Config-Datei bearbeiten statt Code ändern
|
|
12
|
+
- **Footer/Wasserzeichen**: Automatisch auf alle Nachrichten anwenden
|
|
13
|
+
- **Überschreibbar**: Config-Defaults können jederzeit überschrieben werden
|
|
14
|
+
|
|
15
|
+
## 🚀 Quick Start
|
|
16
|
+
|
|
17
|
+
### 1. Config erstellen
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
import { initConfig } from '@deathnaitsa/wa-api';
|
|
21
|
+
|
|
22
|
+
initConfig(); // Erstellt wa-api.config.js
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 2. Config anpassen
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
// wa-api.config.js
|
|
29
|
+
export const waApiConfig = {
|
|
30
|
+
session: {
|
|
31
|
+
useSqlByDefault: true, // Alle Sessions verwenden SQLite
|
|
32
|
+
autoReconnect: true, // Auto-Reconnect für alle
|
|
33
|
+
printQR: true,
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
footer: {
|
|
37
|
+
enabled: true, // Footer aktivieren
|
|
38
|
+
text: 'Made with Nishi API 🚀',
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 3. Verwenden
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
// Verwendet automatisch Config-Einstellungen
|
|
47
|
+
await startSession('bot1'); // SQLite + Auto-Reconnect aktiv!
|
|
48
|
+
|
|
49
|
+
// Footer wird automatisch angehängt
|
|
50
|
+
await sendText('bot1', jid, 'Hallo!');
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 📋 Verfügbare Config-Optionen
|
|
54
|
+
|
|
55
|
+
### Session-Einstellungen
|
|
56
|
+
```javascript
|
|
57
|
+
session: {
|
|
58
|
+
useSqlByDefault: false, // SQLite als Standard
|
|
59
|
+
browser: ['Chrome', '120.0.0', 'Windows'],
|
|
60
|
+
printQR: true,
|
|
61
|
+
credentialsDir: './sessions',
|
|
62
|
+
autoReconnect: false,
|
|
63
|
+
logLevel: 'silent',
|
|
64
|
+
markOnlineOnConnect: false,
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Auto-Reconnect
|
|
69
|
+
```javascript
|
|
70
|
+
reconnect: {
|
|
71
|
+
maxRetries: 5,
|
|
72
|
+
initialDelay: 2000,
|
|
73
|
+
maxDelay: 30000,
|
|
74
|
+
multiplier: 2,
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Footer/Wasserzeichen ⭐ NEU
|
|
79
|
+
```javascript
|
|
80
|
+
footer: {
|
|
81
|
+
enabled: false, // Footer aktivieren/deaktivieren
|
|
82
|
+
text: 'Nishi WhatsApp API', // Footer-Text
|
|
83
|
+
applyToTypes: ['text', 'image', 'video', 'audio', 'document', 'sticker'], // Alle Typen!
|
|
84
|
+
onlyOutgoing: true, // Nur ausgehende Nachrichten
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Rate Limiting
|
|
89
|
+
```javascript
|
|
90
|
+
rateLimit: {
|
|
91
|
+
enabled: false,
|
|
92
|
+
maxMessages: 20,
|
|
93
|
+
interval: 60000,
|
|
94
|
+
queueInterval: 1000,
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Webhooks
|
|
99
|
+
```javascript
|
|
100
|
+
webhook: {
|
|
101
|
+
defaultUrl: null,
|
|
102
|
+
timeout: 5000,
|
|
103
|
+
retry: true,
|
|
104
|
+
maxRetries: 3,
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Statistiken
|
|
109
|
+
```javascript
|
|
110
|
+
stats: {
|
|
111
|
+
enabled: true,
|
|
112
|
+
filePath: './sessions/stats.json',
|
|
113
|
+
autoSaveInterval: 60000,
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Message Store
|
|
118
|
+
```javascript
|
|
119
|
+
messageStore: {
|
|
120
|
+
enabled: true,
|
|
121
|
+
maxMessages: 1000,
|
|
122
|
+
maxAge: 24, // Stunden
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Media
|
|
127
|
+
```javascript
|
|
128
|
+
media: {
|
|
129
|
+
autoDownload: false,
|
|
130
|
+
downloadDir: './media',
|
|
131
|
+
maxFileSize: 100, // MB
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Sticker
|
|
136
|
+
```javascript
|
|
137
|
+
sticker: {
|
|
138
|
+
packname: 'Nishi API',
|
|
139
|
+
author: 'WhatsApp Bot',
|
|
140
|
+
categories: ['🤖', '🚀'],
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Features
|
|
145
|
+
```javascript
|
|
146
|
+
features: {
|
|
147
|
+
groupManagement: true,
|
|
148
|
+
stories: true,
|
|
149
|
+
polls: true,
|
|
150
|
+
broadcast: true,
|
|
151
|
+
contacts: true,
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Developer
|
|
156
|
+
```javascript
|
|
157
|
+
developer: {
|
|
158
|
+
debug: false,
|
|
159
|
+
verbose: false,
|
|
160
|
+
showStackTrace: true,
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 🎨 Use Cases
|
|
165
|
+
|
|
166
|
+
### Use Case 1: Production Setup
|
|
167
|
+
```javascript
|
|
168
|
+
// wa-api.config.js
|
|
169
|
+
export const waApiConfig = {
|
|
170
|
+
session: {
|
|
171
|
+
useSqlByDefault: true, // Nur 1 DB statt 100+ JSON-Files
|
|
172
|
+
autoReconnect: true, // Auto-Reconnect aktiviert
|
|
173
|
+
logLevel: 'error', // Nur Errors loggen
|
|
174
|
+
},
|
|
175
|
+
footer: {
|
|
176
|
+
enabled: true,
|
|
177
|
+
text: 'Support: @mybot',
|
|
178
|
+
},
|
|
179
|
+
stats: {
|
|
180
|
+
enabled: true,
|
|
181
|
+
autoSaveInterval: 300000, // Alle 5 Minuten
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Use Case 2: Development Setup
|
|
187
|
+
```javascript
|
|
188
|
+
// wa-api.config.js
|
|
189
|
+
export const waApiConfig = {
|
|
190
|
+
session: {
|
|
191
|
+
useSqlByDefault: false, // JSON-Files für schnelles Testen
|
|
192
|
+
autoReconnect: false, // Kein Auto-Reconnect beim Debuggen
|
|
193
|
+
printQR: true,
|
|
194
|
+
},
|
|
195
|
+
footer: {
|
|
196
|
+
enabled: false, // Kein Footer im Dev-Modus
|
|
197
|
+
},
|
|
198
|
+
developer: {
|
|
199
|
+
debug: true,
|
|
200
|
+
verbose: true,
|
|
201
|
+
showStackTrace: true,
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Use Case 3: Bot mit Branding
|
|
207
|
+
```javascript
|
|
208
|
+
// wa-api.config.js
|
|
209
|
+
export const waApiConfig = {
|
|
210
|
+
session: {
|
|
211
|
+
useSqlByDefault: true,
|
|
212
|
+
autoReconnect: true,
|
|
213
|
+
},
|
|
214
|
+
footer: {
|
|
215
|
+
enabled: true,
|
|
216
|
+
text: '🤖 MyCompany Bot | support@mycompany.com',
|
|
217
|
+
applyToTypes: ['text'],
|
|
218
|
+
},
|
|
219
|
+
sticker: {
|
|
220
|
+
packname: 'MyCompany Stickers',
|
|
221
|
+
author: 'MyCompany Bot',
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## 🔄 Config überschreiben
|
|
227
|
+
|
|
228
|
+
Config-Defaults können jederzeit überschrieben werden:
|
|
229
|
+
|
|
230
|
+
```javascript
|
|
231
|
+
// Config sagt: useSqlByDefault: true
|
|
232
|
+
await startSession('bot1'); // Verwendet SQLite
|
|
233
|
+
|
|
234
|
+
// Für diese Session JSON-Files verwenden:
|
|
235
|
+
await startSession('bot2', { sql: false }); // Überschreibt Config
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## 📝 Footer-Implementierung
|
|
239
|
+
|
|
240
|
+
Der Footer wird über WhatsApp's `interactiveMessage` mit `viewOnceMessage` implementiert und funktioniert für ALLE Nachrichtentypen:
|
|
241
|
+
|
|
242
|
+
```javascript
|
|
243
|
+
// Automatisch bei aktiviertem Footer:
|
|
244
|
+
await sendText('bot', jid, 'Hallo Welt!');
|
|
245
|
+
await sendImage('bot', jid, image, 'Schau mal!');
|
|
246
|
+
await sendVideo('bot', jid, video, 'Cool!');
|
|
247
|
+
await sendAudio('bot', jid, audio);
|
|
248
|
+
await sendDocument('bot', jid, doc, 'Dokument');
|
|
249
|
+
|
|
250
|
+
// Alle haben den Footer:
|
|
251
|
+
// ┌─────────────────┐
|
|
252
|
+
// │ Nachricht │
|
|
253
|
+
// │ oder Media │
|
|
254
|
+
// │ │
|
|
255
|
+
// │ Made with ❤️ │ ← Footer
|
|
256
|
+
// └─────────────────┘
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Unterstützte Typen:**
|
|
260
|
+
- ✅ Text
|
|
261
|
+
- ✅ Image (mit Caption)
|
|
262
|
+
- ✅ Video (mit Caption)
|
|
263
|
+
- ✅ Audio
|
|
264
|
+
- ✅ Document
|
|
265
|
+
- ✅ Sticker
|
|
266
|
+
|
|
267
|
+
## 🛠️ API
|
|
268
|
+
|
|
269
|
+
### initConfig(targetDir)
|
|
270
|
+
Erstellt `wa-api.config.js` im angegebenen Verzeichnis.
|
|
271
|
+
|
|
272
|
+
```javascript
|
|
273
|
+
import { initConfig } from '@deathnaitsa/wa-api';
|
|
274
|
+
|
|
275
|
+
initConfig(); // Erstellt in process.cwd()
|
|
276
|
+
initConfig('./my-project'); // Erstellt in ./my-project
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### loadConfig(targetDir)
|
|
280
|
+
Lädt Config aus Verzeichnis oder fällt zurück auf Defaults.
|
|
281
|
+
|
|
282
|
+
```javascript
|
|
283
|
+
import { loadConfig } from '@deathnaitsa/wa-api';
|
|
284
|
+
|
|
285
|
+
const config = await loadConfig();
|
|
286
|
+
console.log(config.footer.enabled);
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### getConfigPath(targetDir)
|
|
290
|
+
Gibt den Config-Pfad zurück.
|
|
291
|
+
|
|
292
|
+
```javascript
|
|
293
|
+
import { getConfigPath } from '@deathnaitsa/wa-api';
|
|
294
|
+
|
|
295
|
+
console.log(getConfigPath()); // /path/to/project/wa-api.config.js
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## 📦 Migration
|
|
299
|
+
|
|
300
|
+
### Vorher (ohne Config)
|
|
301
|
+
```javascript
|
|
302
|
+
await startSession('bot1', {
|
|
303
|
+
sql: true,
|
|
304
|
+
autoReconnect: true,
|
|
305
|
+
printQR: true
|
|
306
|
+
});
|
|
307
|
+
await startSession('bot2', {
|
|
308
|
+
sql: true,
|
|
309
|
+
autoReconnect: true,
|
|
310
|
+
printQR: true
|
|
311
|
+
});
|
|
312
|
+
await startSession('bot3', {
|
|
313
|
+
sql: true,
|
|
314
|
+
autoReconnect: true,
|
|
315
|
+
printQR: true
|
|
316
|
+
});
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Nachher (mit Config)
|
|
320
|
+
```javascript
|
|
321
|
+
// wa-api.config.js
|
|
322
|
+
export const waApiConfig = {
|
|
323
|
+
session: {
|
|
324
|
+
useSqlByDefault: true,
|
|
325
|
+
autoReconnect: true,
|
|
326
|
+
printQR: true,
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
// Code
|
|
331
|
+
await startSession('bot1');
|
|
332
|
+
await startSession('bot2');
|
|
333
|
+
await startSession('bot3');
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
## 🎯 Zusammenfassung
|
|
337
|
+
|
|
338
|
+
Das Config-System bietet:
|
|
339
|
+
- ✅ Zentrale Konfiguration
|
|
340
|
+
- ✅ Footer/Wasserzeichen Support
|
|
341
|
+
- ✅ Keine Code-Änderungen für Config-Updates
|
|
342
|
+
- ✅ Überschreibbare Defaults
|
|
343
|
+
- ✅ Production-Ready
|
|
344
|
+
- ✅ Development-Friendly
|
|
345
|
+
|
|
346
|
+
Perfect für:
|
|
347
|
+
- 🏢 Production Deployments
|
|
348
|
+
- 🤖 Bot-Projekte mit Branding
|
|
349
|
+
- 📊 Multi-Session Setups
|
|
350
|
+
- 🔧 Flexible Konfigurationen
|
package/README.md
CHANGED
|
@@ -8,8 +8,7 @@ Eine minimalistische, stabile WhatsApp Multi-Device API basierend auf Baileys mi
|
|
|
8
8
|
- [Features](#-features)
|
|
9
9
|
- [Installation](#-installation)
|
|
10
10
|
- [Quick Start](#-quick-start)
|
|
11
|
-
|
|
12
|
-
- [CommonJS](#commonjs)
|
|
11
|
+
- [Configuration](#-configuration)
|
|
13
12
|
- [API Dokumentation](#-api-dokumentation)
|
|
14
13
|
- [Session Management](#-session-management-implementiert)
|
|
15
14
|
- [Nachrichten](#-nachrichten-implementiert)
|
|
@@ -87,13 +86,46 @@ npm install
|
|
|
87
86
|
npm install better-sqlite3
|
|
88
87
|
```
|
|
89
88
|
|
|
89
|
+
**Config-Datei erstellen (empfohlen)**
|
|
90
|
+
```bash
|
|
91
|
+
node -e "import('@deathnaitsa/wa-api').then(m => m.initConfig())"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Dies erstellt eine `wa-api.config.js` im Hauptverzeichnis mit allen verfügbaren Einstellungen.
|
|
95
|
+
|
|
90
96
|
**Unterstützt beide Formate:**
|
|
91
97
|
- ✅ **ES Modules** (import)
|
|
92
98
|
- ✅ **CommonJS** (require)
|
|
93
99
|
|
|
94
100
|
## 🚀 Quick Start
|
|
95
101
|
|
|
96
|
-
###
|
|
102
|
+
### 1. Config erstellen (optional, aber empfohlen)
|
|
103
|
+
```javascript
|
|
104
|
+
import { initConfig } from '@deathnaitsa/wa-api';
|
|
105
|
+
|
|
106
|
+
// Erstellt wa-api.config.js im Hauptverzeichnis
|
|
107
|
+
initConfig();
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Dann in `wa-api.config.js` deine Einstellungen anpassen:
|
|
111
|
+
```javascript
|
|
112
|
+
export const waApiConfig = {
|
|
113
|
+
session: {
|
|
114
|
+
useSqlByDefault: true, // SQLite als Standard
|
|
115
|
+
printQR: true,
|
|
116
|
+
autoReconnect: true,
|
|
117
|
+
},
|
|
118
|
+
footer: {
|
|
119
|
+
enabled: true, // Footer aktivieren
|
|
120
|
+
text: 'Powered by Nishi API 🚀',
|
|
121
|
+
},
|
|
122
|
+
// ... weitere Einstellungen
|
|
123
|
+
};
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 2. Session starten
|
|
127
|
+
|
|
128
|
+
#### ES Modules (empfohlen)
|
|
97
129
|
```javascript
|
|
98
130
|
import { startSession, onMessage, sendText } from '@deathnaitsa/wa-api';
|
|
99
131
|
|
|
@@ -108,7 +140,7 @@ onMessage(async (msg) => {
|
|
|
108
140
|
});
|
|
109
141
|
```
|
|
110
142
|
|
|
111
|
-
|
|
143
|
+
#### CommonJS
|
|
112
144
|
```javascript
|
|
113
145
|
const { startSession, onMessage, sendText } = require('@deathnaitsa/wa-api');
|
|
114
146
|
|
|
@@ -132,18 +164,27 @@ const { startSession, onMessage, sendText } = require('@deathnaitsa/wa-api');
|
|
|
132
164
|
#### ✅ Session Management (Implementiert)
|
|
133
165
|
```javascript
|
|
134
166
|
import {
|
|
135
|
-
startSession,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
167
|
+
startSession, // Session starten (mit QR-Code)
|
|
168
|
+
startSessionWithPairingCode,// Session mit Pairing Code starten
|
|
169
|
+
stopSession, // Session stoppen
|
|
170
|
+
restartSession, // Session neu starten
|
|
171
|
+
client // Direct client access
|
|
139
172
|
} from '@deathnaitsa/wa-api';
|
|
140
173
|
|
|
141
|
-
// Standard Session (JSON-Files)
|
|
174
|
+
// Standard Session mit QR-Code (JSON-Files)
|
|
142
175
|
await startSession('bot1');
|
|
143
176
|
|
|
177
|
+
// Session mit Pairing Code (Alternative zu QR-Code)
|
|
178
|
+
const { code } = await startSessionWithPairingCode('bot1', '491234567890');
|
|
179
|
+
console.log('Gib diesen Code in WhatsApp ein:', code);
|
|
180
|
+
// Telefonnummer ohne +, z.B. "491234567890" statt "+49 123 456 7890"
|
|
181
|
+
|
|
144
182
|
// Session mit SQLite Auth (empfohlen für Production!)
|
|
145
183
|
await startSession('bot1', { sql: true });
|
|
146
184
|
|
|
185
|
+
// Pairing Code mit SQLite
|
|
186
|
+
await startSessionWithPairingCode('bot1', '491234567890', { sql: true });
|
|
187
|
+
|
|
147
188
|
// Weitere Optionen
|
|
148
189
|
await startSession('bot1', {
|
|
149
190
|
sql: true, // ✅ SQLite statt JSON-Files
|
|
@@ -184,6 +225,114 @@ await startSession('main', {
|
|
|
184
225
|
npm install better-sqlite3
|
|
185
226
|
```
|
|
186
227
|
|
|
228
|
+
## ⚙️ Configuration
|
|
229
|
+
|
|
230
|
+
Die Nishi WhatsApp API kann über eine zentrale Config-Datei konfiguriert werden. Dies erspart dir, bei jedem `startSession()` Aufruf die gleichen Optionen anzugeben.
|
|
231
|
+
|
|
232
|
+
### Config-Datei erstellen
|
|
233
|
+
|
|
234
|
+
```javascript
|
|
235
|
+
import { initConfig } from '@deathnaitsa/wa-api';
|
|
236
|
+
|
|
237
|
+
initConfig(); // Erstellt wa-api.config.js im Hauptverzeichnis
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Oder über CLI:
|
|
241
|
+
```bash
|
|
242
|
+
node -e "import('@deathnaitsa/wa-api').then(m => m.initConfig())"
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Verfügbare Config-Optionen
|
|
246
|
+
|
|
247
|
+
```javascript
|
|
248
|
+
// wa-api.config.js
|
|
249
|
+
export const waApiConfig = {
|
|
250
|
+
// Session-Einstellungen
|
|
251
|
+
session: {
|
|
252
|
+
useSqlByDefault: true, // SQLite statt JSON-Files
|
|
253
|
+
browser: ['Chrome', '120.0.0', 'Windows'],
|
|
254
|
+
printQR: true,
|
|
255
|
+
credentialsDir: './sessions',
|
|
256
|
+
autoReconnect: true,
|
|
257
|
+
logLevel: 'silent', // 'trace', 'debug', 'info', 'warn', 'error', 'fatal', 'silent'
|
|
258
|
+
markOnlineOnConnect: false,
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
// Auto-Reconnect Einstellungen
|
|
262
|
+
reconnect: {
|
|
263
|
+
maxRetries: 5,
|
|
264
|
+
initialDelay: 2000,
|
|
265
|
+
maxDelay: 30000,
|
|
266
|
+
multiplier: 2,
|
|
267
|
+
},
|
|
268
|
+
|
|
269
|
+
// Footer/Wasserzeichen für Nachrichten ✨ NEU!
|
|
270
|
+
footer: {
|
|
271
|
+
enabled: true, // Footer aktivieren
|
|
272
|
+
text: 'Powered by Nishi API 🚀', // Footer-Text
|
|
273
|
+
applyToTypes: ['text', 'image', 'video', 'audio', 'document', 'sticker'], // Alle Typen!
|
|
274
|
+
onlyOutgoing: true,
|
|
275
|
+
},
|
|
276
|
+
|
|
277
|
+
// Rate Limiting
|
|
278
|
+
rateLimit: {
|
|
279
|
+
enabled: false,
|
|
280
|
+
maxMessages: 20,
|
|
281
|
+
interval: 60000,
|
|
282
|
+
queueInterval: 1000,
|
|
283
|
+
},
|
|
284
|
+
|
|
285
|
+
// Webhook, Stats, Media, Sticker, Features, Developer...
|
|
286
|
+
// Siehe wa-api.config.js für alle Optionen
|
|
287
|
+
};
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Config verwenden
|
|
291
|
+
|
|
292
|
+
**Mit Config-Datei:**
|
|
293
|
+
```javascript
|
|
294
|
+
// wa-api.config.js: useSqlByDefault: true, autoReconnect: true
|
|
295
|
+
|
|
296
|
+
import { startSession } from '@deathnaitsa/wa-api';
|
|
297
|
+
|
|
298
|
+
// Verwendet automatisch SQLite und Auto-Reconnect aus Config
|
|
299
|
+
await startSession('bot1');
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**Config überschreiben:**
|
|
303
|
+
```javascript
|
|
304
|
+
// Config sagt: useSqlByDefault: true
|
|
305
|
+
// Aber für diese Session wollen wir JSON-Files:
|
|
306
|
+
await startSession('bot1', { sql: false });
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Footer/Wasserzeichen Beispiel
|
|
310
|
+
|
|
311
|
+
```javascript
|
|
312
|
+
// wa-api.config.js
|
|
313
|
+
footer: {
|
|
314
|
+
enabled: true,
|
|
315
|
+
text: '🤖 Powered by Nishi Bot',
|
|
316
|
+
applyToTypes: ['text'],
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Jetzt haben **alle** Text-Nachrichten automatisch einen Footer:
|
|
321
|
+
```javascript
|
|
322
|
+
await sendText('bot1', jid, 'Hallo Welt!');
|
|
323
|
+
// Wird gesendet mit Footer "🤖 Powered by Nishi Bot"
|
|
324
|
+
|
|
325
|
+
// Funktioniert auch für Media:
|
|
326
|
+
await sendImage('bot1', jid, image, 'Schau mal!');
|
|
327
|
+
// Bild mit Caption + Footer
|
|
328
|
+
|
|
329
|
+
await sendVideo('bot1', jid, video, 'Cool!');
|
|
330
|
+
// Video mit Caption + Footer
|
|
331
|
+
|
|
332
|
+
await sendDocument('bot1', jid, doc);
|
|
333
|
+
// Dokument mit Footer
|
|
334
|
+
```
|
|
335
|
+
|
|
187
336
|
#### ✅ Nachrichten (Implementiert)
|
|
188
337
|
```javascript
|
|
189
338
|
import { sendText, onMessage } from '@deathnaitsa/wa-api';
|
|
@@ -355,7 +504,13 @@ const buffer = await downloadMedia(message);
|
|
|
355
504
|
|
|
356
505
|
#### ✅ Events (Implementiert)
|
|
357
506
|
```javascript
|
|
358
|
-
import {
|
|
507
|
+
import {
|
|
508
|
+
onMessage,
|
|
509
|
+
onConnected,
|
|
510
|
+
onDisconnected,
|
|
511
|
+
onQRUpdate,
|
|
512
|
+
onPairingCode
|
|
513
|
+
} from '@deathnaitsa/wa-api';
|
|
359
514
|
|
|
360
515
|
onMessage((msg) => {
|
|
361
516
|
// Neue Nachricht empfangen
|
|
@@ -369,7 +524,7 @@ onDisconnected(({ sessionId, reason }) => {
|
|
|
369
524
|
console.log(`${sessionId} getrennt: ${reason}`);
|
|
370
525
|
});
|
|
371
526
|
|
|
372
|
-
// QR-Code Updates
|
|
527
|
+
// QR-Code Updates
|
|
373
528
|
onQRUpdate(({ sessionId, qr }) => {
|
|
374
529
|
console.log(`📱 QR-Code für Session ${sessionId} generiert!`);
|
|
375
530
|
console.log(`QR-String: ${qr}`);
|
|
@@ -381,6 +536,17 @@ onQRUpdate(({ sessionId, qr }) => {
|
|
|
381
536
|
// 4. In Datenbank speichern
|
|
382
537
|
});
|
|
383
538
|
|
|
539
|
+
// Pairing Code Updates (✅ Neu!)
|
|
540
|
+
onPairingCode(({ sessionId, phoneNumber, code }) => {
|
|
541
|
+
console.log(`🔐 Pairing Code für ${sessionId} (${phoneNumber}): ${code}`);
|
|
542
|
+
|
|
543
|
+
// Beispiele für die Verwendung:
|
|
544
|
+
// 1. Code an Frontend/User anzeigen
|
|
545
|
+
// 2. Per SMS/Email versenden
|
|
546
|
+
// 3. In Datenbank speichern
|
|
547
|
+
// 4. Per WebSocket an Client schicken
|
|
548
|
+
});
|
|
549
|
+
|
|
384
550
|
// Weitere Events über Client:
|
|
385
551
|
client.on('groups:update', ({ sessionId, updates }) => {});
|
|
386
552
|
client.on('presence', ({ sessionId, id, presences }) => {});
|