UNPKG

wbm

Version:

wbm is an API to send bulk messages in whatsapp.

175 lines (143 loc) 5.23 kB
[![npm version](https://img.shields.io/npm/v/wbm.svg?color=%2378e08f)](https://www.npmjs.com/package/wbm) # wbm > wbm is an **unofficial** API to send bulk messages in whatsapp. <p align="center"> <img style="border-radius: 5px" src="https://raw.githubusercontent.com/Briuor/wbm/master/assets/demo.gif"> </p> ## Note **wbm** is an **unofficial** solution. It's not recommended using **wbm** in your company or for marketing purpose. ## Installation ```bash > npm install wbm ``` ## Usage **At the beginning it will display a QR Code on terminal, just scan it using whatsapp app.<br /> Your session will be remembered, there is no need to authenticate everytime.** ### Send same message to every contact ```javascript const wbm = require('wbm'); wbm.start().then(async () => { const phones = ['5535988841854', '35988841854', '5535988841854']; const message = 'Good Morning.'; await wbm.send(phones, message); await wbm.end(); }).catch(err => console.log(err)); ``` ### Send custom message to every contact ```javascript const wbm = require('wbm'); wbm.start().then(async () => { const contacts = [ { phone: '5535988841854', name: 'Bruno', age: 21 }, { phone: '5535988841854', name: 'Will', age: 33 } ]; const message = 'Hi {{name}}, your age is {{age}}'; // Hi Bruno, your age is 21 // Hi Will, your age is 33 await wbm.send(contacts, message); await wbm.end(); }).catch(err => console.log(err)); ``` ### Send custom messages using YOUR OWN RULE ```javascript const wbm = require('wbm'); wbm.start().then(async () => { const contacts = [ { phone: '5535988841854', name: 'Bruno', group: 'friend' }, { phone: '5535988841854', name: 'Will', group: 'customer' } ]; for (contact of contacts) { let message = 'hi'; if(contact.group === 'customer') { message = 'Good morning ' + contact.name; } else if(contact.group === 'friend') { message = 'Hey ' + contact.name + '. Wassup?'; } await wbm.sendTo(contact.phone, message); } await wbm.end(); }).catch(err => console.log(err)); ``` ## API ### start(options) * **options**<br /> Object containing optional parameters as attribute.<br /> Type: `object`<br /> * **showBrowser**<br /> Show browser running the script.<br /> Default: `false`<br /> Type: `boolean`<br /> * **qrCodeData**<br /> Instead of generate the QR Code, returns the data used to generate the QR Code as promise.<br /> Default: `false`<br /> Type: `boolean`<br /> * **session**<br /> Keep user session, so the user must scan the QR Code once.<br /> If you already is authenticated and **wbm** is asking for QR Code, please run using **session: false** once to reset your session. Then you use **session: true** again.<br /> Default: `true`<br /> Type: `boolean` ```javascript // It will open a browser, return the QR code data as promise and not keep user session wbm.start({showBrowser: true, qrCodeData: true, session: false}) .then(async qrCodeData => { console.log(qrCodeData); // show data used to generate QR Code await wbm.waitQRCode(); // waitQRCode() is necessary when qrCodeData is true // ... await wbm.end(); } ).catch(err => { console.log(err); }); ``` ### send(phoneOrContacts, message) Send message to every phone number. - **phoneOrContacts**<br /> Array of phone numbers: ['5535988841854', ...].<br /> Or <br /> Array of contacts: [{phone: '5535988841854', name: 'Will', group: 'partner', age: 22', any: 'anything', ...}, ...]<br /> Type: `array` - **message**<br /> Message to send to every phone number.<br /> Text inside curly braces like {{attribute}} will be replaced by the contact object respective attribute.<br /> Type: `string` ```javascript wbm.start().then(async () => { const contacts = [ {phone: '5535988841854', name: 'Bruno'}, {phone: '5535988841854', name: 'Will'} ]; await wbm.send(contacts, 'Hey {{name}}'); // Hey Bruno // Hey Will await wbm.send(['5535988841854', '5535988841854'], 'Hey man'); // Hey man // Hey man await wbm.end(); }).catch(err => { console.log(err); }); ``` ### sendTo(phoneOrContact, message) Send message to a single phone number. - **phoneOrContact**<br /> Phone number. Example '5535988841854'.<br /> Type: `string`<br /> Or Contact object. Example: {phone: '5535988841854', name: 'Will', group: 'partner'}<br /> Type: `object` - **message**<br /> Message to send to phone number.<br /> Text inside curly braces like {{attribute}} will be replaced by the contact object respective attribute.<br /> Type: `string` ```javascript wbm.start().then(async () => { await wbm.sendTo({phone: '5535988841854', name: 'Bruno'}, 'Hey {{name}}'); // Hey Bruno await wbm.sendTo('5535988841854', 'Hey man'); // Hey man await wbm.end(); }).catch(err => { console.log(err); }); ``` ### end() This method must be used at the end of wbm.start() to finish the browser. ## Contributing Feel free to create pull requests. For major changes, please open an issue first to discuss what you would like to change. ## License [MIT](https://choosealicense.com/licenses/mit/)