This project was developed to help the community that uses whatsapp as a way to implement an API quickly and effectively, for companies and much more! Thank you for being part of this family.
You can use this project in two ways, the first is using Web Services using a set of well-defined operations, the POST, GET, PUT and DELETE methods, the second option is to use the bot in raw form, without using a Web Services.
To maintain quality, we are receiving support! We thank you in advance for the opportunity to develop and maintain this project!
Company | URL | Logo |
---|---|---|
redrive | https://redrive.com.br/ | |
zaplus | https://zaplus.chat/ | |
tabchat | https://tabchat.com.br/ |
Do you have any doubt? Need help? Join our whatsapp group and ask your questions with other people!
Use the stable version:
> npm i --save hydra-bot
or for Nightly releases:
> npm i --save https://github.com/jonalan7/Hydra-bot/releases/download/nightly/hydra-nightly.tgz
Terminal Admin:
> yarn admin
The service will be started on localhost on port 8080
const hydraBot = require('hydra-bot');
(async () => {
// start Web Service
const WS = await hydraBot.initWs();
})();
If you want to work in free mode, using only the bot, dry the necessary information!
const hydraBot = require('hydra-bot');
(async () => {
// start bot service
const webpack = await hydraBot.initServer();
// return to current whatsapp interface
webpack.on('interfaceChange', (change) => {
console.log("interfaceChange: ", change);
});
// return qrcode parameters
webpack.on('qrcode', (qrcode) => {
console.log('qrcode: ', qrcode);
});
// return connection information
webpack.on('connection', async (conn) => {
console.log("Info connection: ", conn);
if (conn) {
// send a text message
await webpack.sendMessage({
to: "[email protected]",
body: "A message sent by hydra-bot",
options: {
type: 'text',
}
}).then((result) => {
console.log(result)
});
}
});
// return receive new messages
webpack.on('newMessage', (newMsg) => {
// when is received
if (!newMsg.isSentByMe) {
// message received!
console.log('NewMessageReceived: ', newMsg);
}
// when is it sent
if (!!newMsg.isSentByMe) {
// message sent
console.log('NewMessageSent: ', newMsg);
}
});
})();
const hydraBot = require('hydra-bot');
hydraBot.initServer(
{
session: "session", // Name of the token to be generated, a folder with all customer information will be created
pathNameToken: "token", // The path and name of the folder where the client tokens will be saved
printQRInTerminal: true, // The QR CODE will be printed on the terminal if true
updatesLog: true, // Logs info updates automatically in terminal
timeAutoClose: 60000, // If you don't read the QR CODE by default 60 seconds, it will automatically close the client's browser to save memory, if you want to disable it, set 0 or false
mkdirFolderToken: '', // Token folder path, only inside the project
puppeteerOptions: {
headless: "false", // Start the project with the browser open or not!
args: [], // Additional arguments to pass to the browser instance. adding any parameter you will replace the default args of the project
executablePath: 'useChrome' // The browser that will be used for the project, you can specify a path, if you don't pass any parameter it will open chromium.
}
}
);
const hydraBot = require('hydra-bot');
hydraBot.initWs(
{
port: '8080',
url: '', // point a URL to receive a callback!
authentication: true, // ask for authentication in routes
pathNameToken: "token", // The path and name of the folder where the client tokens will be saved
printQRInTerminal: true, // The QR CODE will be printed on the terminal if true
updatesLog: true, // Logs info updates automatically in terminal
timeAutoClose: 60000, // If you don't read the QR CODE by default 60 seconds, it will automatically close the client's browser to save memory, if you want to disable it, set 0 or false
mkdirFolderToken: '', // Token folder path, only inside the project
puppeteerOptions: {
headless: "false", // Start the project with the browser open or not!
args: [], // Additional arguments to pass to the browser instance. adding any parameter you will replace the default args of the project
executablePath: 'useChrome' // The browser that will be used for the project, you can specify a path, if you don't pass any parameter it will open chromium.
}
}
);
To start the administration interface use:
> yarn admin
List of commands in the terminal:
Command | Description |
---|---|
/create |
Create user |
/delete |
Delete user |
/selectid |
Show user by id |
/selectname |
Select user by name |
/getall |
List all users |
/deactivate |
Disable user |
/activate |
Activate User |
/changename |
Change username |
/password |
Change user password |
/cls |
Clear screen/terminal |
/help |
List all commands for administration in terminal |
/exit |
Exit manager |
All user wheels have a pattern of Headers
, to be able to access them, to create a administrador (default, username = 'admin', password = 'admin'):
{
"Content-Type" : "application/json",
"admin" : "admin",
"admin_pass" : "admin"
}
Type | Route to browser | Description | Body |
---|---|---|---|
POST | /create_user |
Create user | {"name":"USE","password":"USER PASSWORD"} |
DEL | /delete_user/ID_USE |
Delete user | EMPTY |
GET | /get_user_by_id/ID_USE |
Show user by ID | EMPTY |
GET | /get_all_users |
List all users | EMPTY |
PUT | /deactivate_user |
Disable user | {"id":"USER ID"} |
PUT | /activate_user |
Activate User | {"id":"USER ID"} |
PUT | /change_name |
Change username | {"id":"USER ID","name":"NEW USERNAME"} |
PUT | /change_password |
Change user password | {"id":"USER ID","password":"NEW SECURE PASSWORD"} |
Note: Parameters can be changed during development!
All whatsapp connection wheels have a pattern of Headers
of user (default, username = 'user', password = 'user').
The headers must be parameterized as :
{
"Content-Type" : "application/json",
"user" : "user",
"user_pass" : "user"
}
if you want to receive a callback on a specific url, pass the url parameter in the connect route.
Type | Route to browser | Description | Body |
---|---|---|---|
POST | /connect |
Start connection with Whatsapp | { "url": "http://localhost:8080/webhooktest" } |
POST | /sendtext |
Send a text to a number | { "to": "contact number", "body": "message"} |
You must be logged in to use these functions!
// send text message
await webpack.sendMessage({
to: "[email protected]",
body: "A message sent by hydra-bot",
options: {
type: 'text',
}
}).then((result) => {
console.log(result)
});
Building the hydra-bot is very simple
To build the entire project just run
> npm run build
run a test inside the project
> npm start