@deathnaitsa/wa-api 2.1.1 → 2.1.3
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/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/index.cjs +1 -1
- package/dist/index.js +1 -1
- 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
|