Hydra bot
v1.0.33
該專案的開發是為了幫助使用 Whatsapp 的社群為公司等快速有效地實施 API!感謝您成為這個家庭的一員。
您可以透過兩種方式使用該項目,第一種是使用Web 服務,使用一組定義明確的操作,即POST、GET、PUT 和DELETE 方法,第二種選擇是以原始形式使用機器人,而不使用Web服務。
你還有什麼疑問嗎?需要幫助嗎?加入我們的 Whatsapp 群組並與其他人一起提問!
使用穩定版本:
> npm i --儲存 Hydra-bot
或每晚發布:
> npm i --save https://github.com/jonalan7/Hydra-bot/releases/download/nightly/Hydra-nightly.tgz
終端管理員:
> 紗線管理員
安裝紗線Ubuntu:
>curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -> echo "deb https://dl.yarnpkg.com/debian/ stable main" | 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> 紗線
該服務將在 localhost 的連接埠 8080 上啟動
const HydraBot = require('Hydra-bot');(async () => { // 啟動網路服務 const WS = 等待 HydraBot.initWs();})();
如果您想在自由模式下工作,僅使用機器人,請乾燥必要的資訊!
const HydraBot = require('Hydra-bot');const mime = require('mime-types');const fs = require('fs');(async () => { 讓客戶; // 啟動機器人服務 const ev = 等待 HydraBot.initServer(); // 返回目前whatsapp介面 ev.on('interfaceChange', (change) => {console.log('interfaceChange: ',change); }); // 傳回二維碼參數 ev.on('qrcode', (qrcode) => {console.log('qrcode: ', qrcode); }); // 回傳連線訊息 ev.on('connection', async (conn) => {//瀏覽器資訊!if (conn.statusFind === 'browser') { console.log('info Browser: ', conn.text);} / / 已連接到whatsapp chatif (conn.connect) { client = conn.client; // 來自 Hydra-bot 的類別客戶端 const getMe = wait client.getHost(); const hostNumber = getMe.id._serialized; .log ('主機號碼: ', hostNumber); // 傳送簡訊wait client.sendMessage({ to: hostNumber, // 可以傳遞聯絡號碼或群組號碼body: "hi i'm Hydra bot", // 訊息文字選項: {type: 'sendText', // 運送類型},}).then((result) => { console.log(result); // 訊息結果}).catch((error) = > { console.log (error); // 訊息錯誤});} }); // 接收新訊息返回 ev.on('newMessage', async (newMsg) => {// 何時收到if (!newMsg.result.fromMe) { // 收到訊息!console.log('NewMessageReceived: ', newMsg.result) ; //下載檔案if (newMsg.result.isMedia) { const buffer = wait client.decryptFile(newMsg.result);// 此時您可以對緩衝區執行任何您想要的操作// 很可能您想將其寫入檔案const fileName = `some-file-name.${mime.extension( newMsg.result.mimetype )}`;fs.writeFile(fileName, buffer, (err) => { if (err) {console. log(err); }}); }}// 何時發送 if (!!newMsg.result.fromMe) { // 訊息發送 console.log('NewMessageSent: ', newMsg.result);} }); // 傳回每個訊息的狀態 ev.on('newOnAck', async (event) => {console.log('id 訊息: ', event.result.id._serialized); // 訊息 idconsole.log('狀態訊息: ', event.result .ack); // -7 = MD_DOWNGRADE、-6 = 非活動、-5 = CONTENT_UNUPLOADABLE、-4 = CONTENT_TOO_BIG、-3 = CONTENT_GONE、-2 = 過期、-1 = 失敗、0 = 時鐘、1 = 已傳送、2 = RECEIVED, 3 = READ, 4 = PLAYEDconsole.log('From Message: ', event.result.from); // from messageconsole.log('To Message: ', event.result.to); });})();
Puppeteer 負責檔案下載。解密正在盡可能快地完成(超過本機方法)。支援大檔案!
const HydraBot = require('Hydra-bot');const fs = require('fs');const mime = require('mime-types');(async () => { 讓客戶; // 啟動機器人服務 const ev = 等待 HydraBot.initServer(); // 回傳連線訊息 ev.on('connection', async (conn) => {// 已連接到 Whatsapp chatif (conn.connect) { client = conn.client;} }); ev.on('newMessage', async (newMsg) => {// 何時收到if (!newMsg.result.fromMe) { // 收到訊息!console.log('NewMessageReceived: ', newMsg.result) ; //下載檔案if (newMsg.result.isMedia) { const buffer = wait client.decryptFile(newMsg.result);// 此時您可以對緩衝區執行任何您想要的操作// 很可能您想將其寫入檔案const 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', // 要產生的令牌的名稱,將建立一個包含所有客戶資訊的資料夾 pathNameToken: 'token', // 保存客戶端令牌的資料夾的路徑和名稱 printQRInTerminal: true, // 如果為 true,則二維碼將列印在終端機上 updateLog: true, // 在終端機中自動記錄資訊更新 timeAutoClose: 60000, // 如果預設60秒沒有讀取二維碼,會自動關閉客戶端瀏覽器以節省內存,如果要停用,設定0或false mkdirFolderToken: '', // Token資料夾路徑,僅在專案內部 puppeteerOptions: {headless: true, // 在瀏覽器開啟與否的情況下啟動專案! args: [], // 要傳遞給瀏覽器實例的其他參數。新增任何參數,您將取代專案的預設參數executablePath: 'useChrome', // 專案將使用的瀏覽器,您可以指定路徑,如果不傳遞任何參數,它將開啟已安裝的瀏覽器。 },});
const HydraBot = require('Hydra-bot');HydraBot.initWs({ 主機伺服器:'http://localhost', 端口:'8080', url: '', // 指向一個接收回呼的URL! authentication: true, // 請求在路由中進行身份驗證 pathNameToken: 'token', // 保存客戶端令牌的資料夾的路徑和名稱 printQRInTerminal: true, // 如果為 true,則二維碼將列印在終端機上 updateLog: true, // 在終端機中自動記錄資訊更新 timeAutoClose: 60000, // 如果預設60秒沒有讀取二維碼,會自動關閉客戶端瀏覽器以節省內存,如果要停用,設定0或false mkdirFolderToken: '', // Token資料夾路徑,僅在專案內部 puppeteerOptions: {headless: true, // 在瀏覽器開啟與否的情況下啟動專案! args: [], // 要傳遞給瀏覽器實例的其他參數。新增任何參數,您將取代專案的預設參數executablePath: 'useChrome', // 專案將使用的瀏覽器,您可以指定路徑,如果不傳遞任何參數,它將開啟已安裝的瀏覽器。 },});
若要啟動管理介面,請使用:
> 紗線管理員
終端機中的命令列表:
命令 | 描述 |
---|---|
/create | 創建用戶 |
/delete | 刪除用戶 |
/selectid | 按id顯示用戶 |
/selectname | 按名稱選擇用戶 |
/getall | 列出所有用戶 |
/deactivate | 停用用戶 |
/activate | 啟用用戶 |
/changename | 更改使用者名稱 |
/password | 更改使用者密碼 |
/cls | 清晰的螢幕/終端 |
/help | 列出終端機中所有管理命令 |
/exit | 退出經理 |
REST API
命令列表Headers
模式,以便能夠存取它們,建立管理員{“Content-Type”:“application/json”,“admin”:“admin”,“admin_pass”:“admin”}
類型 | 路由到瀏覽器 | 描述 | 身體 |
---|---|---|---|
郵政 | /create_user | 創建用戶 | {"name":"USE","password":"USER PASSWORD"} |
德爾 | /delete_user/ID_USE | 刪除用戶 | EMPTY |
得到 | /get_user_by_id/ID_USE | 按 ID 顯示用戶 | EMPTY |
得到 | /get_all_users | 列出所有用戶 | EMPTY |
放 | /deactivate_user | 停用用戶 | {"id":"USER ID"} |
放 | /activate_user | 啟用用戶 | {"id":"USER ID"} |
放 | /change_name | 更改使用者名稱 | {"id":"USER ID","name":"NEW USERNAME"} |
放 | /change_password | 更改使用者密碼 | {"id":"USER ID","password":"NEW SECURE PASSWORD"} |
注意:在開發過程中可以更改參數!
Headers
模式(默認,用戶名 = 'user',密碼 = 'user')。標頭必須參數化為:
{“Content-Type”:“application/json”,“使用者”:“使用者”,“user_pass”:“使用者”}
如果您想要接收特定 url 的回調,請在連線路由中傳遞 url 參數。
類型 | 路由到瀏覽器 | 描述 | 身體 |
---|---|---|---|
郵政 | /connect | 開始與 Whatsapp 連接 | { "url": "http://localhost:8080/webhooktest" } |
郵政 | /sendtext | 發送簡訊到號碼 | { "to": "contact number", "body": "message"} |
郵政 | /sendFile | 將文件傳送至號碼 | { "to": "contact number", "file_path": "https://docs.marklogic.com/guide/node-dev.pdf", "file_name": "node.js" } |
郵政 | /sendAudio | 傳送音訊 | { "to": "contact number", "url_mp3": "https://cdn.freesound.org/previews/620/620094_4935038-lq.mp3", "file_name": "node.js" } |
郵政 | /sendImage | 傳送圖片訊息 | { "to": "contact number", "url_img": "https://i.pinimg.com/564x/a9/b1/18/a9b118761788b1ab260aae2835c468cd.jpg" } |
郵政 | /disconnect | 與伺服器斷開連接 | 空的 |
郵政 | /check_user | 檢查輸入的使用者是否存在 | 空的 |
類型 | 路由到瀏覽器 | 描述 | 身體 |
---|---|---|---|
得到 | /get_all_contacts | 檢索聯絡人 | EMPTY |
得到 | /check_connect | 檢查客戶端是否已連接 | EMPTY |
得到 | /last_qrcode | 檢查二維碼是否有效 | EMPTY |
得到 | /screenshot | 取得螢幕截圖 | EMPTY |
您必須登入才能使用這些功能!
to
可以是<phone Number>@c.us
或<phone Number>-<groupId>@g.us
或<phone Number><groupId>@g.us
您只能使用一種功能發送訊息!
// 傳送簡訊等待客戶端 .sendMessage({to: '[email protected]', // 可以傳遞聯絡人號碼或群組號碼body: 'Hydra-bot 發送的訊息', // 訊息 textoptions: { type: 'sendText', //運輸類型}, }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });//傳送檔案等待客戶端 .sendMessage({to: '[email protected]', // 您可以傳遞聯絡人號碼或群組號碼body: './file.pdf', // 您可以使用目錄或使用 urloptions: { type: ' sendFile', // 傳送類型filename: 'filename', // 將檔案名稱放在這裡}, }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });//傳送檔案audioawait客戶端 .sendMessage({to: '[email protected]', // 您可以傳遞聯絡人號碼或群組號碼body: './file.mp3', // 您可以使用目錄或使用 urloptions: { type: ' sendAudio', // 運輸類型}, }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });//發送音訊檔案base64await客戶端 .sendMessage({to: '[email protected]', // 可以傳遞聯絡人號碼或群組號碼body: base64MP3, // 可以使用目錄或使用urloptions: { type: 'sendAudioBase64', // 運費類型} , }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });// 發送圖像訊息等待客戶端 .sendMessage({to: '[email protected]', // 可以傳遞聯絡人號碼或群組號碼body: './file.jpg', // 可以使用目錄或使用urloptions: { type: ' sendImage' , // 運輸類型title: '圖像文字', // 圖像文字}, }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });//傳送圖片Base64await客戶端 .sendMessage({to: '[email protected]', // 可以傳遞聯絡號碼或群組號碼body: base64IMG, // 可以使用目錄或使用urloptions: { type: 'sendImageFromBase64', // 運費輸入標題: '圖像文字',//圖像文字}, }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });
// 向給定的 chatawait 用戶端發送簡訊 .sendText('[email protected]', 'Hydra-bot 發送的訊息') .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });// 從 pathawait 用戶端傳送文件 .sendFile('[email protected]', './file.pdf', { filename: '檔名' }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });// 發送音訊檔案等待客戶端 .sendAudio('[email protected]', './file.mp3') .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });//發送音訊base64await客戶端 .sendAudioBase64('[email protected]', base64MP3) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });// 發送圖像訊息等待客戶端 .sendImage('[email protected]', './file.jpg', { title: '圖片文字' }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });//傳送圖片base64await客戶端 .sendImageFromBase64('[email protected]', base64IMG, { title: '圖片文字' }) .then((result) => {console.log(result); // 訊息結果 }) .catch((error) => {console.log(error); // 訊息錯誤 });
// 取得裝置資訊await client.getHost();
// 回傳聯絡人清單 const contact = aw