Skip to main content

Quick Start

Deploy the bot to your own server in minutes

Configuration

Configure environment variables and channel settings

Bot Features

Explore all bot capabilities and automation features

Slash Commands

Reference for all available slash commands

What is Effect Discord Bot?

The Effect Discord Bot is a purpose-built community bot for the Effect-TS Discord server. It automates common community tasks, provides AI-powered assistance, and integrates deeply with the Effect ecosystem. The bot is itself built entirely with Effect, making it a real-world demonstration of Effect patterns including structured concurrency, dependency injection via Layer, typed errors, caching, and OpenTelemetry tracing.

Key features

AI Assistance

GPT-powered responses with live access to the Effect repository for accurate, up-to-date answers

Auto Threads

Automatically create threads for messages in configured channels with AI-generated titles

Docs Lookup

Fuzzy-search documentation for any Effect module or function directly in Discord

GitHub Integration

Convert Discord threads into GitHub issues with AI-generated summaries

Thread Summarizer

Export thread conversations as structured markdown summaries

Reminders

Schedule recurring channel reminders using cron expressions in channel topics

Notifications

Let members self-select notification roles via an interactive UI

Playground Links

Generate Effect Playground links from code snippets in messages

Built with Effect

Every feature in this bot uses Effect’s core primitives:
main.ts
import { NodeRuntime } from "@effect/platform-node"
import { Layer } from "effect"
import { AiResponse } from "./AiResponse.ts"
import { AutoThreadsLive } from "./AutoThreads.ts"
import { DocsLookupLive } from "./DocsLookup.ts"
// ... additional features

const MainLive = Layer.mergeAll(
  AiResponse,
  AutoThreadsLive,
  DocsLookupLive,
  IssueifierLive,
  NotificationsLayer,
  PlaygroundLive,
  RemindersLive,
  ReproRequesterLive,
  Summarizer.layer,
).pipe(Layer.provide(TracerLayer("discord-bot")), Layer.provide(LogLevelLive))

NodeRuntime.runMain(Layer.launch(MainLive))

Architecture

How the bot is structured using Effect layers

Effect Patterns

Key Effect patterns used throughout the codebase

Deployment

Run the bot with Docker

Build docs developers (and LLMs) love