Welcome to the VAIT Discord Bot documentation, organised following the Diataxis framework.
- Build Your First Slash Command — Create a simple command from scratch
- Add a Database-Backed Feature — Build a feature with Drizzle and PostgreSQL
- Test Your Command — Write tests with Vitest, testcontainers, and MSW
- Add Autocomplete to a Slash Command — Dynamic suggestions as users type
- Fetch from an External API — HTTP calls, deferred replies, and error handling
- Build a Scheduled Background Task — Standalone scripts that run on a schedule
- Restrict a Command to Admins — Permission checks and access control
- Getting Started — Invite the bot and learn the basics
- Using Bot Commands — Walkthrough of key command categories
- Server Admin Guide — Set up and manage admin features
- Quick Start — Set up local development
- Development Workflow — Branching, commits, PRs, and code style
- Deploy Commands — Deploy slash commands to Discord
- Production Testing — Test the production Docker build
- Contributing — How to contribute to the project
- Bot Commands — All slash and context menu commands
- pnpm Scripts — Available development scripts
- Project Structure — Directory layout and conventions
- Database Schema — Drizzle schema and relationships
- Environment Variables — Configuration reference
- Command Interfaces — SlashCommand, Subcommand, and ContextMenuCommand API
- Testing Utilities — Test fixtures, seed helpers, and mock infrastructure
- Error Handling — oxide.ts Result types, logging, and Discord error responses
- Telemetry — OTel tracer utilities, span lifecycle, attribute namespaces, and sampling
- Architecture — Design decisions and data flow
- Bot Commands Design — Command categories and patterns
- Testing Strategy — Why testcontainers, isolation patterns, and tooling choices