Dieses Projekt wurde entwickelt, um der Community zu helfen, die WhatsApp als Möglichkeit nutzt, eine API schnell und effektiv zu implementieren, für Unternehmen und vieles mehr! Vielen Dank, dass Sie Teil dieser Familie sind.
Sie können dieses Projekt auf zwei Arten verwenden: Die erste Möglichkeit besteht darin, Webdienste mit einer Reihe klar definierter Operationen, den POST-, GET-, PUT- und DELETE-Methoden, zu verwenden. Die zweite Möglichkeit besteht darin, den Bot in Rohform zu verwenden, ohne ein Web zu verwenden Dienstleistungen.
Haben Sie irgendwelche Zweifel? Brauchen Sie Hilfe? Treten Sie unserer WhatsApp-Gruppe bei und stellen Sie Ihre Fragen mit anderen Menschen!
Verwenden Sie die stabile Version:
> npm i --save hydra-bot
oder für Nightly-Veröffentlichungen:
> npm i --save https://github.com/jonalan7/Hydra-bot/releases/download/nightly/hydra-nightly.tgz
Terminaladministrator:
> Garnadministrator
Garn Ubuntu installieren:
> curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -> echo „deb https://dl.yarnpkg.com/debian/stable main“ | sudo tee /etc/apt/sources.list.d/yarn.list> sudo apt update && sudo apt install Yarn> Yarn
Der Dienst wird auf localhost auf Port 8080 gestartet
const hydraBot = require('hydra-bot');(async () => { // Webdienst starten const WS = Warten auf hydraBot.initWs();})();
Wenn Sie im freien Modus arbeiten möchten und nur den Bot verwenden, trocknen Sie die erforderlichen Informationen!
const hydraBot = require('hydra-bot');const mime = require('mime-types');const fs = require('fs');(async () => { lassen Sie den Kunden; // Bot-Dienst starten const ev = Warten auf hydraBot.initServer(); // Zurück zur aktuellen WhatsApp-Oberfläche ev.on('interfaceChange', (change) => {console.log('interfaceChange: ', change); }); // qrcode-Parameter zurückgeben ev.on('qrcode', (qrcode) => {console.log('qrcode: ', qrcode); }); // Verbindungsinformationen zurückgeben ev.on('connection', async (conn) => {// browser information!if (conn.statusFind === 'browser') { console.log('info Browser: ', conn.text);}/ / Wurde mit WhatsApp verbunden chatif (conn.connect) { client = conn.client; // class client from hydra-bot const getMe = waiting client.getHost(); getMe.id._serialized; // Nummer host console.log('Host Number: ', hostNumber); // eine Textnachricht senden waiting client.sendMessage({ to: hostNumber, // Sie können die Kontaktnummer oder Gruppennummer übergeben body: „Hallo, ich bin Hydra Bot“, // Nachrichtentextoptionen: {type: 'sendText', // Versandart },}).then((result) => { console.log(result); // Nachricht result}).catch((error) => { console.log(error); // Meldungsfehler});} }); // zurückkommen, neue Nachrichten empfangen ev.on('newMessage', async (newMsg) => {// wann empfangen wirdif (!newMsg.result.fromMe) { // Nachricht empfangen! console.log('NewMessageReceived: ', newMsg.result); // Dateien herunterladen if (newMsg.result.isMedia) {const buffer = waiting client.decryptFile(newMsg.result);// An diesem Punkt können Sie tun, was Sie wollen wollen mit dem Puffer// Höchstwahrscheinlich möchten Sie es in eine Datei schreibenconst fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName, buffer, (err ) => { if (err) {console.log(err); }}// when is it sentif (!!newMsg.result.fromMe) { // Nachricht gesendet console.log('NewMessageSent: ', newMsg.result);} }); // gibt den Status jeder Nachricht zurück ev.on('newOnAck', async (event) => {console.log('id Message: ', event.result.id._serialized); // message idconsole.log('Status Message: ', event.result .ack); // -7 = MD_DOWNGRADE, -6 = INACTIVE, -5 = CONTENT_UNUPLOADABLE, -4 = CONTENT_TOO_BIG, -3 = CONTENT_GONE, -2 = EXPIRED, -1 = FAILED, 0 = CLOCK, 1 = SENT, 2 = RECEIVED, 3 = READ, 4 = PLAYEDconsole.log('From Message: ', event.result.from); messageconsole.log('To Message: ', event.result.to); // zur Nachricht });})();
Puppeteer kümmert sich um das Herunterladen der Datei. Die Entschlüsselung erfolgt so schnell wie möglich (länger als native Methoden). Unterstützt große Dateien!
const hydraBot = require('hydra-bot');const fs = require('fs');const mime = require('mime-types');(async () => { lassen Sie den Kunden; // Bot-Dienst starten const ev = Warten auf hydraBot.initServer(); // Verbindungsinformationen zurückgeben ev.on('connection', async (conn) => {// War mit WhatsApp-Chat verbunden (conn.connect) { client = conn.client;} }); ev.on('newMessage', async (newMsg) => {// wann empfangen wirdif (!newMsg.result.fromMe) { // Nachricht empfangen! console.log('NewMessageReceived: ', newMsg.result); // Dateien herunterladen if (newMsg.result.isMedia) {const buffer = waiting client.decryptFile(newMsg.result);// An diesem Punkt können Sie tun, was Sie wollen wollen mit dem Puffer// Höchstwahrscheinlich möchten Sie es in eine Datei schreibenconst fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName, buffer, (err ) => { if (err) {console.log(err }}); });})();
const hydraBot = require('hydra-bot');hydraBot.initServer({ session: 'session', // Name des zu generierenden Tokens, es wird ein Ordner mit allen Kundeninformationen erstellt pathNameToken: 'token', // Der Pfad und Name des Ordners, in dem die Client-Tokens gespeichert werden printQRInTerminal: true, // Der QR-CODE wird auf dem Terminal gedruckt, wenn true UpdatesLog: true, // Protokolliert Informationsaktualisierungen automatisch im Terminal timeAutoClose: 60000, // Wenn Sie den QR-CODE nicht standardmäßig 60 Sekunden lang lesen, wird der Browser des Clients automatisch geschlossen, um Speicher zu sparen. Wenn Sie ihn deaktivieren möchten, setzen Sie 0 oder false mkdirFolderToken: '', // Token-Ordnerpfad, nur innerhalb des Projekts puppeteerOptions: {headless: true, // Starten Sie das Projekt mit geöffnetem Browser oder nicht!args: [], // Zusätzliche Argumente zur Übergabe an die Browserinstanz. Durch Hinzufügen eines beliebigen Parameters ersetzen Sie die Standardargumente des ProjektsexecutablePath: 'useChrome', // Der Browser, der für das Projekt verwendet wird. Sie können einen Pfad angeben. Wenn Sie keine Parameter übergeben, wird der installierte Browser geöffnet. },});
const hydraBot = require('hydra-bot');hydraBot.initWs({ hostServer: 'http://localhost', Port: '8080', url: '', // Geben Sie eine URL an, um einen Rückruf zu erhalten! Authentifizierung: true, // in Routen nach Authentifizierung fragen pathNameToken: 'token', // Der Pfad und Name des Ordners, in dem die Client-Tokens gespeichert werden printQRInTerminal: true, // Der QR-CODE wird auf dem Terminal gedruckt, wenn true UpdatesLog: true, // Protokolliert Informationsaktualisierungen automatisch im Terminal timeAutoClose: 60000, // Wenn Sie den QR-CODE nicht standardmäßig 60 Sekunden lang lesen, wird der Browser des Clients automatisch geschlossen, um Speicher zu sparen. Wenn Sie ihn deaktivieren möchten, setzen Sie 0 oder false mkdirFolderToken: '', // Token-Ordnerpfad, nur innerhalb des Projekts puppeteerOptions: {headless: true, // Starten Sie das Projekt mit geöffnetem Browser oder nicht!args: [], // Zusätzliche Argumente zur Übergabe an die Browserinstanz. Durch Hinzufügen eines beliebigen Parameters ersetzen Sie die Standardargumente des ProjektsexecutablePath: 'useChrome', // Der Browser, der für das Projekt verwendet wird. Sie können einen Pfad angeben. Wenn Sie keine Parameter übergeben, wird der installierte Browser geöffnet. },});
Um die Administrationsoberfläche zu starten, verwenden Sie:
> Garnadministrator
Liste der Befehle im Terminal:
Befehl | Beschreibung |
---|---|
/create | Benutzer anlegen |
/delete | Benutzer löschen |
/selectid | Benutzer nach ID anzeigen |
/selectname | Wählen Sie den Benutzer nach Namen aus |
/getall | Listen Sie alle Benutzer auf |
/deactivate | Benutzer deaktivieren |
/activate | Benutzer aktivieren |
/changename | Benutzernamen ändern |
/password | Benutzerpasswort ändern |
/cls | Bildschirm/Terminal löschen |
/help | Listen Sie alle Befehle zur Verwaltung im Terminal auf |
/exit | Exit-Manager |
REST API
verwendenHeaders
, um darauf zugreifen zu können und einen Administrator zu erstellen{ „Content-Type“: „application/json“, „admin“: „admin“, „admin_pass“: „admin“}
Typ | Weiterleitung zum Browser | Beschreibung | Körper |
---|---|---|---|
POST | /create_user | Benutzer anlegen | {"name":"USE","password":"USER PASSWORD"} |
DEL | /delete_user/ID_USE | Benutzer löschen | EMPTY |
ERHALTEN | /get_user_by_id/ID_USE | Benutzer nach ID anzeigen | EMPTY |
ERHALTEN | /get_all_users | Listen Sie alle Benutzer auf | EMPTY |
SETZEN | /deactivate_user | Benutzer deaktivieren | {"id":"USER ID"} |
SETZEN | /activate_user | Benutzer aktivieren | {"id":"USER ID"} |
SETZEN | /change_name | Benutzernamen ändern | {"id":"USER ID","name":"NEW USERNAME"} |
SETZEN | /change_password | Benutzerpasswort ändern | {"id":"USER ID","password":"NEW SECURE PASSWORD"} |
Hinweis: Parameter können während der Entwicklung geändert werden!
Headers
(Standard: Benutzername = „Benutzer“, Passwort = „Benutzer“).Die Header müssen wie folgt parametrisiert werden:
{ „Content-Type“: „application/json“, „user“: „user“, „user_pass“: „user“}
Wenn Sie einen Rückruf zu einer bestimmten URL erhalten möchten, übergeben Sie den URL-Parameter in der Verbindungsroute.
Typ | Weiterleitung zum Browser | Beschreibung | Körper |
---|---|---|---|
POST | /connect | Starten Sie die Verbindung mit WhatsApp | { "url": "http://localhost:8080/webhooktest" } |
POST | /sendtext | Senden Sie eine SMS an eine Nummer | { "to": "contact number", "body": "message"} |
POST | /sendFile | Datei an eine Nummer senden | { "to": "contact number", "file_path": "https://docs.marklogic.com/guide/node-dev.pdf", "file_name": "node.js" } |
POST | /sendAudio | Audio senden | { "to": "contact number", "url_mp3": "https://cdn.freesound.org/previews/620/620094_4935038-lq.mp3", "file_name": "node.js" } |
POST | /sendImage | Bildnachricht senden | { "to": "contact number", "url_img": "https://i.pinimg.com/564x/a9/b1/18/a9b118761788b1ab260aae2835c468cd.jpg" } |
POST | /disconnect | Verbindung zum Server wird getrennt | LEER |
POST | /check_user | Überprüfen Sie, ob der eingegebene Benutzer existiert | LEER |
Typ | Weiterleitung zum Browser | Beschreibung | Körper |
---|---|---|---|
ERHALTEN | /get_all_contacts | Kontakte abrufen | EMPTY |
ERHALTEN | /check_connect | Überprüfen Sie, ob der Client verbunden ist | EMPTY |
ERHALTEN | /last_qrcode | Überprüfen Sie, ob der QR-Code aktiv ist | EMPTY |
ERHALTEN | /screenshot | Holen Sie sich einen Screenshot | EMPTY |
Um diese Funktionen nutzen zu können, müssen Sie eingeloggt sein!
to
<phone Number>@c.us
oder <phone Number>-<groupId>@g.us
oder <phone Number><groupId>@g.us
seinSie können Nachrichten nur mit einer Funktion senden!
// SMS senden, auf Client warten .sendMessage({to: '[email protected]', // Sie können die Kontaktnummer oder Gruppennummer übergebenbody: 'Eine von Hydra-Bot gesendete Nachricht', // Nachrichtentextoptionen: { Typ: 'sendText', // Versandart}, }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// sende Dateien, warte auf den Client .sendMessage({to: '[email protected]', // Sie können die Kontaktnummer oder Gruppennummer übergebenbody: './file.pdf', // Sie können ein Verzeichnis oder eine URL verwendenOptionen: { Typ: ' sendFile', // Dateiname der Versandart: 'filename', // Geben Sie hier den Dateinamen ein}, }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Datei senden audioawait client .sendMessage({to: '[email protected]', // Sie können die Kontaktnummer oder Gruppennummer übergebenbody: './file.mp3', // Sie können ein Verzeichnis oder eine URL verwendenOptionen: { Typ: ' sendAudio', // Versandart}, }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Audiodatei senden base64await client .sendMessage({an: '[email protected]', // Sie können die Kontaktnummer oder Gruppennummer übergebenbody: base64MP3, // Sie können ein Verzeichnis oder eine URL verwenden. Optionen: { Typ: 'sendAudioBase64', // Versand Typ}, }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Bildnachricht sendenawait client .sendMessage({to: '[email protected]', // Sie können die Kontaktnummer oder Gruppennummer übergebenbody: './file.jpg', // Sie können ein Verzeichnis oder eine URL verwendenOptionen: { Typ: ' sendImage', // Versandart caption: 'image text', // image text}, }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Bild senden Base64await-Client .sendMessage({an: '[email protected]', // Sie können die Kontaktnummer oder Gruppennummer übergebenbody: base64IMG, // Sie können ein Verzeichnis oder eine URL verwenden. Optionen: { Typ: 'sendImageFromBase64', // Versand Geben Sie die Beschriftung ein: 'Bildtext', // Bildtext}, }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });
// Sendet eine Textnachricht an den angegebenen Chatawait-Client .sendText('[email protected]', 'Eine von Hydra-Bot gesendete Nachricht') .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Sendet die Datei vom Pathawait-Client .sendFile('[email protected]', './file.pdf', { Dateiname: 'Dateiname' }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Audiodatei senden, warte auf den Client .sendAudio('[email protected]', './file.mp3') .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Audio senden base64await-Client .sendAudioBase64('[email protected]', base64MP3) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Bildnachricht sendenawait client .sendImage('[email protected]', './file.jpg', { caption: 'image text' }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });// Bild senden base64await client .sendImageFromBase64('[email protected]', base64IMG, { caption: 'image text' }) .then((result) => {console.log(result); // Nachrichtenergebnis }) .catch((error) => {console.log(error); // Meldungsfehler });
// Geräteinformationen abrufenawait client.getHost();
// gibt eine Liste von Kontakten zurückconst Kontakte = aw