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(); getMe.id._serialized; // 号码主机 console.log('主机号码: ', hostNumber); // 发送短信 wait client.sendMessage({ to: hostNumber, // 可以传入联系人号码或群组号码body: "hi i'm Hydra bot", // 消息文本 options: {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); //下载文件 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_降级,-6 = 不活动,-5 = 内容无法上传,-4 = 内容太大,-3 = CONTENT_GONE, -2 = 过期, -1 = 失败, 0 = 时钟, 1 = 已发送, 2 = 已接收, 3 = 已读, 4 = PLAYEDconsole.log('来自消息: ', 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); //下载文件 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