Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/briuor/wbm
wbm is an unofficial API to send bulk messages in whatsapp.
https://github.com/briuor/wbm
bulk-messages bulk-messages-api message-sender phone-number send-message send-message-api send-messages-api wbm whatsapp whatsapp-api whatsapp-bulk-message whatsapp-bulk-messages whatsapp-bulk-sender whatsapp-library whatsapp-message-sender whatsapp-messages whatsapp-sender whatsapp-web
Last synced: 44 minutes ago
JSON representation
wbm is an unofficial API to send bulk messages in whatsapp.
- Host: GitHub
- URL: https://github.com/briuor/wbm
- Owner: Briuor
- License: mit
- Created: 2020-02-05T23:28:11.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-26T03:43:04.000Z (over 2 years ago)
- Last Synced: 2024-12-22T11:08:43.692Z (44 minutes ago)
- Topics: bulk-messages, bulk-messages-api, message-sender, phone-number, send-message, send-message-api, send-messages-api, wbm, whatsapp, whatsapp-api, whatsapp-bulk-message, whatsapp-bulk-messages, whatsapp-bulk-sender, whatsapp-library, whatsapp-message-sender, whatsapp-messages, whatsapp-sender, whatsapp-web
- Language: JavaScript
- Homepage:
- Size: 186 KB
- Stars: 205
- Watchers: 10
- Forks: 65
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![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.
## 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.
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**
Object containing optional parameters as attribute.
Type: `object`
* **showBrowser**
Show browser running the script.
Default: `false`
Type: `boolean`
* **qrCodeData**
Instead of generate the QR Code, returns the data used to generate the QR Code as promise.
Default: `false`
Type: `boolean`
* **session**
Keep user session, so the user must scan the QR Code once.
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.
Default: `true`
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**
Array of phone numbers: ['5535988841854', ...].
Or
Array of contacts: [{phone: '5535988841854', name: 'Will', group: 'partner', age: 22', any: 'anything', ...}, ...]
Type: `array`- **message**
Message to send to every phone number.
Text inside curly braces like {{attribute}} will be replaced by the contact object respective attribute.
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**
Phone number. Example '5535988841854'.
Type: `string`
Or
Contact object. Example: {phone: '5535988841854', name: 'Will', group: 'partner'}
Type: `object`- **message**
Message to send to phone number.
Text inside curly braces like {{attribute}} will be replaced by the contact object respective attribute.
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/)