Hydra bot
v1.0.33
이 프로젝트는 회사 등을 위해 API를 빠르고 효과적으로 구현하는 방법으로 whatsapp을 사용하는 커뮤니티를 돕기 위해 개발되었습니다! 이 가족의 일원이 되어주셔서 감사합니다.
이 프로젝트를 두 가지 방법으로 사용할 수 있습니다. 첫 번째는 잘 정의된 작업 집합인 POST, GET, PUT 및 DELETE 메서드를 사용하여 웹 서비스를 사용하는 것이고, 두 번째 옵션은 웹을 사용하지 않고 원시 형식으로 봇을 사용하는 것입니다. 서비스.
의심이 있으신가요? 도움이 필요하신가요? WhatsApp 그룹에 가입하여 다른 사람들에게 질문을 해보세요!
안정적인 버전을 사용하세요.
> npm i --save hydra-bot
또는 Nightly 릴리스의 경우:
> npm i --save https://github.com/jonalan7/Hydra-bot/releases/download/nightly/hydra-nightly.tgz
터미널 관리자:
> 원사 관리자
원사 Ubuntu를 설치합니다.
> 컬 -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 업데이트 && sudo apt install 원사> 원사
서비스는 포트 8080의 localhost에서 시작됩니다.
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', (변경) => {console.log('interfaceChange: ', 변경); }); // qrcode 매개변수를 반환합니다. 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(); getMe.id._serialized; // 호스트 번호 console.log('Host Number: ',hostNumber); //문자 메시지 보내기 wait client.sendMessage({ to:hostNumber, //연락처 번호 또는 그룹 번호를 전달할 수 있습니다. body: "안녕하세요 저는 hydra 봇입니다", // 메시지 텍스트 옵션: {type: 'sendText', // 배송 유형 },}).then((result) => { console.log(result); // 메시지 result}).catch((error) => { console.log(error); // 메시지 오류});} }); // 새 메시지 수신을 반환합니다. ev.on('newMessage', async (newMsg) => {// 수신 시if (!newMsg.result.fromMe) { // 메시지 수신됨! console.log('NewMessageReceived: ', newMsg.result); // dowload files 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 = CLOCK, 1 = SENT, 2 = RECEIVED, 3 = READ, 4 = PLAYEDconsole.log('From Message: ', event.result.from); messageconsole.log('메시지로: ', 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); // dowload files 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인 경우 QR CODE가 터미널에 인쇄됩니다. 업데이트 로그: true, // 터미널에 정보 업데이트를 자동으로 기록합니다. timeAutoClose: 60000, // 기본적으로 60초 동안 QR CODE를 읽지 않으면 메모리 절약을 위해 클라이언트 브라우저가 자동으로 닫힙니다. 비활성화하려면 0 또는 false로 설정하세요. mkdirFolderToken: '', // 토큰 폴더 경로, 프로젝트 내부에서만 가능 puppeteerOptions: {headless: true, // 브라우저를 열거나 열지 않은 상태에서 프로젝트를 시작합니다!args: [], // 브라우저 인스턴스에 전달할 추가 인수입니다. 매개변수를 추가하면 프로젝트executablePath의 기본 인수가 대체됩니다. 'useChrome', // 프로젝트에 사용될 브라우저, 경로를 지정할 수 있습니다. 매개변수를 전달하지 않으면 설치된 브라우저가 열립니다. },});
const hydraBot = require('hydra-bot');hydraBot.initWs({ 호스트서버: 'http://localhost', 포트: '8080', url: '', // 콜백을 수신할 URL을 지정하세요! 인증: true, // 경로에서 인증을 요청합니다. pathNameToken: 'token', // 클라이언트 토큰이 저장될 폴더의 경로와 이름 printQRInTerminal: true, // true인 경우 QR CODE가 터미널에 인쇄됩니다. 업데이트 로그: true, // 터미널에 정보 업데이트를 자동으로 기록합니다. timeAutoClose: 60000, // 기본적으로 60초 동안 QR CODE를 읽지 않으면 메모리 절약을 위해 클라이언트 브라우저가 자동으로 닫힙니다. 비활성화하려면 0 또는 false로 설정하세요. mkdirFolderToken: '', // 토큰 폴더 경로, 프로젝트 내부에서만 가능 puppeteerOptions: {headless: true, // 브라우저를 열거나 열지 않은 상태에서 프로젝트를 시작합니다!args: [], // 브라우저 인스턴스에 전달할 추가 인수입니다. 매개변수를 추가하면 프로젝트executablePath의 기본 인수가 대체됩니다. 'useChrome', // 프로젝트에 사용될 브라우저, 경로를 지정할 수 있습니다. 매개변수를 전달하지 않으면 설치된 브라우저가 열립니다. },});
관리 인터페이스를 시작하려면 다음을 사용하십시오.
> 원사 관리자
터미널의 명령 목록:
명령 | 설명 |
---|---|
/create | 사용자 생성 |
/delete | 사용자 삭제 |
/selectid | ID별로 사용자 표시 |
/selectname | 이름으로 사용자 선택 |
/getall | 모든 사용자 나열 |
/deactivate | 사용자 비활성화 |
/activate | 사용자 활성화 |
/changename | 사용자 이름 변경 |
/password | 사용자 비밀번호 변경 |
/cls | 화면/단말기 지우기 |
/help | 터미널에서 관리를 위한 모든 명령 나열 |
/exit | 출구관리자 |
REST API
사용하는 명령어 목록Headers
패턴이 있어 액세스하고 관리자를 생성할 수 있습니다.{ "콘텐츠 유형": "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
패턴이 있습니다(기본값, 사용자 이름 = '사용자', 비밀번호 = '사용자').헤더는 다음과 같이 매개변수화되어야 합니다.
{ "콘텐츠 유형": "application/json", "user": "user", "user_pass": "user"}
특정 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 | QR 코드가 활성화되어 있는지 확인하세요 | EMPTY |
얻다 | /screenshot | 스크린샷 받기 | EMPTY |
이 기능을 사용하려면 로그인이 필요합니다!
<phone Number>@c.us
또는 <phone Number>-<groupId>@g.us
또는 <phone Number><groupId>@g.us
일 수 to
.하나의 기능으로만 메시지를 보낼 수 있어요!
// 클라이언트를 기다리며 문자 메시지를 보냅니다. .sendMessage({to: '[email protected]', // 연락처 또는 그룹 번호를 전달할 수 있습니다.body: 'hydra-bot이 보낸 메시지', // 메시지 텍스트 옵션: { 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); // 메시지 오류 });// 오디오 대기 클라이언트 파일 보내기 .sendMessage({to: '[email protected]', // 연락처 또는 그룹 번호를 전달할 수 있습니다.body: './file.mp3', // 디렉터리를 사용하거나 URL을 사용할 수 있습니다: { 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', // 배송 유형 캡션: '이미지 텍스트', // 이미지 텍스트}, }) .then((result) => {console.log(result); // 메시지 결과 }) .catch((error) => {console.log(error); // 메시지 오류 });// 이미지 보내기 Base64wait 클라이언트 .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', { 파일 이름: '파일 이름' }) .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', { 캡션: '이미지 텍스트' }) .then((result) => {console.log(result); // 메시지 결과 }) .catch((error) => {console.log(error); // 메시지 오류 });// 클라이언트를 기다리는 이미지 base64 보내기 .sendImageFromBase64('[email protected]', base64IMG, { 캡션: '이미지 텍스트' }) .then((result) => {console.log(result); // 메시지 결과 }) .catch((error) => {console.log(error); // 메시지 오류 });
// 장치 정보 가져오기await client.getHost();
// 연락처 목록을 반환합니다.const contact = aw