2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-11 23:24:42 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-11 23:24:42 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00
2026-03-11 23:24:42 +00:00
2026-03-11 23:24:42 +00:00
2026-03-12 21:45:01 +00:00
2026-03-12 21:45:01 +00:00

Minecraft Update Bot

Version 1.0.0 - Automatically detects new Minecraft releases (Java and Bedrock editions) and posts announcements to a subreddit.

Features

Core functionality:

  • Polls the official Minecraft launcher manifest for new Java Edition releases
  • Detects Minecraft Bedrock Edition updates via minecraft.wiki scraping
  • Posts new releases to a configured subreddit automatically
  • Maintains a database of posted versions to prevent duplicate posts
  • Supports multiple release types (releases, snapshots, beta versions)
  • Configurable check interval for polling

Advanced features:

  • Customizable post templates via subreddit wiki configuration
  • Different post formats for different release types
  • Moderator chat commands for config reload and manual reposting
  • Automatic bot update notifications via modmail
  • Docker and Docker Compose deployment ready
  • Persistent version tracking across container restarts

Quick Start

  1. Copy the environment template:

    copy .env.example .env
    
  2. Edit .env with your Reddit credentials:

    REDDIT_CLIENT_ID=your_id
    REDDIT_CLIENT_SECRET=your_secret
    REDDIT_USERNAME=your_username
    REDDIT_PASSWORD=your_password
    SUBREDDIT=your_subreddit
    
  3. Start the bot:

    docker-compose up -d
    
  4. View logs:

    docker-compose logs -f
    

See DOCKER.md for detailed Docker setup instructions.

Manual Setup

  1. Install dependencies:

    pip install -r requirements.txt
    
  2. Create a Reddit application at https://www.reddit.com/prefs/apps (select "Script" type)

  3. Configure environment variables or edit config.py:

    set REDDIT_CLIENT_ID=your_client_id
    set REDDIT_CLIENT_SECRET=your_client_secret
    set REDDIT_USERNAME=your_username
    set REDDIT_PASSWORD=your_password
    set SUBREDDIT=your_subreddit
    python main.py
    

Configuration

Environment Variables

Required variables:

  • REDDIT_CLIENT_ID - Your Reddit OAuth app client ID
  • REDDIT_CLIENT_SECRET - Your Reddit OAuth app secret
  • REDDIT_USERNAME - Reddit account username
  • REDDIT_PASSWORD - Reddit account password
  • SUBREDDIT - Target subreddit name

Optional variables:

  • REDDIT_RELEASE_TYPES - Comma-separated types: release,snapshot (default: release)
  • REDDIT_CHECK_BEDROCK - Enable Bedrock detection: true or false (default: false)
  • REDDIT_CHECK_INTERVAL - Seconds between checks (default: 3600)
  • REDDIT_WIKI_PAGE_NAME - Wiki page for post templates (default: minecraft_update_bot)
  • REDDIT_USER_AGENT - API user agent string (default: MinecraftUpdateBot/1.0)

Wiki Configuration

Post templates are defined in a subreddit wiki page (default name: minecraft_update_bot).

Create entries for each release type with title and body templates:

release:
  title: "Minecraft {version} Released"
  body: |
    New version available at minecraft.net
    Released: {release_date}

snapshot:
  title: "Minecraft {version} Snapshot"
  body: |
    Test build available in launcher
    Released: {release_date}

bedrock-windows:
  title: "Bedrock Edition {version} Available"
  body: |
    Download from Microsoft Store
    Released: {release_date}

Available placeholders: {version}, {release_date}, {type}

See WIKI_CONFIG.md for complete wiki configuration details.

Moderator Chat Commands

Moderators can control the bot via Reddit chat messages:

reload-config

  • Reloads wiki configuration without restarting the bot
  • Usage: Send a chat message containing "reload-config"
  • Response: Bot replies with success or failure status

repost-latest

  • Reposts the latest releases (bypasses duplicate check)
  • Usage: Send a chat message containing "repost-latest"
  • Response: Bot replies with number of versions reposted

Bedrock Edition Support

The bot can track Minecraft Bedrock Edition (Windows) releases by scraping the official minecraft.wiki version history page.

Enable with Docker:

REDDIT_CHECK_BEDROCK=true

Or environment variable:

set REDDIT_CHECK_BEDROCK=true
python main.py

Note: Bedrock versions use the new format (26.x, 27.x, etc.) and are detected from the wiki page. Java Edition will eventually use the same versioning scheme.

Release Types

Supported Java Edition release types:

  • release - Final Java Edition releases
  • snapshot - Development snapshots
  • old_beta - Legacy beta versions
  • old_alpha - Legacy alpha versions

Supported Bedrock Edition types:

  • bedrock-windows - Windows Bedrock releases

Database and Persistence

Posted versions are tracked in DB/posted_versions.json. This prevents duplicate posts when the bot restarts.

With Docker, data persists in a named volume (minecraft-bot-db).

To reset the database and repost all versions:

  • Docker: docker volume rm minecraft-bot-db then restart
  • Manual: Delete DB/posted_versions.json

Logs

Docker logs:

docker-compose logs -f

Watch for status messages with [BOT], [CHAT], [BEDROCK_CHECKER] prefixes.

Files Overview

  • main.py - Bot orchestration and update checking
  • config.py - Configuration loader
  • minecraft_checker.py - Java Edition version checker
  • bedrock_checker.py - Bedrock Edition version checker via wiki scraping
  • wiki_config.py - Wiki page configuration manager
  • update_checker.py - Bot update notifications
  • requirements.txt - Python dependencies
  • Dockerfile - Container image definition
  • docker-compose.yml - Docker Compose configuration
  • DB/ - Version tracking database (auto-created)

Check every 10 minutes (for testing)

CHECK_INTERVAL = 600


### 5. Run the Bot

```bash
python main.py

You should see output like:

[BOT] Starting Minecraft Update Bot...
[BOT] ✓ Successfully connected to Reddit
[BOT] Started update checker (checking every 3600 seconds)
[BOT] ✓ Bot is running

Automatic Update Notifications

The bot includes an update checker that periodically polls for new versions and notifies your subreddit's modteam via modmail when updates are available.

How it works:

  • Checks https://updts.slfhstd.uk every hour for new versions
  • Sends modmail to your subreddit's modteam if an update is found
  • Limits notifications to once per 24 hours to avoid spam
  • No configuration needed - it runs automatically!

What you'll see:

[UPDATE_CHECKER] Started for MinecraftUpdateBot v1.0
[UPDATE_CHECKER] Update found: 1.0 -> 1.1
[UPDATE_CHECKER] Sent update notification to r/your_subreddit

The modteam will receive a message with the new version number and changelog link.

How It Works

  1. Initialization: Bot connects to Reddit and loads posted versions from DB/posted_versions.json
  2. Check Loop: Every CHECK_INTERVAL seconds, it:
    • Fetches the latest Minecraft versions from Mojang's launcher manifest
    • Checks if any are new (not in DB/posted_versions.json)
    • Posts to subreddit if new versions found
    • Saves the posted version IDs
  3. Background: Runs in background thread, checking continuously

Database

Posted versions are stored in DB/posted_versions.json:

{
  "posted": [
    "1.20.1",
    "1.21",
    "1.21.1"
  ]
}

To reset (post all new versions again), delete or clear this file.

Troubleshooting

Connection Issues

  • Check your credentials in config.py or environment variables
  • Verify your Reddit app is configured correctly
  • Make sure your Reddit account can post to the subreddit

"No New Releases"

  • The bot only posts once per version
  • Check DB/posted_versions.json to see what's been posted
  • Delete a version from the file to repost it

Test with Snapshots

Change RELEASE_TYPES = ["snapshot"] and CHECK_INTERVAL = 60 to test quickly.

Files

  • main.py - Main bot script
  • config.py - Configuration
  • minecraft_checker.py - Fetches version data from Mojang
  • test_setup.py - Validates your setup
  • Dockerfile - Docker image definition
  • docker-compose.yml - Docker Compose configuration
  • DB/ - Database folder (created automatically)
  • requirements.txt - Python dependencies

License

MIT

S
Description
No description provided
Readme 80 KiB
V1.0.0 Latest
2026-03-12 21:55:54 +00:00
Languages
Python 99.3%
Dockerfile 0.7%