@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/socket.js CHANGED
@@ -1,4 +1,32 @@
1
- import { startSession, onMessage, sendText, client, getAllSessionsInfo, getGlobalStats, countReceivedMessage } from './nishi-wa-api-new/src/index.js';
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>');