Skip to content
⚡️ Make Bots Your Way. Fast and Flexible.
Branch: master
Clone or download


npm npm@next CircleCI coverage License: MIT PRs Welcome join chat

  • Flexible - Declare handlers as any JavaScript function.

  • Modern - Source written with ES6/ES7 syntax and great async await supports.

  • Modular - Use session stores, server framework adapters and platform connectors with same interface.

  • Learn Once, Write Anywhere - Handle multiple platforms with consistent development experience.

Bottender is built on top of Messaging APIs.


You can install Bottender globally to use the cli tools:

npm install -g bottender

Or install it locally to use it programmatically:

npm install bottender

Installation may fail on Windows during compilation of the native dependencies with node-gyp. To solve this problem, you can install windows-build-tools or check node-gyp documentation.


You can find the Bottender documentation on the website.


join chat

You can discuss anything about Bottender or chatbot development in our Discord Server. Join now!


We have a bunch of examples in the examples folder. Here is the first one to get you started:

const { ConsoleBot } = require('bottender');

const bot = new ConsoleBot();

bot.onEvent(async context => {
  await context.sendText('Hello World');


This will create and run a bot which always reply "Hello World" in the console.

You'll notice that there is an async function to be passed to the onEvent method, we call it handler. You can put your bot logic in there.

Notable Features


  • Messenger Profile Sync
  • Attachment Upload
  • Handover Protocol
  • Targeting Broadcast Messages
  • Built-in NLP
  • Multiple Pages


  • Reply, Push, Multicast
  • Imagemap
  • Rich Menu
  • Room, Group Chat
  • Beacon


  • Channel Chat
  • Interactive Message


  • Webhook, Long Polling
  • Update, Delete Messages
  • Keyboard
  • Group Chat
  • Inline Query
  • Message Live Location
  • Payment


  • Subscribed, Unsubscribed Event
  • Delivered, Seen Event


Introduction Video


Pull Requests and issue reports are welcome. You can follow steps below to submit your pull requests:

Fork, then clone the repo:

git clone

Install the dependencies:

cd bottender

Make sure the tests pass (including eslint, flow checks and jest tests):

yarn test

Make your changes and tests, and make sure the tests pass.


MIT © Yoctol

You can’t perform that action at this time.