Chat Bots & Bot Frameworks
Slack, Discord, Telegram, WhatsApp, SMS — building bots in TypeScript.
Slack
- ★
@slack/bolt— official Slack app framework; events, slash commands, modals, app home, OAuth. @slack/web-api— lower-level client when you don't need the framework.@slack/socket-mode— for websocket apps that don't need a public URL.- Slack Block Kit Builder — visual builder for message blocks.
Discord
- ★ discord.js — the standard; complete coverage of the Discord API.
- Discord.py (Python) — non-JS alternative.
- Sapphire Framework — opinionated framework on discord.js.
@discordjs/voice— voice channels.
Telegram
- ★ grammY — modern TS-first; the default.
- telegraf — older but still used.
- node-telegram-bot-api — minimal API client.
WhatsApp / SMS
- Twilio SDK — SMS, MMS, WhatsApp Business; the default.
- MessageBird / Bird — alternative.
- Vonage (formerly Nexmo) — alternative.
@whiskeysockets/baileys— unofficial WhatsApp Web library; reverse-engineered, against ToS for production.- WhatsApp Cloud API (Meta) — official; requires Business verification.
Email-style bots
- Inbound email parsing: Postmark Inbound, SendGrid Inbound Parse, Resend (recently added inbound), CloudMailin, ImprovMX.
- See Email for sending.
SMS specifically
- Twilio Messaging — gold standard.
- Vonage, Plivo, Sinch — alternatives.
- AWS SNS — cheap, less ergonomic.
- MessageBird/Bird — global focus.
Voice / IVR
- Twilio Voice / Programmable Voice, SignalWire (Twilio fork; cheaper), Daily / LiveKit (see Realtime Video).
- AT&T
<voice>clones — niche.
Microsoft Teams
@microsoft/teamsfx— Teams Toolkit SDK.- Bot Framework SDK (Microsoft) — for cross-Microsoft surfaces.
Patterns to know
- Idempotent webhooks — bots receive the same event twice; handle with a dedupe key.
- Rate limits — every platform has one; back off + queue.
- Slash command "ack within 3 seconds" — defer long work, post a follow-up message.
- OAuth flow per workspace / server — store tokens per install; rotate on re-install.
- Rich messages — Slack Block Kit, Discord embeds, Telegram inline keyboards. Don't send walls of text.
Where to host bots
- Cloudflare Workers — perfect for slash commands and webhooks. No cold start.
- Vercel — fine for webhook handlers; less great for long-running.
- Fly.io / Railway / Render — when you need a long-lived socket connection (Slack Socket Mode, Discord gateway).
- Inngest / Trigger.dev — for follow-up async work; see Workflow Engines.
Pick this if…
- Slack:
@slack/bolt. - Discord: discord.js.
- Telegram: grammY.
- SMS / WhatsApp: Twilio.
- Long-lived connections (Discord gateway): host on Fly / Railway, not serverless.
- Slack but no public URL needed: Socket Mode.