@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/README.md +429 -64
- package/dist/WhatsAppClient.cjs +1 -1
- package/dist/WhatsAppClient.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/publish.bat +105 -0
- package/publish.sh +103 -0
- package/setup-git-token.sh +19 -0
- package/socket.js +193 -0
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
|
// ===========================================
|