2026-03-10 22:34:21 +00:00
2026-03-10 22:29:35 +00:00
2026-03-10 18:37:11 +00:00
2026-03-08 21:32:51 +00:00
2026-03-10 22:34:21 +00:00
2026-03-10 18:37:11 +00:00
2026-03-08 21:32:51 +00:00
2026-03-10 22:29:35 +00:00
2026-03-10 22:29:35 +00:00
2026-03-10 22:29:35 +00:00
2026-03-08 18:08:24 +00:00

ModReplyBot

ModReplyBot is a Reddit bot for moderators that automates post approval and stickied comments based on subreddit wiki configuration. It responds to mod comments and mod reports containing trigger phrases, and auto-comments on posts with configured tags. All configuration is managed via a subreddit wiki page and environment variables.

Features

  • Responds to moderator comments containing trigger phrases (starting with !)
  • Responds to moderator reports containing trigger phrases (starting with !)
  • Approves posts and leaves stickied comments
  • Posts automatic comments based on tags in post titles (e.g., [Bedrock], [Java])
  • Triggers, tag comments, and bot config are managed via a subreddit wiki page
  • Notifies mods via modmail when the config wiki page changes or is invalid
  • Persistent database for auto-commented posts (survives restarts and container recreations)
  • Docker and baremetal support

Configuration

1. Wiki Page Configuration

Edit your subreddit wiki page (name set by REDDIT_WIKI_PAGE env variable) with YAML like:

triggers:
  - trigger: help

    # ModReplyBot

    ModReplyBot is a Reddit bot for moderators that automates post actions and stickied comments based on subreddit wiki configuration. It responds to mod comments and mod reports containing trigger phrases, auto-comments on posts with configured tags, and now supports chat-based config reloads. All configuration is managed via a subreddit wiki page and environment variables.

    ## Features
    - Responds to moderator comments containing trigger phrases (starting with `!`)
    - Responds to moderator reports containing trigger phrases (starting with `!`)
    - Sets post flair, locks posts/comments, and posts stickied comments
    - Posts automatic comments based on tags in post titles (e.g., `[Bedrock]`, `[Java]`)
    - Triggers, tag comments, and bot config are managed via a subreddit wiki page
    - Chat-based config reload: send a chat message containing `reload-config` to the bot from a moderator account to reload the wiki config
    - Persistent database for auto-commented posts and processed chat requests (survives restarts and container recreations)
    - Docker and baremetal support

    ## Configuration

    ### 1. Wiki Page Configuration
    Edit your subreddit wiki page (name set by `REDDIT_WIKI_PAGE` env variable) with YAML like:

    ```
    triggers:
      - trigger: help
        comment: |
          Thank you for your report!
          This post is now approved.
        status: enabled
        flair_id: 12345678-aaaa-bbbb-cccc-1234567890ab
        stickied: true
        lock_post: false
        lock_comment: false
      - trigger: wc
        comment: |
          Welcome to the community!
        status: log-only

    post_tags:
      - tag: Bedrock, Java
        comment: |
          __[Click here if your post says "Sorry, this post was removed by Reddits filters"](...)__
        status: enabled
        flair_id: 12345678-aaaa-bbbb-cccc-1234567890ab
    ```

    - Triggers: Bot responds to mod comments and mod reports containing `!trigger` (e.g., `!help`) with the configured comment and actions.
    - post_tags: Bot posts the comment automatically on new posts with matching tags in the title and can set flair.
    - Status options: `enabled`, `log-only`, `disabled`.
    - Optional actions: `flair_id`, `stickied`, `lock_post`, `lock_comment`.

    ### 2. Environment Variables
    Create a `.env` file (or set env variables directly) with:

    ```
    REDDIT_CLIENT_ID=your_client_id
    REDDIT_CLIENT_SECRET=your_client_secret
    REDDIT_USERNAME=your_username
    REDDIT_PASSWORD=your_password
    REDDIT_USER_AGENT=modreplybot by /u/your_username
    REDDIT_SUBREDDIT=your_subreddit
    REDDIT_WIKI_PAGE=modreplybot-config
    LOG_LEVEL=Default
    ```

    ## Installation

    ### Docker Compose (Recommended)
    1. Copy `.env.example` to `.env` and fill in your values.
    2. Run:

    ```
    docker compose up -d
    ```

    * The DB folder is mounted for persistent database storage.

    ### Docker Run
    1. Copy `.env.example` to `.env` and fill in your values.
    2. Run:

    ```
    docker run --env-file .env -v $(pwd)/DB:/app/DB slfhstd.uk/slfhstd/modreplybot:latest
    ```

    ### Baremetal (Direct Python)
    1. Install Python 3.11+
    2. Install dependencies:

    ```
    pip install -r requirements.txt
    ```

    3. Set environment variables or create a `.env` file.
    4. Run:

    ```
    python modreplybot.py
    ```

    ## Chat-Based Config Reload
    - To reload the wiki config, send a chat message containing `reload-config` to the bot account from a moderator account.
    - The bot will reply to the chat message indicating whether the config is valid or not.
    - Chat message IDs are tracked in `/DB/chat_wiki_requests.txt` to prevent duplicate reloads after restarts.

    ## Troubleshooting
    - Ensure your Reddit credentials are correct and have moderator permissions.
    - The bot must be able to read the wiki page and approve posts.
    - Check logs for errors.
    - The bot only responds to mod comments and mod reports for triggers.
    - Database is stored in `/DB/commented_posts.txt` and `/DB/chat_wiki_requests.txt` and survives container restarts.
    - If the wiki config is invalid, the bot will reply to the chat message with an error.

    ## Moderator Guide
    See `ModGuide.md` for a detailed guide to configuring triggers, auto-post tags, and wiki options.

    ## License
    MIT
S
Description
No description provided
Readme 150 KiB
V2.2.3 Latest
2026-04-04 15:54:49 +01:00
Languages
Python 99.3%
Dockerfile 0.7%