chat
v4.23.0
Published
Unified chat abstraction for Slack, Teams, Google Chat, and Discord
Readme
chat
Core SDK for building multi-platform chat bots. Provides the Chat class, event handlers, JSX card runtime, emoji helpers, and type-safe message formatting.
Installation
npm install chatUsage
import { Chat } 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! }),
dedupeTtlMs: 600_000, // 10 minutes (default: 5 min)
});
bot.onNewMention(async (thread) => {
await thread.subscribe();
await thread.post("Hello! I'm listening to this thread.");
});
bot.onSubscribedMessage(async (thread, message) => {
await thread.post(`You said: ${message.text}`);
});Tip: PostgreSQL and ioredis adapters are also available for production. See State Adapters for all options.
Configuration
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| userName | string | required | Default bot username across all adapters |
| adapters | Record<string, Adapter> | required | Map of adapter name to adapter instance |
| state | StateAdapter | required | State adapter for subscriptions, locking, and dedup |
| logger | Logger \| LogLevel | "info" | Logger instance or log level ("silent" to disable) |
| streamingUpdateIntervalMs | number | 500 | Update interval for fallback streaming (post + edit) in ms |
| dedupeTtlMs | number | 300000 | TTL for message deduplication entries in ms. Increase if webhook cold starts cause platform retries (e.g., Slack's http_timeout retry) that arrive after the default window |
AI coding agent support
If you use an AI coding agent like Claude Code, you can teach it about Chat SDK:
npx skills add vercel/chatDocumentation
Full documentation is available at chat-sdk.dev/docs.
- Usage — event handlers, threads, messages, channels
- Chat API — full
Chatclass reference - Cards — JSX-based interactive cards
- Streaming — AI SDK integration
- Emoji — cross-platform emoji helpers
License
MIT
