@deathnaitsa/wa-api 2.0.4 → 2.0.5

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/publish.sh ADDED
@@ -0,0 +1,103 @@
1
+ #!/bin/bash
2
+
3
+ # Ins Skript-Verzeichnis wechseln (funktioniert mit WSL-Pfaden)
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ cd "$SCRIPT_DIR" || {
6
+ echo "Failed to change to script directory"
7
+ exit 1
8
+ }
9
+
10
+ echo "Working directory: $(pwd)"
11
+
12
+ # Farben für die Ausgabe
13
+ GREEN='\033[0;32m'
14
+ RED='\033[0;31m'
15
+ YELLOW='\033[1;33m'
16
+ BLUE='\033[0;34m'
17
+ CYAN='\033[0;36m'
18
+ RESET='\033[0m'
19
+
20
+ echo ""
21
+ echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════╗${RESET}"
22
+ echo -e "${CYAN}║ 🚀 WhatsApp API Auto Deploy Script 🚀 ║${RESET}"
23
+ echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════╝${RESET}"
24
+ echo ""
25
+
26
+ # Fehlerbehandlung aktivieren
27
+ set -e
28
+
29
+ # Trap für saubere Fehlerausgabe
30
+ trap 'echo -e "\n${RED}❌ Script failed at line $LINENO${RESET}"; exit 1' ERR
31
+
32
+ # Schritt 1: NPM Build
33
+ echo -e "${BLUE}[1/5] 📦 Building project...${RESET}"
34
+ npm run build
35
+ echo -e "${GREEN}✅ Build successful!${RESET}"
36
+ echo ""
37
+
38
+ # Schritt 2: Git Status prüfen
39
+ echo -e "${BLUE}[2/5] 📋 Checking Git status...${RESET}"
40
+ git status --short
41
+ echo ""
42
+
43
+ # Schritt 3: Commit Message eingeben
44
+ read -p "$(echo -e ${YELLOW}💬 Enter commit message \(or press Enter for default\): ${RESET})" commit_msg
45
+ if [ -z "$commit_msg" ]; then
46
+ commit_msg="Update wa-api with new features"
47
+ fi
48
+ echo ""
49
+
50
+ # Schritt 4: Git Add, Commit, Push
51
+ echo -e "${BLUE}[3/5] 📤 Committing and pushing to Git...${RESET}"
52
+ git add .
53
+
54
+ if git commit -m "$commit_msg"; then
55
+ echo -e "${GREEN}✅ Committed successfully!${RESET}"
56
+ else
57
+ echo -e "${YELLOW}⚠️ Nothing to commit or commit failed${RESET}"
58
+ fi
59
+
60
+ if git push; then
61
+ echo -e "${GREEN}✅ Pushed to Git successfully!${RESET}"
62
+ elif git push --set-upstream origin main; then
63
+ echo -e "${GREEN}✅ Pushed to Git successfully! (upstream set)${RESET}"
64
+ else
65
+ echo -e "${RED}❌ Git push failed!${RESET}"
66
+ exit 1
67
+ fi
68
+ echo ""
69
+
70
+ # Schritt 5: NPM Publish (optional)
71
+ echo -e "${BLUE}[4/5] 📢 NPM Publish${RESET}"
72
+ read -p "$(echo -e ${YELLOW}Do you want to publish to NPM? \(y/N\): ${RESET})" do_publish
73
+ if [[ "$do_publish" =~ ^[Yy]$ ]]; then
74
+ echo -e "${BLUE}Publishing to NPM...${RESET}"
75
+ if npm publish --access public; then
76
+ echo -e "${GREEN}✅ Published to NPM successfully!${RESET}"
77
+ published=true
78
+ else
79
+ echo -e "${RED}❌ NPM publish failed!${RESET}"
80
+ echo -e "${YELLOW}💡 Tip: Make sure you're logged in with 'npm login'${RESET}"
81
+ exit 1
82
+ fi
83
+ else
84
+ echo -e "${YELLOW}⏭️ Skipping NPM publish${RESET}"
85
+ published=false
86
+ fi
87
+ echo ""
88
+
89
+ # Fertig
90
+ echo ""
91
+ echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════╗${RESET}"
92
+ echo -e "${GREEN}║ ✨ Deployment Complete! ✨ ║${RESET}"
93
+ echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════╝${RESET}"
94
+ echo ""
95
+ echo -e "${BLUE}Summary:${RESET}"
96
+ echo -e " • Build: ${GREEN}✓${RESET}"
97
+ echo -e " • Git Push: ${GREEN}✓${RESET}"
98
+ if [ "$published" = true ]; then
99
+ echo -e " • NPM Publish: ${GREEN}✓${RESET}"
100
+ else
101
+ echo -e " • NPM Publish: ${YELLOW}Skipped${RESET}"
102
+ fi
103
+ echo ""
@@ -0,0 +1,19 @@
1
+ #!/bin/bash
2
+
3
+ cd "$(dirname "${BASH_SOURCE[0]}")"
4
+
5
+ echo "Setting up Git credentials..."
6
+
7
+ # Credential helper konfigurieren
8
+ git config credential.helper store
9
+
10
+ # Token in die credentials-Datei schreiben (mit lowercase username!)
11
+ echo "https://deathnaitsa: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@github.com" > ~/.git-credentials
12
+
13
+ # Push mit Token durchführen
14
+ echo "Pushing to GitHub..."
15
+ git push --set-upstream origin main
16
+
17
+ echo ""
18
+ echo "✅ Git configured and pushed successfully!"
19
+ echo "You can now use ./publish.sh without entering credentials."
package/socket.js CHANGED
@@ -9,6 +9,17 @@ import {
9
9
  sendReaction,
10
10
  sendTyping,
11
11
  sendRecording,
12
+ sendPoll,
13
+ uploadStatus,
14
+ sendBroadcast,
15
+ queueMessage,
16
+ getQueueStatus,
17
+ clearQueue,
18
+ pauseQueue,
19
+ resumeQueue,
20
+ setRateLimit,
21
+ setAutoReconnect,
22
+ getConnectionHealth,
12
23
  createGroup,
13
24
  getGroupMetadata,
14
25
  updateGroupSubject,
@@ -116,6 +127,44 @@ console.log(' !ort <lat> <lon> - Standort senden');
116
127
  console.log(' !reaktion <emoji> - Auf letzte Nachricht reagieren');
117
128
  console.log(' !tippen - Tipp-Indikator anzeigen');
118
129
  console.log(' !aufnehmen - Aufnahme-Indikator anzeigen');
130
+ console.log(' !umfrage <frage> - Umfrage erstellen');
131
+ console.log(' !broadcast <text> - Broadcast senden');
132
+ console.log('');
133
+ console.log(' 📱 Status & Queue:');
134
+ console.log(' !status <text> - Status hochladen');
135
+ console.log(' !queue <text> - Nachricht in Queue');
136
+ console.log(' !queuestatus - Queue Status anzeigen');
137
+ console.log(' !clearqueue - Queue leeren');
138
+ console.log(' !ratelimit <n> - Rate Limit setzen (n/min)');
139
+ console.log('');
140
+ console.log(' 👤 Profil & Kontakt:');
141
+ console.log(' !profilbild - Profilbild des Absenders');
142
+ console.log(' !status - Status des Absenders');
143
+ console.log(' !kontakt - Kontaktinfo');
144
+ console.log(' !meinestatus <t> - Eigenen Status ändern');
145
+ console.log('');
146
+ console.log(' 🔄 Verbindung:');
147
+ console.log(' !autoreconnect - Auto-Reconnect aktivieren');
148
+ console.log(' !health - Verbindungs-Status');
149
+ console.log('');
150
+ console.log(' ⚙️ Session:');
151
+ console.log(' !neustart <id> - Session neu starten');
152
+ console.log(' !pause <id> - Session pausieren');
153
+ console.log(' !fortsetzen <id> - Session fortsetzen');
154
+ console.log(' !stopp <id> - Session stoppen');
155
+ console.log(' !löschen <id> - Session-Daten löschen');
156
+ console.log(' !start <id> - Neue Session starten');
157
+ console.log(' !zuweisen <id> - Diesen Chat einer Session zuweisen');
158
+ console.log(' !zuweisungen - Alle Chat-Zuweisungen anzeigen\n');
159
+ console.log(' !entfernen <nr> - Teilnehmer entfernen');
160
+ console.log(' !promoten <nr> - Zum Admin machen');
161
+ console.log(' !demoten <nr> - Admin entfernen');
162
+ console.log('');
163
+ console.log(' 📧 Nachrichten:');
164
+ console.log(' !ort <lat> <lon> - Standort senden');
165
+ console.log(' !reaktion <emoji> - Auf letzte Nachricht reagieren');
166
+ console.log(' !tippen - Tipp-Indikator anzeigen');
167
+ console.log(' !aufnehmen - Aufnahme-Indikator anzeigen');
119
168
  console.log('');
120
169
  console.log(' 👤 Profil & Kontakt:');
121
170
  console.log(' !profilbild - Profilbild des Absenders');
@@ -592,6 +641,150 @@ onMessage(async (msg) => {
592
641
  }
593
642
  break;
594
643
 
644
+ // ===========================================
645
+ // POLL, BROADCAST, QUEUE & STATUS COMMANDS
646
+ // ===========================================
647
+
648
+ case '!umfrage':
649
+ const pollQuestion = args.join(' ');
650
+ if (!pollQuestion || !pollQuestion.includes('|')) {
651
+ await safeSend('❌ Verwendung: !umfrage Frage|Option1|Option2|Option3\nBeispiel: !umfrage Pizza oder Pasta?|Pizza|Pasta');
652
+ break;
653
+ }
654
+
655
+ try {
656
+ const [question, ...options] = pollQuestion.split('|').map(s => s.trim());
657
+ await sendPoll(msg.sessionId, msg.from, question, options);
658
+ await safeSend('✅ Umfrage gesendet!');
659
+ } catch (e) {
660
+ await safeSend(`❌ Fehler: ${e.message}`);
661
+ }
662
+ break;
663
+
664
+ case '!broadcast':
665
+ const broadcastText = args.join(' ');
666
+ if (!broadcastText) {
667
+ await safeSend('❌ Verwendung: !broadcast <Text>');
668
+ break;
669
+ }
670
+
671
+ try {
672
+ // Example: broadcast to first 3 contacts (customize as needed)
673
+ const sessions = client.getAllSessions();
674
+ const recipients = ['491234567890@s.whatsapp.net']; // Add real numbers
675
+
676
+ await safeSend('📢 Sende Broadcast...');
677
+ const results = await sendBroadcast(msg.sessionId, recipients, { text: broadcastText });
678
+
679
+ const successful = results.filter(r => r.success).length;
680
+ await safeSend(`✅ Broadcast: ${successful}/${results.length} erfolgreich`);
681
+ } catch (e) {
682
+ await safeSend(`❌ Fehler: ${e.message}`);
683
+ }
684
+ break;
685
+
686
+ case '!status':
687
+ const statusText = args.join(' ');
688
+ if (!statusText) {
689
+ await safeSend('❌ Verwendung: !status <Text>');
690
+ break;
691
+ }
692
+
693
+ try {
694
+ await uploadStatus(msg.sessionId, { text: statusText });
695
+ await safeSend('✅ Status hochgeladen!');
696
+ } catch (e) {
697
+ await safeSend(`❌ Fehler: ${e.message}`);
698
+ }
699
+ break;
700
+
701
+ case '!queue':
702
+ const queueText = args.join(' ');
703
+ if (!queueText) {
704
+ await safeSend('❌ Verwendung: !queue <Text>');
705
+ break;
706
+ }
707
+
708
+ try {
709
+ queueMessage(msg.sessionId, msg.from, { text: queueText }, 0);
710
+ await safeSend('✅ Nachricht zur Queue hinzugefügt');
711
+ } catch (e) {
712
+ await safeSend(`❌ Fehler: ${e.message}`);
713
+ }
714
+ break;
715
+
716
+ case '!queuestatus':
717
+ try {
718
+ const queueStatus = getQueueStatus(msg.sessionId);
719
+ let queueInfo = `📊 *Queue Status*\n\n`;
720
+ queueInfo += `Warteschlange: ${queueStatus.queueLength} Nachrichten\n`;
721
+
722
+ if (queueStatus.rateLimit) {
723
+ queueInfo += `Rate Limit: ${queueStatus.rateLimit.count}/${queueStatus.rateLimit.limit}\n`;
724
+ queueInfo += `Reset in: ${Math.round(queueStatus.rateLimit.resetIn / 1000)}s\n`;
725
+ }
726
+
727
+ await safeSend(queueInfo);
728
+ } catch (e) {
729
+ await safeSend(`❌ Fehler: ${e.message}`);
730
+ }
731
+ break;
732
+
733
+ case '!clearqueue':
734
+ try {
735
+ clearQueue(msg.sessionId);
736
+ await safeSend('✅ Queue geleert');
737
+ } catch (e) {
738
+ await safeSend(`❌ Fehler: ${e.message}`);
739
+ }
740
+ break;
741
+
742
+ case '!ratelimit':
743
+ const limit = parseInt(args[0]);
744
+ if (isNaN(limit) || limit < 1) {
745
+ await safeSend('❌ Verwendung: !ratelimit <Anzahl pro Minute>\nBeispiel: !ratelimit 30');
746
+ break;
747
+ }
748
+
749
+ try {
750
+ setRateLimit(msg.sessionId, limit);
751
+ await safeSend(`✅ Rate Limit gesetzt: ${limit} Nachrichten/Minute`);
752
+ } catch (e) {
753
+ await safeSend(`❌ Fehler: ${e.message}`);
754
+ }
755
+ break;
756
+
757
+ // ===========================================
758
+ // CONNECTION HEALTH & AUTO-RECONNECT
759
+ // ===========================================
760
+
761
+ case '!autoreconnect':
762
+ try {
763
+ setAutoReconnect(msg.sessionId, true, 5, 2);
764
+ await safeSend('✅ Auto-Reconnect aktiviert\n- Max Retries: 5\n- Backoff: 2x');
765
+ } catch (e) {
766
+ await safeSend(`❌ Fehler: ${e.message}`);
767
+ }
768
+ break;
769
+
770
+ case '!health':
771
+ try {
772
+ const health = getConnectionHealth(msg.sessionId);
773
+ let healthInfo = `🏥 *Connection Health*\n\n`;
774
+ healthInfo += `Status: ${health.connected ? '🟢 Verbunden' : '🔴 Getrennt'}\n`;
775
+ healthInfo += `Uptime: ${Math.round(health.uptime / 1000)}s\n`;
776
+ healthInfo += `Auto-Reconnect: ${health.autoReconnect ? 'Aktiv' : 'Inaktiv'}\n`;
777
+
778
+ if (health.autoReconnect) {
779
+ healthInfo += `Retries: ${health.retryCount}/${health.maxRetries}\n`;
780
+ }
781
+
782
+ await safeSend(healthInfo);
783
+ } catch (e) {
784
+ await safeSend(`❌ Fehler: ${e.message}`);
785
+ }
786
+ break;
787
+
595
788
  // ===========================================
596
789
  // SESSION MANAGEMENT COMMANDS
597
790
  // ===========================================