How princeofcookies/masterbot works
MasterBot hosts multiple configurable Discord bots, either together or as individual PM2 workers. Its main workflow discovers each bot and its environment, creates a client and optional SQL pool, loads shared or bot-specific tools, functions, commands, and events, then logs in. A separate operations branch monitors PM2 health and resource guardrails, alerts, and supports Discord-based control. The README also documents an optional Rust watchdog. Edges are limited to calls shown in excerpts or relationships documented in the README; unsampled internals are not assumed.
Main entry points: botLoader.js Bot startup · healthMonitor.js Health monitor · pm2Control.js Bot controls · pm2Cache.js PM2 status cache
Components 27
Bot runtime
- Host entrypoint
index.js - Bot worker
src/worker/botWorker.js - Bot discovery
src/core/botDiscovery.js - Bot startup
src/core/botLoader.js - Client factory
src/core/clientfactory.js - Client defaults
src/config/defaults.js - SQL pool
src/core/database.js
Loading and events
- Function loader
src/core/functionloader.js - Event loader
src/core/eventloader.js - File discovery cache
src/cache/fileDiscoveryCache.js - Command handler
src/functions/handlers/handleCommands.js - Command hash cache
src/cache/commandHashCache.js
PM2 operations
- Discord control app
src/control/controlBot.js - Bot controls
src/control/pm2Control.js - User alerts
src/control/alertUsers.js - Health monitor
src/pm2/healthMonitor.js - PM2 client
src/pm2/pm2Client.js - PM2 status cache
src/pm2/pm2Cache.js - Alert sink
src/pm2/alertSink.js - Status formatter
src/pm2/statusFormatter.js - Resource allocator
src/pm2/resourceAllocator.js - PM2 app config
ecosystem.config.js
Optional watchdog
- Rust watchdog
rust/masterbot-watchdog/src/main.rs
Other components
- Operator / bot user
- Discord API
- MySQL
- PM2
Connections 34
- Operator / bot user → Discord API: uses
README.md - Host entrypoint → Bot startup: starts bots
index.js - Host entrypoint → Health monitor: starts monitor
index.js - Bot worker → Bot startup: starts one bot
src/worker/botWorker.js - Bot startup → Bot discovery: finds bots
src/core/botLoader.js - Bot startup → Client factory: creates client
src/core/botLoader.js - Client factory → Client defaults: uses defaults
src/core/clientfactory.js - Bot startup → SQL pool: creates pool
src/core/botLoader.js - SQL pool → MySQL: queries
src/core/database.js - Bot startup → Function loader: loads functions
src/core/botLoader.js - Bot startup → Event loader: loads events
src/core/botLoader.js - Function loader → File discovery cache: discovers files
src/core/functionloader.js - Event loader → File discovery cache: discovers files
src/core/eventloader.js - Command handler → File discovery cache: discovers commands
src/functions/handlers/handleCommands.js - Command handler → Command hash cache: checks hashes
src/functions/handlers/handleCommands.js - Bot startup → Discord API: logs in
README.md - Discord control app → Bot controls: handles actions
src/control/controlBot.js - Discord control app → User alerts: uses alerts
src/control/alertUsers.js - Discord control app → Discord API: registers commands
README.md - Bot controls → Bot discovery: validates bots
src/control/pm2Control.js - Bot controls → PM2 status cache: reads status
src/control/pm2Control.js - Bot controls → PM2: runs commands
src/control/pm2Control.js - Health monitor → Bot discovery: finds bots
src/pm2/healthMonitor.js - Health monitor → PM2 status cache: reads status
src/pm2/healthMonitor.js - Health monitor → PM2 client: requests actions
src/pm2/healthMonitor.js - Health monitor → Alert sink: sends alerts
src/pm2/healthMonitor.js - Health monitor → Status formatter: formats status
src/pm2/healthMonitor.js - Health monitor → Resource allocator: calculates allocations
src/pm2/healthMonitor.js - PM2 client → PM2 status cache: reads cached status
src/pm2/pm2Client.js - PM2 client → Bot discovery: validates bots
src/pm2/pm2Client.js - PM2 status cache → PM2: refreshes status
src/pm2/pm2Cache.js - PM2 app config → PM2: configures apps
README.md - Rust watchdog → PM2: reads status
README.md - Rust watchdog → Operator / bot user: reports allocations
README.md