Modern WhatsApp bot built with Baileys (ESM), featuring a plugin system, hot reload, sticker support, media processing and a modular architecture.
Zeline is a flexible WhatsApp automation bot designed for quick deployment and easy extension. It combines a plugin-based command system with media handling, sticker creation and live hot reload support for a smoother development experience.
- Modular command architecture for easy feature expansion
- Built-in support for stickers, media processing and automation
- Fast setup with Baileys and ESM support
- Lightweight project structure for customization
Install the following before running Zeline locally:
- Node.js & npm (Download the installer)
- Git
- Terminal app (built-in)
- Node.js & npm (Download the installer or use Homebrew:
brew install node) - Git (or install via Homebrew:
brew install git) - Terminal app (built-in)
- Node.js & npm (Follow the official instructions)
- Git (Follow the official instructions for your distribution)
- Terminal app (built-in)
Verify installation:
node --version
npm --version
git --versionOnce these are installed, you can proceed to clone the repository and follow the installation steps below.
Clone the repository:
git clone https://github.com/itsmekaa/zeline.git
cd zelineInstall dependencies:
npm installCreate or edit the environment file:
BOT = '62xxx'
OWNER = '62xxx'
DATABASE_URL = 'mongodb_url' # leave empty if you want to use localdb.jsonStart the bot:
npm startOr run it with PM2:
pm2 start pm2.config.cjs && pm2 logs zelineThe main code is organized into a few core folders:
| Path | Purpose |
|---|---|
| core | Core bot runtime, handlers, queue logic and executor flow |
| lib | Shared helpers, configuration, schemas, serializers and utilities |
| plugins | Feature modules such as moderation, downloads, AI, tools and group commands |
| media | Prompt and media-related assets used by the bot |
| index.js | Main entry point for launching the bot |
| package.json | Project metadata, scripts and dependencies |
A simple plugin can look like this:
export const run = {
cmd: ['ping'],
category: 'main',
run: async (m, { sock }) => {
await m.reply('pong!!!');
},
};Warning
This project is currently under active development.
Features may change without notice.