Whatsbotcord.js
WhatsBotCord is a lightweight, TypeScript-based library for building WhatsApp bots with a Discord-inspired command system (e.g., !yourcommand, @everyone, and more). Built as a wrapper around Baileys.js, it abstracts complex Baileys.js internals, providing an intuitive, type-safe interface for managing WhatsApp groups and individual chats. Designed from developers to developers to create custom bots with ease. Want to know what's new? Check out the latest releases for documentation and usage examples.
Features
- Discord-Inspired Command System: Create commands (e.g., !hello) with a simple, familiar syntax inspired by Discord bots.
- TypeScript Support: Fully typed with TypeScript for robust development and autocompletion.
- Simplified Baileys Wrapper: Abstracts complex Baileys internals, making it easy to manage groups, individual senders, and message handling.
- Group and Individual Messaging: Seamlessly interact with WhatsApp groups and individual chats.
- Extensible Architecture: Modular design for adding custom commands and functionality.
- Lightweight and Performant: Optimized for speed and efficiency if using Bun.js (optional).
Importing support
This library works with:
- ESM Modules (import and export)
- CJS CommonJs (const & require)
Installation
npm install whatsbotcordor
bun i whatsbotcord- WhatsApp Account: You NEED an active WhatsApp account on a mobile device to scan a QR code for Web Device Login (not an official WhatsApp Business API).
Getting started
Import the library and you can use this minimal code to get started with your first command:
Javascript
import Whatsbotcord from "whatsbotcord";
import { CreateCommand } from "whatsbotcord/helpers";
const bot = new Whatsbotcord({
commandPrefix: "!",
tagPrefix: "@",
});
const PingCommand = CreateCommand(
"ping",
async function (ctx, api, args) {
await ctx.SendText("pong!");
}, {
aliases: ["p"],
}
);
bot.Commands.Add(PingCommand);
bot.Start();Typescript
import Whatsbotcord from "whatsbotcord";
import { type AdditionalAPI, type CommandArgs, type IChatContext, type ICommand } from "whatsbotcord/types";
const bot = new Whatsbotcord({
commandPrefix: "!",
tagPrefix: "@",
});
class PingCommand implements ICommand {
name: string = "ping";
aliases?: string[] = ["p"];
public async run(ctx: IChatContext, api: AdditionalAPI, args: CommandArgs): Promise<void> {
await ctx.SendText("pong! 🏓");
}
}
bot.Commands.Add(new PingCommand());
bot.Start();Want to know more?, check the official documentation site
Acknowledgment
Thanks to the awesome library Baileys.js to make possible to use whatsapp web for automation purposes. Huge congrats for them, without it, this proyect wouldn't even be possible.
License
MIT License
Copyright (c) 2025 KristanLaimon
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.