nestwhats
Version:
A whatsapp-web.js wrapper for NestJS to create WhatsApp bots
110 lines (83 loc) • 3.4 kB
Markdown
<h1 align="center">
<br>
<img width="35" src="https://github.com/NedcloarBR/NestWhats/blob/master/assets/logo.png?raw=true"> NestWhats
<br>
</h1>
<h3 align=center> A <b><a href="https://wwebjs.dev/">whatsapp-web.js</a></b> wrapper for <b><a href="https://nestjs.com">NestJS</a></b> to create <b><a href="https://www.whatsapp.com/">WhatsApp</a></b> bots</h3>
<p align="center">
<a href="#❓ About">About</a>
•
<a href="⬇️ Installation">Installation</a>
•
<a href="⚙️ Usage">Usage</a>
•
<a href="📝 To-Do">To-Do</a>
•
<a href="#📖 License">License</a>
•
<a href="#🗞️ Credits">Credits</a>
</p>
## ❓ About
NestWhats is a module for NestJS that abstracts methods from whatsapp-web.js to facilitate the creation of bots for WhatsApp. \
whatsapp-web.js is a WhatsApp API client that connects through WhatsApp Web browser app using Puppeteer
> [!IMPORTANT]
> **It is not guaranteed you will not be blocked by using this method. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.**
## ⬇️ Installation
> [!NOTE]
> NodeJS `v20+` is required
```bash
$ npm i nestwhats whatsapp-web.js
$ yarn add nestwhats whatsapp-web.js
$ pnpm add nestwhats whatsapp-web.js
```
## ⚙️ Usage
Once the installation process is complete, we can import the `NestWhatsModule` into the root `AppModule`:
```TypeScript
import { NestWhatsModule } from 'nestwhats';
import { Module } from '@nestjs/common';
import { AppUpdate } from './app.update';
({
imports: [
NestWhatsModule.forRoot({
prefix: "!"
})
],
providers: [AppUpdate]
})
export class AppModule {}
```
Then create `app.update.ts` file and add `On`/`Once` decorators for handling whatsapp-web.js events:
```TypeScript
import { Injectable, Logger } from '@nestjs/common';
import { Context, On, Once, ContextOf } from 'nestwhats';
import { Client, Events } from 'whatsapp-web.js';
()
export class AppUpdate {
private readonly logger = new Logger(AppUpdate.name);
public constructor(private readonly client: Client) {}
("ready")
public onReady(() [client]: ContextOf<'ready'>) {
this.logger.log(`Bot logged in as ${client.info.pushname}`);
}
("message_create")
public onWarn(() [message]: ContextOf<'message_create'>) {
this.logger.log(message);
}
}
```
Whenever you need to handle any event data, use the `Context` decorator.
If you want to fully dive into NestWhats, check out these resources:
- [NestJS](https://nestjs.com) - A progressive framework for creating well-architectured applications.
- [whatsapp-web.js](https://wwebjs.dev/) - A WhatsApp client library for NodeJS that connects through the WhatsApp Web browser app
## 📝 To-Do
- [ ] Docs
- [ ] GH Pages or Wiki
- [ ] JSDoc in code
- [ ] New Providers
## 📖 License
[GPL-3.0 License](https://github.com/NedcloarBR/NestWhats/blob/master/License)
## 🗞️ Credits
- This project is inspired in [Necord](https://necord.org/) - 🤖 A module for creating Discord bots using NestJS, based on Discord.js
> NestWhats is an adaptation of Necord to work with whatsapp-web.js \
> I NedcloarBR am a contributor to Necord
- Want to see your name on this list? - see the [Contribution](https://github.com/NedcloarBR/NestWhats/blob/master/.github/CONTRIBUTING.md) page.