Adds detailed documentation to replit.md for the Aethex Sentinel bot, covering its overview, tech stack, project structure, database models, commands, health endpoint, and environment variables. Replit-Commit-Author: Agent Replit-Commit-Session-Id: e72fc1b7-94bd-4d6c-801f-cbac2fae245c Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Event-Id: 8496ba65-c289-429f-a4bd-0235ea116b87 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3bdfff67-975a-46ad-9845-fbb6b4a4c4b5/e72fc1b7-94bd-4d6c-801f-cbac2fae245c/jW8PJKQ Replit-Helium-Checkpoint-Created: true
7.2 KiB
Bot Master
A centralized management dashboard for managing multiple Discord bots.
Overview
Bot Master is a Flask-based web application that provides a central dashboard for monitoring and managing multiple Discord bots. It supports:
- Bot Registry: Store configurations for all your bots
- Status Monitoring: Real-time health checks for each bot
- Statistics: Track servers, commands, and uptime across all bots
- CRUD Operations: Add, edit, view, and delete bot configurations
Tech Stack
- Backend: Python/Flask
- Database: PostgreSQL (via Flask-SQLAlchemy)
- Frontend: Jinja2 templates with custom CSS
Project Structure
/
├── main.py # Flask application entry point
├── templates/ # HTML templates
│ ├── base.html # Base layout template
│ ├── dashboard.html # Main dashboard view
│ ├── bots.html # Bot list table view
│ ├── add_bot.html # Add new bot form
│ ├── view_bot.html # Bot details view
│ └── edit_bot.html # Edit bot form
├── static/ # Static assets (currently empty)
└── attached_assets/ # Uploaded files and extracted bot examples
├── bot1/ # Example AeThex bot (basic)
└── bot2/ # Example AeThex bot (extended with feed sync)
Database Models
Bot
id: Primary keyname: Bot name (required)description: Bot descriptionhealth_endpoint: URL for health check APIadmin_token: Bearer token for authenticated endpointsbot_type: Type of bot (discord, telegram, slack, other)status: Current status (online, offline, unknown, timeout, error)last_checked: Timestamp of last health checkguild_count,command_count,uptime_seconds: Stats from health endpointcreated_at,updated_at: Timestamps
BotLog
- Stores log entries per bot (for future logging features)
API Endpoints
GET /- DashboardGET /bots- List all botsGET /bots/add- Add bot formPOST /bots/add- Create new botGET /bots/<id>- View bot detailsGET /bots/<id>/edit- Edit bot formPOST /bots/<id>/edit- Update botPOST /bots/<id>/delete- Delete botPOST /bots/<id>/check- Check bot health
API (JSON)
GET /api/bots- List all bots as JSONGET /api/bots/<id>/health- Check specific bot healthPOST /api/check-all- Check all bots health
Health Check Integration
Each bot should expose a health endpoint that returns JSON:
{
"status": "online",
"guilds": 5,
"commands": 12,
"uptime": 3600
}
Running the Application
The application runs on port 5000 using the Flask development server.
Environment Variables
DATABASE_URL- PostgreSQL connection stringFLASK_SECRET_KEY- Secret key for session management (auto-generated if not set)
Example Bots
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)
{
"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)
{
"guilds": [
{ "id": "...", "name": "...", "memberCount": 100 }
],
"totalMembers": 500,
"uptime": 3600
}
Environment Variables
Required secrets (add in Replit Secrets tab):
DISCORD_TOKEN- Discord bot tokenDATABASE_URL- PostgreSQL connection string
Optional configuration:
HUB_GUILD_ID- Main hub server IDFEDERATION_GUILD_IDS- Comma-separated list of guild IDsHEALTH_PORT- Health server port (default: 8044)
Running the Bot
cd sentinel-bot
npm install
npx prisma generate
npx prisma db push
npm run build
npm start
For development:
npm run dev
Integration with Bot Master
Once the Sentinel bot is running, add it to Bot Master dashboard:
- Go to Bot Master dashboard (port 5000)
- Click "Add Bot"
- Enter name: "Aethex Sentinel"
- Enter health endpoint:
http://localhost:8044/health - Select type: "discord"
The dashboard will automatically poll the health endpoint for status updates.