- Introduction
- Requirements
- Installation
- Discord Bot Setup
- Configuration Files
- Feature Documentation
- Commands Reference
- Permissions
- Troubleshooting
- API Integration
Bot Mother DC is a professional-grade Discord-Minecraft integration plugin designed to bridge your gaming community across platforms. It provides comprehensive features including account synchronization, a ticket support system, VoIP management, shop integration with Stripe payments, content moderation, and much more.
- Account Sync: Link Minecraft and Discord accounts securely
- Ticket System: Professional support ticket management
- VoIP Management: Dynamic voice channels with time tracking
- Shop System: Stripe-powered payments for VIP positions
- Content Moderation: Multi-language profanity filtering and punishment system
- Chat Bridge: Bidirectional Minecraft ↔ Discord messaging
- Staff Roles: Automatic prefix and permission management
- CAPTCHA: Bot prevention for new Discord members
| Component | Minimum | Recommended |
|---|---|---|
| Minecraft Server | 1.17.x | 1.20.x+ |
| Java Version | 17 | 21 |
| RAM | 2GB | 4GB+ |
| Server Software | Spigot | Paper/Purpur |
- Vault: Required for economy and permissions integration
- LuckPerms: Recommended for advanced permission management
- EssentialsChat: For chat formatting support
- TownyChat: For town-based chat channels
- Download
BotMotherDC.jarfrom SpigotMC - Place the JAR file in your server's
plugins/folder - Start or restart your server
- The plugin will create its configuration files automatically
- Stop your server
- Navigate to
plugins/BotMotherDC/configs/ - Open
config.ymland configure your Discord bot token (see next section) - Configure other settings as needed
- Start your server
- Go to Discord Developer Portal
- Click "New Application" and give it a name
- Navigate to the "Bot" section
- Click "Add Bot"
- Under "Privileged Gateway Intents", enable:
- Presence Intent
- Server Members Intent
- Message Content Intent
- Copy the bot token
Your bot requires the following permissions (Permission Integer: 8 for Administrator, or specific permissions below):
- Manage Roles
- Manage Channels
- Kick Members
- Ban Members
- View Channels
- Send Messages
- Send Messages in Threads
- Embed Links
- Attach Files
- Read Message History
- Add Reactions
- Use Slash Commands
- Connect (voice)
- Speak (voice)
- Mute Members
- Deafen Members
- Move Members
- In Discord Developer Portal, go to OAuth2 → URL Generator
- Select scopes:
bot,applications.commands - Select permissions (Administrator or specific ones above)
- Copy the generated URL and open it in your browser
- Select your Discord server and authorize
Edit configs/config.yml:
discord:
bot-token: "YOUR_BOT_TOKEN_HERE"
guild-id: "YOUR_SERVER_ID"Main configuration file with general settings.
# Main Settings
debug-mode: false # Enable detailed logging
first-time-setup: true # Auto-create Discord infrastructure (set to false after first run!)
# Discord Configuration
discord:
bot-token: "YOUR_TOKEN"
guild-id: "YOUR_SERVER_ID"
# Feature Toggles
features:
chat-bridge: true
sync-system: true
ticket-system: true
voip-system: true
shop-system: true
captcha: true
moderation: trueStripe payment integration settings.
# IMPORTANT: Read the SSL/TLS warning at the top of this file!
stripe:
enabled: true
api-key-secret: "sk_test_..."
webhook-secret: "whsec_..."
webhook:
use-builtin: true # Use internal webserver
port: 4242
cloudflare-tunnel: true # REQUIRED for production!VIP positions and staff role configuration.
positions:
vip:
name: "VIP"
price: 5.00
duration: 30 # Days
discord-role: "VIP_ROLE_ID"
commands-on-activate:
- "lp user {player} parent add vip"
commands-on-expire:
- "lp user {player} parent remove vip"
staff-roles:
admin:
discord-role: "ADMIN_ROLE_ID"
prefix: "&c[Admin] "
priority: 100
commands-on-grant:
- "lp user {player} parent add admin"Chat bridge and filtering settings.
chat:
global-channel: "CHANNEL_ID"
media-channel: "CHANNEL_ID"
server-channel: "CHANNEL_ID"
filters:
enabled: true
filter-chat: ["TownyChat", "EssentialsChat"]
delay:
media-seconds: 60Content moderation rules.
moderation:
enabled: true
punishments:
warning-threshold: 3 # Warnings before mute
mute-duration: 3600 # Seconds
mute-threshold: 3 # Mutes before kick
kick-threshold: 3 # Kicks before ban
links:
whitelist-enabled: true
whitelist:
- "youtube.com"
- "twitch.tv"
blacklist:
- "malicious-site.com"The sync system links Minecraft accounts to Discord accounts securely.
- Player runs
/sync dcin Minecraft - System generates a unique 6-character code
- Player enters the code in Discord (via button/command)
- Accounts are linked, rewards are granted
Configure in positions.yml:
sync:
enabled: true
discord-role: "SYNCED_ROLE_ID"
commands-on-sync:
- "lp user {player} permission set botmotherdc.synced"
commands-on-unsync:
- "lp user {player} permission unset botmotherdc.synced"Professional Discord-based ticket system for player support.
- User clicks the "Create Ticket" button
- Modal form appears for subject and description
- Private channel is created (only user + staff see it)
- Staff members receive DM notification with Accept button
- Staff member accepts, can now respond in channel
- Optional voice channel can be added for live support
- Ticket can be closed when resolved
tickets:
enabled: true
category-id: "CATEGORY_ID"
timeout-minutes: 30 # Auto-close unaccepted tickets
extended-timeout: 1440 # Timeout when no staff (24 hours)
voice-channels: true # Enable voice supportDynamic voice channel management with time tracking.
- Creates temporary voice channels on demand
- Tracks user voice time
- Screen share unlocked after reaching time threshold
- Auto-cleanup when channels empty
- Configurable user limits
voip:
enabled: true
category-id: "CATEGORY_ID"
user-limit: 10
alone-timeout-seconds: 60
screenshare-time-threshold: 3600 # 1 hour of voice timeSecure payment processing for VIP positions.
- Create a Stripe account at stripe.com
- Get your API keys from Stripe Dashboard → Developers → API keys
- For production, set up Cloudflare Tunnel or valid SSL certificate
IMPORTANT: Self-signed certificates do NOT work with Stripe in production!
Option 1: Cloudflare Tunnel (Recommended - Free)
- Install cloudflared:
winget install cloudflare.cloudflared - Login:
cloudflared tunnel login - Create tunnel:
cloudflared tunnel create my-tunnel - Configure and run tunnel
- Add webhook URL in Stripe:
https://your-tunnel.trycloudflare.com/stripe/webhook
Option 2: Let's Encrypt (Free)
- Install certbot
- Obtain certificate:
certbot certonly --standalone -d your.domain.com - Configure plugin to use the certificate files
stripe:
enabled: true
api-key-secret: "sk_live_..." # Use live key for production
webhook-secret: "whsec_..."
currency: "USD"
positions:
vip:
name: "VIP"
price: 5.00
duration: 30Comprehensive content filtering and punishment system.
The profanity filter supports multiple languages:
- English (EN)
- Portuguese Brazil (PT-BR)
- Spanish (ES)
- Italian (IT)
- Russian (RU)
- Chinese (ZH)
- Direct Match: Exact word matching
- Leetspeak: Character substitution (a→4, e→3, etc.)
- Repetition: Repeated characters (heeello → hello)
- Spacing: Spaced out words (h e l l o → hello)
Warning 1 → Warning 2 → Warning 3 → Mute (configurable duration)
Mute 1 → Mute 2 → Mute 3 → Kick
Kick 1 → Kick 2 → Kick 3 → Ban
All punishments sync between Minecraft and Discord.
Bidirectional messaging between Minecraft and Discord.
- Global: All messages from all players
- Media: Messages with attachments (configurable delay)
- Server: Verified players only
chat:
global-channel: "CHANNEL_ID"
media-channel: "CHANNEL_ID"
server-channel: "CHANNEL_ID"
# Support for chat plugins
filter-chat: ["TownyChat", "EssentialsChat"]Automatic synchronization of Discord roles to in-game prefixes.
staff-roles:
admin:
discord-role: "ROLE_ID"
prefix: "&c[Admin] "
chat-prefix: "&c[Admin] &f"
priority: 100
commands-on-grant:
- "lp user {player} parent add admin"
commands-on-revoke:
- "lp user {player} parent remove admin"Prevents bot accounts from joining your Discord server.
- New member joins Discord
- System sends CAPTCHA challenge
- Member must complete verification
- Upon success, member receives verified role
| Command | Description | Permission |
|---|---|---|
/sync dc |
Link Minecraft to Discord | botmotherdc.sync |
/sync unlink |
Unlink your account | botmotherdc.sync |
/positions |
View your active positions | botmotherdc.positions |
| Command | Description | Permission |
|---|---|---|
/botmother reload |
Reload all configurations | botmotherdc.admin.reload |
/botmother reset |
Reset Discord setup | botmotherdc.admin.reset |
/positions list |
List all positions | botmother.admin.positions |
/positions give <player> <pos> <days> |
Grant position to player | botmother.admin.positions |
/positions remove <player> <pos> |
Remove position from player | botmother.admin.positions |
/positions check <player> |
Check player's positions | botmother.admin.positions |
| Permission | Description | Default |
|---|---|---|
botmotherdc.sync |
Allow account synchronization | true |
botmotherdc.positions |
View own positions | true |
botmotherdc.chat |
Use chat bridge | true |
| Permission | Description | Default |
|---|---|---|
botmotherdc.admin.reload |
Reload plugin configurations | op |
botmotherdc.admin.reset |
Reset Discord setup | op |
botmother.admin.positions |
Manage player positions | op |
botmotherdc.admin.* |
All admin permissions | op |
- Verify bot token is correct in
config.yml - Check that all Privileged Gateway Intents are enabled
- Ensure bot has been invited to your server
- Check console for error messages
- Verify
guild-idis correct - Check that sync role exists and bot can manage it
- Ensure player hasn't already synced
- Try enabling
debug-mode: truefor more info
- In Test Mode: Self-signed certificates work
- In Live Mode: You MUST use valid SSL (Cloudflare Tunnel or CA cert)
- Verify webhook secret is correct
- Check webhook URL is accessible from internet
- Enable polling as backup
- Verify ticket category ID is correct
- Check bot has Manage Channels permission
- Ensure button channel exists
- Check console for permission errors
- Verify VoIP category ID exists
- Check bot has Voice permissions
- Ensure category isn't full (Discord limit: 50 channels per category)
Enable detailed logging in config.yml:
debug-mode: trueThis will output detailed information to console for troubleshooting.
Check logs/latest.log for error messages and stack traces.
All plugin data is stored in the plugins/BotMotherDC/data/ folder:
| File | Content |
|---|---|
linked_accounts.yml |
Minecraft UUID ↔ Discord ID mappings |
shop_data.yml |
Position purchases and expiration dates |
voice_time.yml |
User voice time tracking |
tickets.yml |
Ticket history and metadata |
moderation_data.yml |
Warnings, mutes, kicks, bans |
- Regularly backup the
data/folder - Stop server before editing YAML files manually
- Use a YAML validator when editing configurations
For assistance:
- Check this documentation thoroughly
- Enable debug mode and check logs
- Visit the SpigotMC discussion page
- Provide logs and configuration (remove sensitive tokens!)
Developer: BotMother
Discord Library: JDA (Java Discord API)
Payment Processing: Stripe
Build System: Maven
Thank you for using Bot Mother DC!