# SHSF Discord Bot Official Discord bot for the SHSF community, built with modularity and extensibility in mind. This bot provides a framework for handling commands, events, startup routines, and web endpoints, allowing for easy addition of new features. ## Features - **Command Handling:** Add commands in `src/commands/` and register them via `src/handlers/registerCommands.ts`. - **Event Listeners:** Handle Discord events in `src/listeners/`, grouped by event type. - **Startup Routines:** Add startup logic in `src/handlers/startup/` and load via `src/lib/loadStartupHandlers.ts`. - **Web Endpoints:** Serve bot-related endpoints from `src/web/` using `src/webserver.ts`. - **Centralized Configuration:** Manage settings in `src/config.ts`. ## Project Structure ``` src/ commands/ # Bot commands (e.g., ping.ts) handlers/ # Command registration & startup routines startup/ # Startup logic (e.g., rotatingActivity.ts) listeners/ # Discord event handlers (e.g., messageCreate/logMessage.ts) lib/ # Shared utilities (e.g., commandRegistry.ts) web/ # Web endpoints (e.g., gitCommit.ts) config.ts # Bot configuration types.ts # Type definitions webserver.ts # Web server entry point index.ts # Bot entry point ``` ## Getting Started 1. **Install dependencies:** ```bash pnpm install ``` 2. **Configure the bot:** Edit `src/config.ts` with your Discord bot token and settings. 3. **Run the bot:** ```bash pnpm start # or node src/index.ts ``` ## Adding Features - **New Command:** Create a file in `src/commands/`, register in `src/handlers/registerCommands.ts`. - **New Event Handler:** Add a handler in the relevant `src/listeners//` folder. - **Startup Routine:** Implement in `src/handlers/startup/`, register via `src/lib/loadStartupHandlers.ts`. - **Web Endpoint:** Add to `src/web/`, served by `src/webserver.ts`. ## Development Notes - Uses [pnpm](https://pnpm.io/) for dependency management. - No tests or linting scripts by default; add as needed in `package.json`. - Modular structure allows easy debugging and targeted development. ## References - [src/index.ts](src/index.ts): Bot entry point - [src/webserver.ts](src/webserver.ts): Web server entry point - [src/handlers/registerCommands.ts](src/handlers/registerCommands.ts): Command registration - [src/lib/commandRegistry.ts](src/lib/commandRegistry.ts): Command registry utility - [src/listeners/messageCreate/logMessage.ts](src/listeners/messageCreate/logMessage.ts): Example event handler --- For questions or improvements, see `.github/copilot-instructions.md`.