waengine 1.7.3 β 1.7.4
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/CHANGELOG.md +29 -0
- package/README.md +34 -3
- package/package.json +3 -2
- package/src/ab-testing.js +698 -0
- package/src/advanced-scheduler.js +577 -0
- package/src/ai-features.js +459 -0
- package/src/ai-integration.js +2 -1
- package/src/analytics-manager.js +458 -0
- package/src/business-manager.js +362 -0
- package/src/client.js +447 -39
- package/src/console-logger.js +256 -0
- package/src/core.js +28 -3
- package/src/cross-platform.js +538 -0
- package/src/database-manager.js +766 -0
- package/src/device-manager.js +1 -1
- package/src/easy-bot-fixed.js +341 -0
- package/src/easy-bot.js +503 -22
- package/src/error-handler.js +230 -0
- package/src/gaming-manager.js +842 -0
- package/src/http-client.js +1 -1
- package/src/index.js +15 -0
- package/src/message.js +197 -94
- package/src/multi-client.js +26 -12
- package/src/plugin-manager.js +59 -10
- package/src/prefix-manager.js +48 -1
- package/src/qr-terminal-fix.js +239 -0
- package/src/qr.js +170 -27
- package/src/quick-bot.js +63 -0
- package/src/reporting-manager.js +867 -0
- package/src/scheduler.js +14 -1
- package/src/security-manager.js +678 -0
- package/src/session-manager-old.js +314 -0
- package/src/session-manager.js +429 -24
- package/src/storage.js +254 -194
- package/src/ui-components.js +560 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
// π¨ WAEngine Console Logger - SchΓΆne animierte Console ohne Spam
|
|
2
|
+
export class ConsoleLogger {
|
|
3
|
+
constructor(options = {}) {
|
|
4
|
+
this.verbose = options.verbose || false;
|
|
5
|
+
this.silent = options.silent || false;
|
|
6
|
+
this.useColors = options.colors !== false;
|
|
7
|
+
this.currentProgressBars = new Map();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// ===== BANNER =====
|
|
11
|
+
showBanner() {
|
|
12
|
+
if (this.silent) return;
|
|
13
|
+
|
|
14
|
+
console.log(`
|
|
15
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
16
|
+
β π WAEngine v1.7.4 β
|
|
17
|
+
β Advanced WhatsApp Bot Framework β
|
|
18
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// ===== ANIMIERTE PROGRESS BAR =====
|
|
22
|
+
createProgressBar(id, label, total = 100) {
|
|
23
|
+
const bar = {
|
|
24
|
+
id,
|
|
25
|
+
label,
|
|
26
|
+
current: 0,
|
|
27
|
+
total,
|
|
28
|
+
width: 40,
|
|
29
|
+
interval: null,
|
|
30
|
+
isComplete: false
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
this.currentProgressBars.set(id, bar);
|
|
34
|
+
return bar;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
updateProgressBar(id, value, newLabel = null) {
|
|
38
|
+
const bar = this.currentProgressBars.get(id);
|
|
39
|
+
if (!bar || bar.isComplete) return;
|
|
40
|
+
|
|
41
|
+
bar.current = Math.min(value, bar.total);
|
|
42
|
+
if (newLabel) bar.label = newLabel;
|
|
43
|
+
|
|
44
|
+
const percentage = Math.round((bar.current / bar.total) * 100);
|
|
45
|
+
const filled = Math.round((bar.current / bar.total) * bar.width);
|
|
46
|
+
const progressChars = 'β'.repeat(filled);
|
|
47
|
+
const emptyChars = ' '.repeat(bar.width - filled);
|
|
48
|
+
|
|
49
|
+
const line = `\r${bar.label} [${progressChars}${emptyChars}] ${percentage}%`;
|
|
50
|
+
process.stdout.write(line);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
completeProgressBar(id, message = 'β
') {
|
|
54
|
+
const bar = this.currentProgressBars.get(id);
|
|
55
|
+
if (!bar) return;
|
|
56
|
+
|
|
57
|
+
bar.isComplete = true;
|
|
58
|
+
this.updateProgressBar(id, bar.total);
|
|
59
|
+
process.stdout.write(` ${message}\n`);
|
|
60
|
+
this.currentProgressBars.delete(id);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ===== ANIMIERTE SETUP SEQUENCE =====
|
|
64
|
+
async animateSetup() {
|
|
65
|
+
if (this.silent) return;
|
|
66
|
+
|
|
67
|
+
// SCHNELLE VERSION - Keine VerzΓΆgerungen fΓΌr QR-Code!
|
|
68
|
+
const setupBar = this.createProgressBar('setup', 'π§ Initialisierung');
|
|
69
|
+
|
|
70
|
+
// Alles parallel ohne Delays
|
|
71
|
+
this.updateProgressBar('setup', 100, 'π§ System bereit');
|
|
72
|
+
this.completeProgressBar('setup');
|
|
73
|
+
|
|
74
|
+
// Zusammenfassung
|
|
75
|
+
this.showSystemSummary();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
showSystemSummary() {
|
|
79
|
+
if (this.silent) return;
|
|
80
|
+
|
|
81
|
+
console.log(`
|
|
82
|
+
β
System bereit
|
|
83
|
+
ββ Storage: ./waengine-data
|
|
84
|
+
ββ Devices: 2/2 konfiguriert
|
|
85
|
+
ββ Plugins: 8 verfΓΌgbar
|
|
86
|
+
ββ Prefix: "!"`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ===== QR-CODE ANIMATION =====
|
|
90
|
+
async animateQRGeneration(deviceName = 'bot1', deviceNumber = 1, totalDevices = 2) {
|
|
91
|
+
if (this.silent) return;
|
|
92
|
+
|
|
93
|
+
// SCHNELLE VERSION - Keine VerzΓΆgerungen fΓΌr QR-Code!
|
|
94
|
+
const qrBar = this.createProgressBar('qr', 'π± QR-Code wird generiert...');
|
|
95
|
+
|
|
96
|
+
// Alles parallel ohne Delays
|
|
97
|
+
this.updateProgressBar('qr', 100, 'π± QR-Code bereit');
|
|
98
|
+
this.completeProgressBar('qr');
|
|
99
|
+
|
|
100
|
+
// QR-Code Box sofort anzeigen
|
|
101
|
+
this.showQRBox(deviceName, deviceNumber, totalDevices);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
showQRBox(deviceName, deviceNumber, totalDevices) {
|
|
105
|
+
if (this.silent) return;
|
|
106
|
+
|
|
107
|
+
console.log(`
|
|
108
|
+
βββββββββββββββββββββββββββββββββββββββββββ
|
|
109
|
+
β π± WAEngine QR-Code β
|
|
110
|
+
β Device ${deviceNumber}/${totalDevices}: ${deviceName} β
|
|
111
|
+
βββββββββββββββββββββββββββββββββββββββββββ€
|
|
112
|
+
β β
|
|
113
|
+
β [QR-Code wird im Browser angezeigt] β
|
|
114
|
+
β β
|
|
115
|
+
βββββββββββββββββββββββββββββββββββββββββββ€
|
|
116
|
+
β π Browser: Edge geΓΆffnet β
|
|
117
|
+
β β³ Warte auf QR-Scan... β
|
|
118
|
+
βββββββββββββββββββββββββββββββββββββββββββ`);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ===== CONNECTION ANIMATION =====
|
|
122
|
+
async animateConnection(deviceName, isAuthenticated = true) {
|
|
123
|
+
if (this.silent) return;
|
|
124
|
+
|
|
125
|
+
const connBar = this.createProgressBar('conn', 'Verbindung');
|
|
126
|
+
|
|
127
|
+
this.updateProgressBar('conn', 15, 'Verbindung [QR gescannt]');
|
|
128
|
+
await this.delay(800);
|
|
129
|
+
|
|
130
|
+
this.updateProgressBar('conn', 45, 'Verbindung [Authentifizierung]');
|
|
131
|
+
await this.delay(1000);
|
|
132
|
+
|
|
133
|
+
this.updateProgressBar('conn', 75, 'Verbindung [Synchronisation]');
|
|
134
|
+
await this.delay(600);
|
|
135
|
+
|
|
136
|
+
this.updateProgressBar('conn', 100, 'Verbindung [Abgeschlossen]');
|
|
137
|
+
await this.delay(300);
|
|
138
|
+
this.completeProgressBar('conn', 'π');
|
|
139
|
+
|
|
140
|
+
this.showDeviceConnected(deviceName, isAuthenticated);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
showDeviceConnected(deviceName, isAuthenticated = true) {
|
|
144
|
+
if (this.silent) return;
|
|
145
|
+
|
|
146
|
+
if (!isAuthenticated) {
|
|
147
|
+
console.log(`
|
|
148
|
+
β οΈ Device '${deviceName}' socket verbunden aber NICHT authentifiziert
|
|
149
|
+
ββ Status: Warte auf QR-Scan
|
|
150
|
+
ββ Bereit fΓΌr: QR-Code Authentifizierung
|
|
151
|
+
ββ Load Balancing: Inaktiv`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
console.log(`
|
|
156
|
+
β
Device '${deviceName}' erfolgreich authentifiziert
|
|
157
|
+
ββ Status: Online & Authentifiziert
|
|
158
|
+
ββ Bereit fΓΌr Nachrichten
|
|
159
|
+
ββ Load Balancing: Aktiv`);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// ===== PAUSE ZWISCHEN DEVICES =====
|
|
163
|
+
async showDevicePause(seconds = 3) {
|
|
164
|
+
if (this.silent) return;
|
|
165
|
+
|
|
166
|
+
console.log(`\nβΈοΈ Pause vor nΓ€chstem Device... (${seconds}s)`);
|
|
167
|
+
|
|
168
|
+
for (let i = seconds; i > 0; i--) {
|
|
169
|
+
process.stdout.write(`\rβ³ Weiter in ${i} Sekunden...`);
|
|
170
|
+
await this.delay(1000);
|
|
171
|
+
}
|
|
172
|
+
process.stdout.write('\rβ
Bereit fΓΌr nΓ€chstes Device!\n\n');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// ===== FINALE ZUSAMMENFASSUNG =====
|
|
176
|
+
showFinalSummary(connectedDevices, isAuthenticated = true) {
|
|
177
|
+
if (this.silent) return;
|
|
178
|
+
|
|
179
|
+
if (!isAuthenticated) {
|
|
180
|
+
console.log(`
|
|
181
|
+
β³ Multi-Device Setup in Bearbeitung...
|
|
182
|
+
|
|
183
|
+
π Socket-Verbindungen hergestellt`);
|
|
184
|
+
|
|
185
|
+
connectedDevices.forEach((device, index) => {
|
|
186
|
+
const isLast = index === connectedDevices.length - 1;
|
|
187
|
+
const prefix = isLast ? 'ββ' : 'ββ';
|
|
188
|
+
console.log(` ${prefix} ${device}: Socket offen (warte auf Auth)`);
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
console.log(`
|
|
192
|
+
π± Bereit fΓΌr QR-Code Scan...
|
|
193
|
+
ββ Scanne QR-Code in WhatsApp
|
|
194
|
+
ββ Authentifizierung lΓ€uft
|
|
195
|
+
ββ Status: β³ Warte auf Benutzer
|
|
196
|
+
|
|
197
|
+
π¬ Nach QR-Scan: Bot wird aktiviert...`);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
console.log(`
|
|
202
|
+
π Multi-Device Setup abgeschlossen!
|
|
203
|
+
|
|
204
|
+
β
Alle Devices authentifiziert`);
|
|
205
|
+
|
|
206
|
+
connectedDevices.forEach((device, index) => {
|
|
207
|
+
const isLast = index === connectedDevices.length - 1;
|
|
208
|
+
const prefix = isLast ? 'ββ' : 'ββ';
|
|
209
|
+
console.log(` ${prefix} ${device}: Online & Authentifiziert`);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
console.log(`
|
|
213
|
+
π WAEngine ist bereit!
|
|
214
|
+
ββ Prefix: "!"
|
|
215
|
+
ββ Commands: 12 verfΓΌgbar
|
|
216
|
+
ββ Plugins: 8 geladen
|
|
217
|
+
ββ Status: π’ Online & Authentifiziert
|
|
218
|
+
|
|
219
|
+
π¬ Bot wartet auf Nachrichten...`);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// ===== SIMPLE LOGS =====
|
|
223
|
+
info(message) {
|
|
224
|
+
if (this.silent) return;
|
|
225
|
+
console.log(`βΉοΈ ${message}`);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
success(message) {
|
|
229
|
+
if (this.silent) return;
|
|
230
|
+
console.log(`β
${message}`);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
warning(message) {
|
|
234
|
+
if (this.silent) return;
|
|
235
|
+
console.log(`β οΈ ${message}`);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
error(message) {
|
|
239
|
+
if (this.silent) return;
|
|
240
|
+
console.log(`β ${message}`);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ===== HELPER =====
|
|
244
|
+
delay(ms) {
|
|
245
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// ===== CLEAR CONSOLE =====
|
|
249
|
+
clear() {
|
|
250
|
+
if (this.silent) return;
|
|
251
|
+
console.clear();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Export fΓΌr einfache Nutzung
|
|
256
|
+
export const logger = new ConsoleLogger();
|
package/src/core.js
CHANGED
|
@@ -43,8 +43,18 @@ export async function getSocket() {
|
|
|
43
43
|
await closeBrowser();
|
|
44
44
|
}
|
|
45
45
|
} else if (connection === "open") {
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
// ROBUSTE SESSION-VALIDIERUNG: PrΓΌfe ECHTE Authentifizierung!
|
|
47
|
+
const isAuthenticated = !!state.creds?.me?.id;
|
|
48
|
+
|
|
49
|
+
if (!isAuthenticated) {
|
|
50
|
+
console.log("π Socket verbunden - warte auf Authentifizierung...");
|
|
51
|
+
console.log("π± Bereit fΓΌr QR-Code Scan...");
|
|
52
|
+
// KEINE Success-Messages bei nicht-authentifizierter Verbindung!
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// NUR BEI ECHTER AUTHENTIFIZIERUNG: Success Messages!
|
|
57
|
+
// ABER: Success Messages werden jetzt im creds.update Handler gemacht
|
|
48
58
|
isConnected = true;
|
|
49
59
|
|
|
50
60
|
// Test: Alle Event-Listener anzeigen
|
|
@@ -54,7 +64,22 @@ export async function getSocket() {
|
|
|
54
64
|
}
|
|
55
65
|
});
|
|
56
66
|
|
|
57
|
-
socket.ev.on("creds.update",
|
|
67
|
+
socket.ev.on("creds.update", async (creds) => {
|
|
68
|
+
await saveCreds();
|
|
69
|
+
|
|
70
|
+
// WICHTIG: PrΓΌfe ob User jetzt authentifiziert ist (QR-Code gescannt)
|
|
71
|
+
if (creds?.me?.id && isConnected) {
|
|
72
|
+
console.log("π QR-Code erfolgreich gescannt!");
|
|
73
|
+
console.log(`π€ Authentifiziert als: ${creds.me.id}`);
|
|
74
|
+
console.log("β
Erfolgreich mit WhatsApp authentifiziert!");
|
|
75
|
+
console.log("π Du kannst jetzt den Browser schlieΓen oder offen lassen");
|
|
76
|
+
|
|
77
|
+
// Test: Alle Event-Listener anzeigen
|
|
78
|
+
console.log("π§ Registrierte Events:", Object.keys(socket.ev.listenerCount));
|
|
79
|
+
|
|
80
|
+
resolve(socket);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
58
83
|
|
|
59
84
|
// WICHTIG: Alle Events loggen fΓΌr Debug
|
|
60
85
|
socket.ev.on("messages.upsert", (data) => {
|