diff --git a/replit.md b/replit.md index 9ac5238..31b4440 100644 --- a/replit.md +++ b/replit.md @@ -95,3 +95,147 @@ The application runs on port 5000 using the Flask development server. The `attached_assets` folder contains two example AeThex Discord bots: - **Bot 1**: Basic version with verify, profile, set-realm, unlink, verify-role commands - **Bot 2**: Extended version with additional help, stats, leaderboard, post commands and feed sync + +--- + +# Aethex Sentinel Bot + +Enterprise-grade Discord bot for managing a federation of 5 servers. + +## Overview + +Aethex Sentinel is a TypeScript-based Discord bot built with the Sapphire framework. It provides: + +- **Federation Sync**: Cross-server role synchronization +- **Sentinel Security**: Anti-nuke protection with heat-based threat detection +- **Commerce Module**: Ticket system with database persistence +- **Dashboard Updates**: Network status updates in voice channels + +## Tech Stack + +- **Runtime**: Node.js 20 + TypeScript +- **Framework**: @sapphire/framework +- **Database**: PostgreSQL (via Prisma ORM) +- **Health Endpoint**: HTTP server on port 8044 + +## Project Structure + +``` +sentinel-bot/ +├── src/ +│ ├── core/ +│ │ ├── client.ts - SapphireClient with Prisma +│ │ ├── config.ts - Environment configuration +│ │ └── health.ts - Health endpoint server +│ ├── modules/ +│ │ ├── federation/FederationManager.ts - Cross-server role sync +│ │ ├── security/HeatSystem.ts - Anti-nuke protection +│ │ ├── commerce/TicketManager.ts - Ticket system +│ │ └── dashboard/StatusUpdater.ts - Network status updates +│ ├── listeners/ +│ │ ├── ready.ts - Bot ready handler +│ │ ├── guildMemberUpdate.ts - Role sync listener +│ │ ├── auditLogCreate.ts - Security monitor +│ │ └── interactionCreate.ts - Button handler +│ ├── commands/ +│ │ ├── federation.ts - /federation command +│ │ ├── sentinel.ts - /sentinel command +│ │ ├── ticket.ts - /ticket command +│ │ └── status.ts - /status command +│ └── index.ts - Entry point +├── prisma/ +│ └── schema.prisma - Database models +├── package.json +├── tsconfig.json +└── .env.example +``` + +## Database Models (Prisma) + +- **User**: Discord user profiles with federation membership +- **HeatEvent**: Security events for threat detection +- **Ticket**: Support tickets with transcripts +- **GuildConfig**: Per-guild configuration +- **RoleMapping**: Cross-server role sync mappings + +## Commands + +| Command | Description | +|---------|-------------| +| `/federation link` | Link a role across servers | +| `/federation unlink` | Remove a role mapping | +| `/federation list` | Show all role mappings | +| `/sentinel heat` | View heat level of a user | +| `/sentinel lockdown` | Enable/disable lockdown mode | +| `/sentinel config` | Configure security thresholds | +| `/ticket create` | Create a support ticket | +| `/ticket close` | Close a ticket with transcript | +| `/status` | View network status | + +## Health Endpoint + +The bot exposes a health endpoint compatible with Bot Master dashboard: + +**GET /health** (port 8044) +```json +{ + "status": "online", + "guilds": 5, + "commands": 12, + "uptime": 3600, + "timestamp": "2025-12-07T12:00:00.000Z", + "bot": { + "tag": "Aethex Sentinel#1234", + "id": "123456789" + } +} +``` + +**GET /stats** (port 8044) +```json +{ + "guilds": [ + { "id": "...", "name": "...", "memberCount": 100 } + ], + "totalMembers": 500, + "uptime": 3600 +} +``` + +## Environment Variables + +Required secrets (add in Replit Secrets tab): +- `DISCORD_TOKEN` - Discord bot token +- `DATABASE_URL` - PostgreSQL connection string + +Optional configuration: +- `HUB_GUILD_ID` - Main hub server ID +- `FEDERATION_GUILD_IDS` - Comma-separated list of guild IDs +- `HEALTH_PORT` - Health server port (default: 8044) + +## Running the Bot + +```bash +cd sentinel-bot +npm install +npx prisma generate +npx prisma db push +npm run build +npm start +``` + +For development: +```bash +npm run dev +``` + +## Integration with Bot Master + +Once the Sentinel bot is running, add it to Bot Master dashboard: +1. Go to Bot Master dashboard (port 5000) +2. Click "Add Bot" +3. Enter name: "Aethex Sentinel" +4. Enter health endpoint: `http://localhost:8044/health` +5. Select type: "discord" + +The dashboard will automatically poll the health endpoint for status updates.