How mpursa/kiwibot works
KiwiBot is a Discord bot that lets authorized users inspect and control configured game servers. The main workflow is a slash command received by the bot, role-checked and dispatched to a handler, which reads server state or player data and may start, stop, or schedule a stop before replying in Discord. A separate poller auto-stops servers only after confirmed idleness. The graph reflects documented commands and capabilities; unsampled handler details are represented at the resolver level, without assuming additional internal call paths.
Main entry points: resolve.ts Command handlers · main.ts Bot entry point · autostop.ts Idle-stop poller · messaging.ts Replies and alerts
Components 14
Discord interface
- Bot entry point
src/main.ts - Slash commands
src/discord/commands.ts - Replies and alerts
src/discord/messaging.ts
Command control
- Command handlers
src/handler/resolve.ts - Role checks
src/discord/roles.ts
Server operations
- Idle-stop poller
src/server/autostop.ts - Unit and socket state
src/server/state.ts - Player parsing
src/server/players.ts - RCON client
src/server/rcon.ts
Configuration
- Server configuration
src/core/cfg.ts
Other components
- Discord user
- Discord API
- Host services
- Game servers
Connections 25
- Discord user → Discord API: submits commands
- Discord API → Bot entry point: delivers interactions
- Bot entry point → Discord API: registers commands
- Bot entry point → Slash commands: loads definitions
- Bot entry point → Command handlers: dispatches commands
- Bot entry point → Idle-stop poller: starts poller
- Bot entry point → Unit and socket state: checks sudo access
- Bot entry point → Replies and alerts: sends startup alert
- Slash commands → Server configuration: builds server choices
- Command handlers → Slash commands: looks up command
- Command handlers → Server configuration: selects server
- Command handlers → Role checks: checks access
- Command handlers → Unit and socket state: reads or controls unit
- Command handlers → Player parsing: checks connected players
- Command handlers → RCON client: queries player answer
- Command handlers → Replies and alerts: announces actions
- Command handlers → Discord API: replies to command
- Unit and socket state → Host services: runs systemctl and ss
- Idle-stop poller → Server configuration: reads idle settings
- Idle-stop poller → Unit and socket state: checks and stops units
- Idle-stop poller → Player parsing: checks occupancy
- Idle-stop poller → Replies and alerts: sends stop alerts
- Player parsing → RCON client: queries game
- RCON client → Game servers: exchanges RCON data
- Replies and alerts → Discord API: posts messages