A simple WhatsApp bot built on top of Baileys.
- Event-driven architecture for handling WhatsApp events like
ready
,message
,qr
, and more. - Send and receive messages with ease.
- Group management: join, leave, and fetch group metadata.
- Automatic reconnection with retry logic.
- Customizable options for session management, logging, and device configuration.
You can install fiwa using your preferred package manager, but I recommend using Bun:
bun i fiwa
Here is a basic example of how to use the library:
import { FiWhatsAppClient } from "fiwa";
const client = new FiWhatsAppClient({
phoneNumber: "1234567890", // Optional: for pairing code
maxRetries: 5, // Optional: retry attempts for reconnection
});
client.on("qr", (qr) => {
console.log("Scan this QR code:", qr);
});
client.on("ready", () => {
console.log("Client is ready");
});
client.on("message", (message) => {
const jid = message.key.remoteJid;
client.sendText(jid!, "Hello world!");
});
client.start();
fiwa uses the file system by default to store authentication state. However, fiwa now supports using MongoDB to store authentication state. This is useful for scenarios where you want to persist session data in a NoSQL database instead of the file system.
To use MongoDB for session state, provide the mongodb
option when creating the FiWhatsAppClient
instance:
const client = new FiWhatsAppClient({
mongodb: {
url: "<your-mongodb-url>",
databaseName: "<your-database-name>", // Optional, defaults to "fiwa"
collectionName: "<your-collection-name>", // Optional, defaults to "fiwa_auth_state"
},
});
import { FiWhatsAppClient } from "fiwa";
const client = new FiWhatsAppClient({
mongodb: {
url: "mongodb+srv://...",
},
});
client.on("ready", () => {
console.log("Client is ready");
});
client.start();
When using MongoDB, the library will automatically handle storing and retrieving authentication credentials and keys from the specified collection.
new FiWhatsAppClient(options?: FiWhatsAppOptions);
options
(optional):logPath
(string): Path to the log file.sessionDir
(string): Directory for session data.maxRetries
(number): Maximum retry attempts for reconnection.browser
(string): Browser type (e.g.,macOS
,Windows
).device
(string): Device name.phoneNumber
(string): Phone number for pairing.
start(): Promise<void>
: Starts the WhatsApp client.disconnect(): Promise<void>
: Disconnects the client.sendText(to: string, text: string): Promise<void>
: Sends a text message.getGroupMetadata(groupId: string): Promise<any>
: Fetches metadata for a group.joinGroup(inviteCode: string): Promise<void>
: Joins a group using an invite code.leaveGroup(groupId: string): Promise<void>
: Leaves a group.
ready
: Emitted when the client is ready.message
: Emitted when a new message is received.qr
: Emitted when a QR code is generated.pairingCode
: Emitted when a pairing code is generated.reconnect
: Emitted when the client reconnects.logout
: Emitted when the client logs out.error
: Emitted when an error occurs.
See CONTRIBUTING.md for details on how to contribute to this project.
This project is licensed under the MIT License. See the LICENSE file for details.
This project was created using bun init
in bun v1.2.9. Bun is a fast all-in-one JavaScript runtime.