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.
@@ -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
- console.log("βœ… Erfolgreich mit WhatsApp verbunden!");
47
- console.log("πŸŽ‰ Du kannst jetzt den Browser schließen oder offen lassen");
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", saveCreds);
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) => {