explaingit

howdyai/botkit

11,579TypeScriptAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

An open-source TypeScript library for building chat bots that work across Slack, Facebook Messenger, Google Hangouts, Webex Teams, and Twilio SMS from a single codebase, using swappable platform adapters.

Mindmap

mindmap
  root((botkit))
    What it does
      Multi platform bots
      Conversation flows
      Swappable adapters
    Tech stack
      TypeScript
      Node js
      Bot Framework
      Lerna monorepo
    Use cases
      Slack bots
      Messenger bots
      SMS automation
    Audience
      Bot developers
      Node js devs
      Enterprise teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a Slack bot that handles customer support questions and deploy it to multiple messaging platforms without rewriting the core logic.

USE CASE 2

Create a Facebook Messenger bot with branching conversation flows using Botkit's conversation API.

USE CASE 3

Scaffold a new bot project in seconds using the Yeoman generator, then swap adapters to target a different platform.

Tech stack

TypeScriptNode.jsMicrosoft Bot FrameworkLernaYeoman

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Lerna to link monorepo packages and platform-specific API credentials for each messaging service you connect.

MIT license, use, copy, modify, and distribute freely in any project, including commercial ones, with attribution.

In plain English

Botkit is an open-source TypeScript library for building chat bots and conversational apps. It gives developers a consistent way to write bot logic once and connect it to multiple messaging platforms: Slack, Facebook Messenger, Google Hangouts, Webex Teams, Twilio SMS, or a custom web chat interface. Each platform is handled by a separate adapter package, so you swap the adapter to change where your bot runs without rewriting the core conversation logic. The library is part of the Microsoft Bot Framework, which is a broader set of tools for building bots and connecting them to the Azure Bot Service. Botkit sits on top of the Bot Framework SDK and extends it with a simpler API for defining conversation flows. This repository is a monorepo, meaning it contains several separate packages in one place. The core Botkit library is in one package. The platform adapters are separate packages (one per platform). There is also a Yeoman generator that scaffolds a new Botkit project for you, and a plugin for connecting to Botkit CMS (a content management system for managing bot scripts without code changes). To build the project locally, you install a tool called Lerna that manages the links between the packages inside the monorepo. You then run a build step that compiles the TypeScript source into JavaScript. The individual package READMEs and a documentation folder inside the repo cover how to configure each adapter, how to write conversation handlers, and how to deploy a bot. If you are looking to build a bot that needs to work across several chat platforms from a single codebase, Botkit provides that abstraction. It is released under the MIT license.

Copy-paste prompts

Prompt 1
Using Botkit, write a Slack bot that listens for messages containing the word 'help' and replies with a list of available commands.
Prompt 2
How do I switch my Botkit bot from Slack to Facebook Messenger? Show me which adapter package to install and how to update the configuration.
Prompt 3
I want to build a Botkit bot with a web chat widget on my website. Which adapter do I use and how do I embed the chat interface?
Prompt 4
Write a Botkit conversation flow that asks a user their name, then their email, then confirms both before saving.
Open on GitHub → Explain another repo

← howdyai on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.