Files
MinecraftWhitelistBot/README.md
T
2026-05-01 19:34:31 +02:00

3.1 KiB

Discord Whitelist Bot

A Discord.js bot that handles Minecraft whitelist requests with admin review, RCON integration, and optional uptime pings.

Make sure to have NPM installed. If not install on https://nodejs.org/en/download for your os

If you need help: Join my discord Server and send me a dm https://discord.gg/nRgXUFSFfe

Also feel free to create issues in the issues tab https://github.com/WinniePatGG/MinecraftWhitelistBot/issues


Features

  • Whitelist requests from discord
  • Admin review system
  • RCON integration
  • Optional uptime ping system
  • Docker support
  • Fully customizable via .env

Environment Variables

Variable Description
DISCORD_TOKEN Discord Bot Token
GUILD_ID Discord Server ID
PUBLIC_CHANNEL_ID Channel where users submit whitelist requests
ADMIN_REVIEW_CHANNEL_ID Channel where admins review requests
TEAM_ROLE_ID Role that gets pinged for new requests
RCON_HOST IP address of the Minecraft server
RCON_PORT RCON port (from server.properties)
RCON_PASSWORD Password for RCON
PING_ENABLED Enable/disable API pings
PING_DOMAIN URL to ping (e.g. Uptime Kuma)

File Overview

bot.js

Handles:

  • Slash commands
  • Request storage
  • Embeds and UI
  • Workflow logic

minecraft_bridge.js

Manages communication with the Minecraft server via RCON.

pingTask.js

Runs scheduled pings if enabled.


Getting Started

Local Setup

git clone https://github.com/WinniePatGG/MinecraftWhitelistBot.git
cd MinecraftWhitelistBot
npm install
npm run start:all

Then run /whitelist in your configured Discord channel.


Docker Deployment

mkdir MinecraftWhitelistBot
mkdir MinecraftWhitelistBot/app

Copy:

  • docker-compose.yml → root folder
  • .env → root folder
  • All app files → /app

Start:

docker compose up -d

Common Issues

- Error: SQLITE_ERROR: no such table: whitelist_requests

Restart everything:

npm run start:all

- Error [TokenInvalid]: An invalid token was provided.

Set a valid Discord Bot Token in you .env file in the field DISCORD_TOKEN and restart

npm run start:all