JSPM

  • Created
  • Published
  • Downloads 243172
  • Score
    100M100P100Q168042F
  • License MIT

Unified chat abstraction for Slack, Teams, Google Chat, and Discord

Package Exports

  • chat
  • chat/jsx-dev-runtime
  • chat/jsx-runtime

Readme

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