Proyek ini dikembangkan untuk membantu komunitas yang menggunakan whatsapp sebagai cara mengimplementasikan API dengan cepat dan efektif, untuk perusahaan dan banyak lagi! Terima kasih telah menjadi bagian dari keluarga ini.
Anda dapat menggunakan proyek ini dengan dua cara, yang pertama adalah menggunakan Layanan Web menggunakan serangkaian operasi yang terdefinisi dengan baik, metode POST, GET, PUT dan DELETE, opsi kedua adalah menggunakan bot dalam bentuk mentah, tanpa menggunakan Web Layanan.
Apakah Anda ragu? Butuh bantuan? Bergabunglah dengan grup whatsapp kami dan ajukan pertanyaan Anda dengan orang lain!
Gunakan versi stabil:
> npm i --simpan hydra-bot
atau untuk rilis Nightly:
> npm saya --simpan https://github.com/jonalan7/Hydra-bot/releases/download/nightly/hydra-nightly.tgz
Admin Terminal:
> admin benang
Instal benang Ubuntu:
> 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 benang> benang
Layanan akan dimulai di localhost pada port 8080
const hydraBot = memerlukan('hydra-bot');(async() => { // memulai Layanan Web const WS = menunggu hydraBot.initWs();})();
Jika Anda ingin bekerja dalam mode bebas, hanya menggunakan bot, keringkan informasi yang diperlukan!
const hydraBot = memerlukan('hydra-bot');const mime = memerlukan('tipe-mime');const fs = memerlukan('fs');(async () => { biarkan klien; // memulai layanan bot const ev = menunggu hydraBot.initServer(); // kembali ke antarmuka whatsapp saat ini ev.on('interfaceChange', (perubahan) => {console.log('interfaceChange: ', ubah); }); // mengembalikan parameter kode qr ev.on('qrcode', (qrcode) => {console.log('qrcode: ', qrcode); }); // mengembalikan informasi koneksi ev.on('koneksi', async (sambungan) => {// informasi browser!if (conn.statusFind === 'browser') { console.log('info Browser: ', conn.text);}/ / Telah terhubung ke whatsapp chatif (conn.connect) { client = conn.client; // klien kelas dari hydra-bot const getMe = menunggu client.getHost(); getMe.id._serialized; // nomor host console.log('Nomor Host: ', hostNumber); // kirim pesan teks menunggu client.sendMessage({ ke: hostNumber, // Anda dapat meneruskan nomor kontak atau nomor grup body: "hai, saya hydra bot", // opsi teks pesan: {type: 'sendText', // jenis pengiriman },}).then((result) => { console.log(result); // pesan hasil}).catch((kesalahan) => { console.log(kesalahan); // pesan kesalahan});} }); // kembali menerima pesan baru ev.on('newMessage', async (newMsg) => {// kapan diterimaif (!newMsg.result.fromMe) { // pesan diterima! console.log('NewMessageReceived: ', newMsg.result); // unduh file if (newMsg.result.isMedia) {const buffer = menunggu client.decryptFile(newMsg.result);// Pada titik ini Anda dapat melakukan apa pun yang Anda inginkan dengan buffer// Kemungkinan besar Anda ingin menuliskannya ke dalam fileconst fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName , buffer, (err) => { if (err) {console.log(err) }}// kapan dikirim (!!newMsg.result.fromMe) { // Pesan terkirim console.log('NewMessageSent: ', newMsg.result);} }); // mengembalikan status setiap pesan ev.on('newOnAck', async (event) => {console.log('id Pesan: ', event.result.id._serialized); // pesan idconsole.log('Pesan Status: ', event.result .ack); // -7 = MD_DOWNGRADE, -6 = TIDAK AKTIF, -5 = CONTENT_UNUPLOADABLE, -4 = CONTENT_TOO_BIG, -3 = CONTENT_GONE, -2 = EXPIRED, -1 = GAGAL, 0 = JAM, 1 = DIKIRIM, 2 = DITERIMA, 3 = BACA, 4 = PLAYEDconsole.log('Dari Pesan: ', event.result.from); dari messageconsole.log('Ke Pesan: ', event.result.to); });})();
Dalang mengurus pengunduhan file. Dekripsi dilakukan secepat mungkin (mengalahkan metode asli). Mendukung file besar!
const hydraBot = memerlukan('hydra-bot');const fs = memerlukan('fs');const mime = memerlukan('tipe-mime');(async () => { biarkan klien; // memulai layanan bot const ev = menunggu hydraBot.initServer(); // mengembalikan informasi koneksi ev.on('connection', async (conn) => {// Terhubung ke whatsapp chatif (conn.connect) { client = conn.client;} }); ev.on('newMessage', async (newMsg) => {// kapan diterimaif (!newMsg.result.fromMe) { // pesan diterima! console.log('NewMessageReceived: ', newMsg.result); // unduh file if (newMsg.result.isMedia) {const buffer = menunggu client.decryptFile(newMsg.result);// Pada titik ini Anda dapat melakukan apa pun yang Anda inginkan dengan buffer// Kemungkinan besar Anda ingin menuliskannya ke dalam fileconst fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName , buffer, (err) => { jika (err) {konsol.log(err }}); });})();
const hydraBot = memerlukan('hydra-bot');hydraBot.initServer({ session: 'session', // Nama token yang akan dibuat, folder dengan semua informasi pelanggan akan dibuat pathNameToken: 'token', // Jalur dan nama folder tempat token klien akan disimpan printQRInTerminal: true, // KODE QR akan tercetak di terminal jika benar updateLog: true, // Mencatat pembaruan info secara otomatis di terminal timeAutoClose: 60000, // Jika Anda tidak membaca QR CODE secara default 60 detik, maka secara otomatis akan menutup browser klien untuk menghemat memori, jika Anda ingin menonaktifkannya, setel 0 atau salah mkdirFolderToken: '', // Jalur folder token, hanya di dalam proyek dalangOptions: {headless: true, // Memulai proyek dengan browser terbuka atau tidak!args: [], // Argumen tambahan untuk diteruskan ke instance browser. menambahkan parameter apa pun, Anda akan mengganti argumen default dari projectexecutablePath: 'useChrome', // Browser yang akan digunakan untuk proyek, Anda dapat menentukan jalur, jika Anda tidak meneruskan parameter apa pun maka akan membuka browser yang diinstal. },});
const hydraBot = memerlukan('hydra-bot');hydraBot.initWs({ hostServer: 'http://localhost', pelabuhan: '8080', url: '', // arahkan URL untuk menerima panggilan balik! otentikasi: benar, // minta otentikasi di rute pathNameToken: 'token', // Jalur dan nama folder tempat token klien akan disimpan printQRInTerminal: true, // KODE QR akan tercetak di terminal jika benar updateLog: true, // Mencatat pembaruan info secara otomatis di terminal timeAutoClose: 60000, // Jika Anda tidak membaca QR CODE secara default 60 detik, maka secara otomatis akan menutup browser klien untuk menghemat memori, jika Anda ingin menonaktifkannya, setel 0 atau salah mkdirFolderToken: '', // Jalur folder token, hanya di dalam proyek dalangOptions: {headless: true, // Memulai proyek dengan browser terbuka atau tidak!args: [], // Argumen tambahan untuk diteruskan ke instance browser. menambahkan parameter apa pun, Anda akan mengganti argumen default dari projectexecutablePath: 'useChrome', // Browser yang akan digunakan untuk proyek, Anda dapat menentukan jalur, jika Anda tidak meneruskan parameter apa pun maka akan membuka browser yang diinstal. },});
Untuk memulai penggunaan antarmuka administrasi:
> admin benang
Daftar perintah di terminal:
Memerintah | Keterangan |
---|---|
/create | Buat pengguna |
/delete | Hapus pengguna |
/selectid | Tampilkan pengguna berdasarkan id |
/selectname | Pilih pengguna berdasarkan nama |
/getall | Daftar semua pengguna |
/deactivate | Nonaktifkan pengguna |
/activate | Aktifkan Pengguna |
/changename | Ubah nama pengguna |
/password | Ubah kata sandi pengguna |
/cls | Hapus layar/terminal |
/help | Daftar semua perintah untuk administrasi di terminal |
/exit | Manajer keluar |
REST API
Headers
, untuk dapat mengaksesnya, untuk membuat administrator{ "Tipe Konten": "aplikasi/json", "admin": "admin", "admin_pass": "admin"}
Jenis | Rute ke browser | Keterangan | Tubuh |
---|---|---|---|
POS | /create_user | Buat pengguna | {"name":"USE","password":"USER PASSWORD"} |
DEL | /delete_user/ID_USE | Hapus pengguna | EMPTY |
MENDAPATKAN | /get_user_by_id/ID_USE | Tampilkan pengguna berdasarkan ID | EMPTY |
MENDAPATKAN | /get_all_users | Daftar semua pengguna | EMPTY |
MELETAKKAN | /deactivate_user | Nonaktifkan pengguna | {"id":"USER ID"} |
MELETAKKAN | /activate_user | Aktifkan Pengguna | {"id":"USER ID"} |
MELETAKKAN | /change_name | Ubah nama pengguna | {"id":"USER ID","name":"NEW USERNAME"} |
MELETAKKAN | /change_password | Ubah kata sandi pengguna | {"id":"USER ID","password":"NEW SECURE PASSWORD"} |
Catatan: Parameter dapat diubah selama pengembangan!
Headers
pengguna (default, nama pengguna = 'pengguna', kata sandi = 'pengguna').Header harus diparameterisasi sebagai:
{ "Tipe Konten": "aplikasi/json", "pengguna": "pengguna", "user_pass": "pengguna"}
jika Anda ingin menerima panggilan balik pada url tertentu, teruskan parameter url di rute koneksi.
Jenis | Rute ke browser | Keterangan | Tubuh |
---|---|---|---|
POS | /connect | Mulai koneksi dengan Whatsapp | { "url": "http://localhost:8080/webhooktest" } |
POS | /sendtext | Kirim SMS ke nomor | { "to": "contact number", "body": "message"} |
POS | /sendFile | Kirim file ke nomor | { "to": "contact number", "file_path": "https://docs.marklogic.com/guide/node-dev.pdf", "file_name": "node.js" } |
POS | /sendAudio | Kirim audio | { "to": "contact number", "url_mp3": "https://cdn.freesound.org/previews/620/620094_4935038-lq.mp3", "file_name": "node.js" } |
POS | /sendImage | Kirim pesan gambar | { "to": "contact number", "url_img": "https://i.pinimg.com/564x/a9/b1/18/a9b118761788b1ab260aae2835c468cd.jpg" } |
POS | /disconnect | Memutuskan sambungan dari server | KOSONG |
POS | /check_user | Periksa apakah pengguna yang dimasukkan ada | KOSONG |
Jenis | Rute ke browser | Keterangan | Tubuh |
---|---|---|---|
MENDAPATKAN | /get_all_contacts | Ambil kontak | EMPTY |
MENDAPATKAN | /check_connect | periksa apakah klien terhubung | EMPTY |
MENDAPATKAN | /last_qrcode | Periksa apakah Kode QR aktif | EMPTY |
MENDAPATKAN | /screenshot | Dapatkan tangkapan layar | EMPTY |
Anda harus login untuk menggunakan fungsi-fungsi ini!
to
berupa <phone Number>@c.us
atau <phone Number>-<groupId>@g.us
atau <phone Number><groupId>@g.us
Anda dapat mengirim pesan hanya menggunakan satu fungsi!
// kirim pesan teksmenunggu klien .sendMessage({ke: '[email protected]', // Anda dapat meneruskan nomor kontak atau nomor grup: 'Pesan yang dikirim oleh hydra-bot', // opsi teks pesan: { ketik: 'sendText', // jenis pengiriman}, }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// kirim filemenunggu klien .sendMessage({to: '[email protected]', // Anda dapat memasukkan nomor kontak atau nomor grup: './file.pdf', // Anda dapat menggunakan direktori atau menggunakan pilihan url: { ketik: ' sendFile', // jenis pengiriman nama file: 'nama file', // masukkan nama file di sini}, }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// kirim file audioawait klien .sendMessage({to: '[email protected]', // Anda dapat memasukkan nomor kontak atau nomor grup: './file.mp3', // Anda dapat menggunakan direktori atau menggunakan pilihan url: { ketik: ' sendAudio', // jenis pengiriman}, }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim file audio klien base64await .sendMessage({to: '[email protected]', // Anda dapat memasukkan nomor kontak atau nomor grup: base64MP3, // Anda dapat menggunakan direktori atau menggunakan pilihan url: { ketik: 'sendAudioBase64', // pengiriman jenis}, }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim pesan gambar menunggu klien .sendMessage({to: '[email protected]', // Anda dapat memasukkan nomor kontak atau nomor grup: './file.jpg', // Anda dapat menggunakan direktori atau menggunakan pilihan url: { ketik: ' sendImage', // jenis pengiriman keterangan: 'teks gambar', // teks gambar}, }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim gambar klien Base64await .sendMessage({to: '[email protected]', // Anda dapat memasukkan nomor kontak atau nomor grup: base64IMG, // Anda dapat menggunakan direktori atau menggunakan urloptions: { type: 'sendImageFromBase64', // pengiriman ketik keterangan: 'teks gambar', // teks gambar}, }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });
// Mengirim pesan teks ke klien chatawait tertentu .sendText('[email protected]', 'Pesan dikirim oleh hydra-bot') .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Mengirim file dari klien pathawait .sendFile('[email protected]', './file.pdf', { nama file: 'nama file' }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim file audio menunggu klien .sendAudio('[email protected]', './file.mp3') .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim klien audio base64await .sendAudioBase64('[email protected]', base64MP3) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim pesan gambar menunggu klien .sendImage('[email protected]', './file.jpg', { keterangan: 'teks gambar' }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });// Kirim gambar base64await klien .sendImageFromBase64('[email protected]', base64IMG, { keterangan: 'teks gambar' }) .then((result) => {console.log(result); // hasil pesan }) .catch((error) => {console.log(error); // pesan kesalahan });
// Dapatkan info perangkat menunggu client.getHost();
// mengembalikan daftar kontakconst kontak = aw