chat
A unified SDK for building chat bots across Slack, Microsoft Teams, and Google Chat.
Installation
npm install chat
Quick Start
import { Chat, emoji } from "chat";
import { createSlackAdapter } from "@chat-adapter/slack";
import { createRedisState } from "@chat-adapter/state-redis";
const bot = new Chat({
userName: "mybot",
adapters: {
slack: createSlackAdapter({
botToken: process.env.SLACK_BOT_TOKEN!,
signingSecret: process.env.SLACK_SIGNING_SECRET!,
}),
},
state: createRedisState({ url: process.env.REDIS_URL! }),
});
bot.onNewMention(async (thread) => {
await thread.subscribe();
await thread.post(`${emoji.wave} Hello! I'm listening.`);
});
bot.onSubscribedMessage(async (thread, message) => {
await thread.post(`You said: ${message.text}`);
});
Adapters
State Adapters
Features
- Multi-platform: Write once, deploy to Slack, Teams, and Google Chat
- Thread subscriptions: Follow conversations after @mentions
- Rich cards: JSX-based cards that convert to Block Kit, Adaptive Cards, etc.
- Action callbacks: Handle button clicks across platforms
- Reactions: Type-safe emoji with cross-platform normalization
- File uploads: Send files with messages
- Direct messages: Initiate DMs programmatically
- Serverless-ready: Pluggable state backends for distributed deployments
Documentation
See the main repository for full documentation.
License
MIT