A Discord bot for managing Minecraft servers directly from Discord.
Note: This bot is designed for managing individual servers that run one at a time. You can create multiple server configurations and easily switch between them, but only one server can be running simultaneously. This design ensures optimal resource usage and simplicity. Concurrent server execution is planned for future implementation.
- ๐ฎ Create, edit, and delete Minecraft servers
- ๐ Start and stop servers
- ๐ Check server status
- ๐ List all servers
- ๐พ Backup and restore server data
- ๐ผ๏ธ Custom server icons
- TypeScript
- Bun
- discord.js
- Docker (Dockerode)
- Sharp (Image processing)
- Docker
# Set up environment variables
cp .env.example .env
# Edit .env with your Discord tokens
# Build and start
docker compose up -d --build
# View logs
docker compose logs -f botDISCORD_TOKEN=your_discord_token_here
CLIENT_ID=your_client_id
GUILD_ID=your_guild_id| Command | Description |
|---|---|
/create |
Create a new Minecraft server |
/start |
Start an existing server |
/stop |
Stop a running server |
/status |
Check server status |
/list |
List all servers |
/edit |
Edit server configuration (owner only) |
/delete |
Delete a server (owner only) |
/whitelist |
Manage server whitelist (list/add/remove players) |
/ops |
Manage server operators (list/add/remove operators) |
/backup-create |
Create a backup of server data |
/backup-list |
List all backups for a server |
/backup-restore |
Restore a server from backup |
/backup-delete |
Delete a backup (owner only) |
/help |
Show help message |
Creates a new Minecraft server with customizable settings.
Options:
server-name(required) - Unique name for your serverversion(required) - Minecraft version (e.g., "1.20.1")icon(optional) - Server icon image (automatically resized to 64x64)description(optional) - Server description (default: "A Minecraft server")gamemode(optional) - Game mode: survival, creative, adventure, spectator (default: survival)difficulty(optional) - Difficulty: peaceful, easy, normal, hard (default: normal)server-type(optional) - Server type (default: paper)max-players(optional) - Maximum players (1-100, default: 20)
Example:
/create server-name:MyServer version:1.20.1 gamemode:survival difficulty:normal max-players:10
Starts an existing Minecraft server. Only one server can run at a time.
Options:
server-name(required) - Name of the server to start
Example:
/start server-name:MyServer
The bot will wait for the server to become healthy before confirming success.
Stops a currently running Minecraft server.
Options:
server-name(required) - Name of the server to stop
Example:
/stop server-name:MyServer
Displays detailed information about a server including its current status and uptime.
Options:
server-name(required) - Name of the server to check
Example:
/status server-name:MyServer
Shows: version, type, gamemode, difficulty, max players, owner, and current status (Running/Stopped with uptime).
Displays a list of all Minecraft servers with their current status.
Example:
/list
Shows all servers with their names, owners, and status.
Edits an existing server's configuration. The server must be stopped before editing. Owner only.
Options:
server-name(required) - Name of the server to editicon(optional) - New server icon image (automatically resized to 64x64)description(optional) - New server descriptionmax-players(optional) - New maximum players (1-100)gamemode(optional) - New game modedifficulty(optional) - New difficultyversion(optional) - New Minecraft version
Example:
/edit server-name:MyServer difficulty:hard max-players:20
At least one field must be provided to update.
Permanently deletes a server and all its data including backups. The server must be stopped before deletion. Owner only.
Options:
server-name(required) - Name of the server to delete
Example:
/delete server-name:MyServer
Warning: This action cannot be undone!
Manage the whitelist for a running server. Supports listing, adding, and removing players.
Subcommands:
list- Display all players on the whitelistadd- Add a player to the whitelistremove- Remove a player from the whitelist
Options:
server-name(required) - Name of the serverusername(required for add/remove) - Minecraft username
Examples:
/whitelist list server-name:MyServer
/whitelist add server-name:MyServer username:Steve
/whitelist remove server-name:MyServer username:Alex
The server must be running to manage the whitelist.
Manage operators (admins) for a running server. Supports listing, adding, and removing operators.
Subcommands:
list- Display all operators and their permission levelsadd- Grant operator privileges to a playerremove- Revoke operator privileges from a player
Options:
server-name(required) - Name of the serverusername(required for add/remove) - Minecraft username
Examples:
/ops list server-name:MyServer
/ops add server-name:MyServer username:Steve
/ops remove server-name:MyServer username:Alex
The server must be running to manage operators.
Creates a backup of a running server's world data.
Options:
server-name(required) - Name of the server to back up
Example:
/backup-create server-name:MyServer
The server must be running to create a backup. Backups are stored as compressed archives.
Lists all available backups for a specific server.
Options:
server-name(required) - Name of the server
Example:
/backup-list server-name:MyServer
Restores a server from a previously created backup. The server must be stopped before restoring. Owner only.
Options:
server-name(required) - Name of the server to restorebackup(required) - Backup timestamp to restore from
Example:
/backup-restore server-name:MyServer backup:2025-01-10_15-30-45
Warning: This will overwrite the current server data!
Deletes a specific backup. Owner only.
Options:
server-name(required) - Name of the serverbackup(required) - Backup timestamp to delete
Example:
/backup-delete server-name:MyServer backup:2025-01-10_15-30-45
Displays a help message with available commands.
Example:
/help
Configuration settings can be modified in src/config.ts:
port- Port number for Minecraft servers (default: 25565)maxServerCount- Maximum number of servers allowed (default: 10)maxTotalBackupCount- Maximum total backups across all servers (default: 50)maxBackupCountPerServer- Maximum backups per server (default: 7)overrideOldBackups- Auto-delete oldest backups when limit is reached (default: true)
bun run dev # Development mode with hot reload
bun run cmd:deploy # Deploy Discord commands
bun run biome:check # Lint and format codeFeel free to open issues or submit pull requests for improvements and bug fixes.