Files
vercel__chat/packages/chat
github-actions[bot] d67c9f4fa8 Version Packages
2026-01-21 18:01:03 +00:00
..
2026-01-21 12:23:59 -05:00
2026-01-21 18:01:03 +00:00
2026-01-21 18:01:03 +00:00
2026-01-02 16:11:31 -08:00
2026-01-02 16:11:31 -08:00

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! }),
});

// Handle @mentions
bot.onNewMention(async (thread) => {
  await thread.subscribe();
  await thread.post(`${emoji.wave} Hello! I'm listening.`);
});

// Handle follow-up messages
bot.onSubscribedMessage(async (thread, message) => {
  await thread.post(`You said: ${message.text}`);
});

Adapters

Package Platform
@chat-adapter/slack Slack
@chat-adapter/teams Microsoft Teams
@chat-adapter/gchat Google Chat

State Adapters

Package Backend
@chat-adapter/state-redis Redis (production)
@chat-adapter/state-ioredis Redis via ioredis
@chat-adapter/state-memory In-memory (dev only)

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