@deathnaitsa/wa-api 2.0.2 → 2.0.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/README.md +309 -40
- package/dist/WhatsAppClient.cjs +1 -0
- package/dist/WhatsAppClient.js +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.js +1 -1
- package/package.json +15 -6
- package/socket.js +357 -1
package/socket.js
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
startSession,
|
|
3
|
+
onMessage,
|
|
4
|
+
sendText,
|
|
5
|
+
sendAudio,
|
|
6
|
+
sendDocument,
|
|
7
|
+
sendLocation,
|
|
8
|
+
sendContact,
|
|
9
|
+
sendReaction,
|
|
10
|
+
sendTyping,
|
|
11
|
+
sendRecording,
|
|
12
|
+
createGroup,
|
|
13
|
+
getGroupMetadata,
|
|
14
|
+
updateGroupSubject,
|
|
15
|
+
addParticipants,
|
|
16
|
+
removeParticipants,
|
|
17
|
+
promoteParticipants,
|
|
18
|
+
demoteParticipants,
|
|
19
|
+
leaveGroup,
|
|
20
|
+
getGroupInviteCode,
|
|
21
|
+
getProfilePicture,
|
|
22
|
+
getContact,
|
|
23
|
+
getStatus,
|
|
24
|
+
updateProfileStatus,
|
|
25
|
+
client,
|
|
26
|
+
getAllSessionsInfo,
|
|
27
|
+
getGlobalStats,
|
|
28
|
+
countReceivedMessage
|
|
29
|
+
} from '@deathnaitsa/wa-api';
|
|
2
30
|
|
|
3
31
|
// Start sessions
|
|
4
32
|
await startSession('bot');
|
|
@@ -72,6 +100,30 @@ console.log(' !info - Nachrichteninfo anzeigen');
|
|
|
72
100
|
console.log(' !liste - Alle Sessions auflisten');
|
|
73
101
|
console.log(' !stats - Detaillierte Session-Statistiken');
|
|
74
102
|
console.log(' !gesamtstats - Gesamtstatistik aller Sessions');
|
|
103
|
+
console.log('');
|
|
104
|
+
console.log(' 📝 Gruppen:');
|
|
105
|
+
console.log(' !gruppeninfo - Infos zur aktuellen Gruppe');
|
|
106
|
+
console.log(' !gruppenlink - Einladungslink der Gruppe');
|
|
107
|
+
console.log(' !gruppenname <n> - Gruppennamen ändern');
|
|
108
|
+
console.log(' !gruppenbio <t> - Gruppenbeschreibung ändern');
|
|
109
|
+
console.log(' !hinzufügen <nr> - Teilnehmer hinzufügen');
|
|
110
|
+
console.log(' !entfernen <nr> - Teilnehmer entfernen');
|
|
111
|
+
console.log(' !promoten <nr> - Zum Admin machen');
|
|
112
|
+
console.log(' !demoten <nr> - Admin entfernen');
|
|
113
|
+
console.log('');
|
|
114
|
+
console.log(' 📧 Nachrichten:');
|
|
115
|
+
console.log(' !ort <lat> <lon> - Standort senden');
|
|
116
|
+
console.log(' !reaktion <emoji> - Auf letzte Nachricht reagieren');
|
|
117
|
+
console.log(' !tippen - Tipp-Indikator anzeigen');
|
|
118
|
+
console.log(' !aufnehmen - Aufnahme-Indikator anzeigen');
|
|
119
|
+
console.log('');
|
|
120
|
+
console.log(' 👤 Profil & Kontakt:');
|
|
121
|
+
console.log(' !profilbild - Profilbild des Absenders');
|
|
122
|
+
console.log(' !status - Status des Absenders');
|
|
123
|
+
console.log(' !kontakt - Kontaktinfo');
|
|
124
|
+
console.log(' !meinestatus <t> - Eigenen Status ändern');
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(' ⚙️ Session:');
|
|
75
127
|
console.log(' !neustart <id> - Session neu starten');
|
|
76
128
|
console.log(' !pause <id> - Session pausieren');
|
|
77
129
|
console.log(' !fortsetzen <id> - Session fortsetzen');
|
|
@@ -240,6 +292,310 @@ onMessage(async (msg) => {
|
|
|
240
292
|
await safeSend(globalMessage);
|
|
241
293
|
break;
|
|
242
294
|
|
|
295
|
+
// ===========================================
|
|
296
|
+
// GROUP MANAGEMENT COMMANDS
|
|
297
|
+
// ===========================================
|
|
298
|
+
|
|
299
|
+
case '!gruppeninfo':
|
|
300
|
+
if (!msg.isGroup) {
|
|
301
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
try {
|
|
306
|
+
const metadata = await getGroupMetadata(msg.sessionId, msg.from);
|
|
307
|
+
let groupInfo = `📝 *Gruppeninfo*\n\n`;
|
|
308
|
+
groupInfo += `Name: ${metadata.subject}\n`;
|
|
309
|
+
groupInfo += `Beschreibung: ${metadata.desc || 'Keine'}\n`;
|
|
310
|
+
groupInfo += `Erstellt: ${new Date(metadata.creation * 1000).toLocaleDateString('de-DE')}\n`;
|
|
311
|
+
groupInfo += `Teilnehmer: ${metadata.participants.length}\n`;
|
|
312
|
+
groupInfo += `Admins: ${metadata.participants.filter(p => p.admin).length}\n`;
|
|
313
|
+
|
|
314
|
+
await safeSend(groupInfo);
|
|
315
|
+
} catch (e) {
|
|
316
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
317
|
+
}
|
|
318
|
+
break;
|
|
319
|
+
|
|
320
|
+
case '!gruppenlink':
|
|
321
|
+
if (!msg.isGroup) {
|
|
322
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
try {
|
|
327
|
+
const code = await getGroupInviteCode(msg.sessionId, msg.from);
|
|
328
|
+
const link = `https://chat.whatsapp.com/${code}`;
|
|
329
|
+
await safeSend(`🔗 *Einladungslink:*\n\n${link}`);
|
|
330
|
+
} catch (e) {
|
|
331
|
+
await safeSend(`❌ Fehler: ${e.message}\n(Bist du Admin?)`);
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
|
|
335
|
+
case '!gruppenname':
|
|
336
|
+
if (!msg.isGroup) {
|
|
337
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
const newName = args.join(' ');
|
|
342
|
+
if (!newName) {
|
|
343
|
+
await safeSend('❌ Verwendung: !gruppenname <neuer Name>');
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
try {
|
|
348
|
+
await updateGroupSubject(msg.sessionId, msg.from, newName);
|
|
349
|
+
await safeSend(`✅ Gruppenname geändert zu: *${newName}*`);
|
|
350
|
+
} catch (e) {
|
|
351
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
352
|
+
}
|
|
353
|
+
break;
|
|
354
|
+
|
|
355
|
+
case '!gruppenbio':
|
|
356
|
+
if (!msg.isGroup) {
|
|
357
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const newDesc = args.join(' ');
|
|
362
|
+
if (!newDesc) {
|
|
363
|
+
await safeSend('❌ Verwendung: !gruppenbio <neue Beschreibung>');
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
try {
|
|
368
|
+
await client.updateGroupDescription(msg.sessionId, msg.from, newDesc);
|
|
369
|
+
await safeSend(`✅ Beschreibung geändert`);
|
|
370
|
+
} catch (e) {
|
|
371
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
|
|
375
|
+
case '!hinzufügen':
|
|
376
|
+
if (!msg.isGroup) {
|
|
377
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
const addNumber = args[0];
|
|
382
|
+
if (!addNumber) {
|
|
383
|
+
await safeSend('❌ Verwendung: !hinzufügen <Telefonnummer>');
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
try {
|
|
388
|
+
const jid = addNumber.includes('@') ? addNumber : `${addNumber}@s.whatsapp.net`;
|
|
389
|
+
await addParticipants(msg.sessionId, msg.from, [jid]);
|
|
390
|
+
await safeSend(`✅ Teilnehmer hinzugefügt`);
|
|
391
|
+
} catch (e) {
|
|
392
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
393
|
+
}
|
|
394
|
+
break;
|
|
395
|
+
|
|
396
|
+
case '!entfernen':
|
|
397
|
+
if (!msg.isGroup) {
|
|
398
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
const removeNumber = args[0];
|
|
403
|
+
if (!removeNumber) {
|
|
404
|
+
await safeSend('❌ Verwendung: !entfernen <Telefonnummer>');
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
try {
|
|
409
|
+
const jid = removeNumber.includes('@') ? removeNumber : `${removeNumber}@s.whatsapp.net`;
|
|
410
|
+
await removeParticipants(msg.sessionId, msg.from, [jid]);
|
|
411
|
+
await safeSend(`✅ Teilnehmer entfernt`);
|
|
412
|
+
} catch (e) {
|
|
413
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
414
|
+
}
|
|
415
|
+
break;
|
|
416
|
+
|
|
417
|
+
case '!promoten':
|
|
418
|
+
if (!msg.isGroup) {
|
|
419
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
const promoteNumber = args[0];
|
|
424
|
+
if (!promoteNumber) {
|
|
425
|
+
await safeSend('❌ Verwendung: !promoten <Telefonnummer>');
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
try {
|
|
430
|
+
const jid = promoteNumber.includes('@') ? promoteNumber : `${promoteNumber}@s.whatsapp.net`;
|
|
431
|
+
await promoteParticipants(msg.sessionId, msg.from, [jid]);
|
|
432
|
+
await safeSend(`✅ Zum Admin ernannt`);
|
|
433
|
+
} catch (e) {
|
|
434
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
435
|
+
}
|
|
436
|
+
break;
|
|
437
|
+
|
|
438
|
+
case '!demoten':
|
|
439
|
+
if (!msg.isGroup) {
|
|
440
|
+
await safeSend('❌ Dieser Befehl funktioniert nur in Gruppen');
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
const demoteNumber = args[0];
|
|
445
|
+
if (!demoteNumber) {
|
|
446
|
+
await safeSend('❌ Verwendung: !demoten <Telefonnummer>');
|
|
447
|
+
break;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
try {
|
|
451
|
+
const jid = demoteNumber.includes('@') ? demoteNumber : `${demoteNumber}@s.whatsapp.net`;
|
|
452
|
+
await demoteParticipants(msg.sessionId, msg.from, [jid]);
|
|
453
|
+
await safeSend(`✅ Admin-Rechte entfernt`);
|
|
454
|
+
} catch (e) {
|
|
455
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
456
|
+
}
|
|
457
|
+
break;
|
|
458
|
+
|
|
459
|
+
// ===========================================
|
|
460
|
+
// ADVANCED MESSAGING COMMANDS
|
|
461
|
+
// ===========================================
|
|
462
|
+
|
|
463
|
+
case '!ort':
|
|
464
|
+
const lat = parseFloat(args[0]);
|
|
465
|
+
const lon = parseFloat(args[1]);
|
|
466
|
+
|
|
467
|
+
if (isNaN(lat) || isNaN(lon)) {
|
|
468
|
+
await safeSend('❌ Verwendung: !ort <Breitengrad> <Längengrad>\nBeispiel: !ort 52.520008 13.404954');
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
try {
|
|
473
|
+
await sendLocation(msg.sessionId, msg.from, lat, lon, 'Mein Standort');
|
|
474
|
+
await safeSend(`📍 Standort gesendet`);
|
|
475
|
+
} catch (e) {
|
|
476
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
477
|
+
}
|
|
478
|
+
break;
|
|
479
|
+
|
|
480
|
+
case '!reaktion':
|
|
481
|
+
const emoji = args[0];
|
|
482
|
+
if (!emoji) {
|
|
483
|
+
await safeSend('❌ Verwendung: !reaktion <emoji>\nBeispiel: !reaktion 👍');
|
|
484
|
+
break;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
if (!msg.quoted) {
|
|
488
|
+
await safeSend('❌ Bitte antworte auf eine Nachricht');
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
try {
|
|
493
|
+
// Get the message ID from the quoted message
|
|
494
|
+
const quotedMsgId = msg.raw.message?.extendedTextMessage?.contextInfo?.stanzaId;
|
|
495
|
+
if (quotedMsgId) {
|
|
496
|
+
await sendReaction(msg.sessionId, msg.from, quotedMsgId, emoji);
|
|
497
|
+
} else {
|
|
498
|
+
await safeSend('❌ Konnte Nachricht nicht finden');
|
|
499
|
+
}
|
|
500
|
+
} catch (e) {
|
|
501
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
502
|
+
}
|
|
503
|
+
break;
|
|
504
|
+
|
|
505
|
+
case '!tippen':
|
|
506
|
+
try {
|
|
507
|
+
await sendTyping(msg.sessionId, msg.from, true);
|
|
508
|
+
await safeSend('⌨️ Tipp-Indikator angezeigt (5 Sekunden)');
|
|
509
|
+
setTimeout(async () => {
|
|
510
|
+
await sendTyping(msg.sessionId, msg.from, false);
|
|
511
|
+
}, 5000);
|
|
512
|
+
} catch (e) {
|
|
513
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
514
|
+
}
|
|
515
|
+
break;
|
|
516
|
+
|
|
517
|
+
case '!aufnehmen':
|
|
518
|
+
try {
|
|
519
|
+
await sendRecording(msg.sessionId, msg.from, true);
|
|
520
|
+
await safeSend('🎙️ Aufnahme-Indikator angezeigt (5 Sekunden)');
|
|
521
|
+
setTimeout(async () => {
|
|
522
|
+
await sendRecording(msg.sessionId, msg.from, false);
|
|
523
|
+
}, 5000);
|
|
524
|
+
} catch (e) {
|
|
525
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
526
|
+
}
|
|
527
|
+
break;
|
|
528
|
+
|
|
529
|
+
// ===========================================
|
|
530
|
+
// CONTACT & PROFILE COMMANDS
|
|
531
|
+
// ===========================================
|
|
532
|
+
|
|
533
|
+
case '!profilbild':
|
|
534
|
+
try {
|
|
535
|
+
// Get sender's JID (use participant if in group)
|
|
536
|
+
const senderJid = msg.isGroup ? msg.participant : msg.from;
|
|
537
|
+
const url = await getProfilePicture(msg.sessionId, senderJid);
|
|
538
|
+
|
|
539
|
+
if (url) {
|
|
540
|
+
await safeSend(`🖼️ *Profilbild:*\n\n${url}`);
|
|
541
|
+
} else {
|
|
542
|
+
await safeSend('❌ Kein Profilbild vorhanden');
|
|
543
|
+
}
|
|
544
|
+
} catch (e) {
|
|
545
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
546
|
+
}
|
|
547
|
+
break;
|
|
548
|
+
|
|
549
|
+
case '!status':
|
|
550
|
+
try {
|
|
551
|
+
const senderJid = msg.isGroup ? msg.participant : msg.from;
|
|
552
|
+
const status = await getStatus(msg.sessionId, senderJid);
|
|
553
|
+
|
|
554
|
+
if (status?.status) {
|
|
555
|
+
await safeSend(`💬 *Status:*\n\n${status.status}`);
|
|
556
|
+
} else {
|
|
557
|
+
await safeSend('❌ Kein Status vorhanden');
|
|
558
|
+
}
|
|
559
|
+
} catch (e) {
|
|
560
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
561
|
+
}
|
|
562
|
+
break;
|
|
563
|
+
|
|
564
|
+
case '!kontakt':
|
|
565
|
+
try {
|
|
566
|
+
const senderJid = msg.isGroup ? msg.participant : msg.from;
|
|
567
|
+
const contact = await getContact(msg.sessionId, senderJid);
|
|
568
|
+
|
|
569
|
+
let contactInfo = `👤 *Kontaktinfo:*\n\n`;
|
|
570
|
+
contactInfo += `JID: ${contact.jid}\n`;
|
|
571
|
+
contactInfo += `Nummer: ${contact.jid.split('@')[0]}\n`;
|
|
572
|
+
contactInfo += `Exists: ${contact.exists ? 'Ja' : 'Nein'}\n`;
|
|
573
|
+
|
|
574
|
+
await safeSend(contactInfo);
|
|
575
|
+
} catch (e) {
|
|
576
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
577
|
+
}
|
|
578
|
+
break;
|
|
579
|
+
|
|
580
|
+
case '!meinestatus':
|
|
581
|
+
const newStatus = args.join(' ');
|
|
582
|
+
if (!newStatus) {
|
|
583
|
+
await safeSend('❌ Verwendung: !meinestatus <neuer Status>');
|
|
584
|
+
break;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
try {
|
|
588
|
+
await updateProfileStatus(msg.sessionId, newStatus);
|
|
589
|
+
await safeSend(`✅ Status geändert zu: "${newStatus}"`);
|
|
590
|
+
} catch (e) {
|
|
591
|
+
await safeSend(`❌ Fehler: ${e.message}`);
|
|
592
|
+
}
|
|
593
|
+
break;
|
|
594
|
+
|
|
595
|
+
// ===========================================
|
|
596
|
+
// SESSION MANAGEMENT COMMANDS
|
|
597
|
+
// ===========================================
|
|
598
|
+
|
|
243
599
|
case '!neustart':
|
|
244
600
|
if (!targetSession) {
|
|
245
601
|
await safeSend('❌ Verwendung: !neustart <sessionId>');
|