diff --git a/README.md b/README.md index c965780..7c36b67 100644 --- a/README.md +++ b/README.md @@ -15,109 +15,87 @@ ModReplyBot is a Reddit bot for moderators that automates post approval and stic ## Configuration + ### 1. Wiki Page Configuration Edit your subreddit wiki page (name set by `REDDIT_WIKI_PAGE` env variable) with YAML like: -``` +```yaml 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 - # ModReplyBot +post_tags: + - tag: Bedrock, Java + comment: | + __[Click here if your post says "Sorry, this post was removed by Reddit’s filters"](...)__ + status: enabled + flair_id: 12345678-aaaa-bbbb-cccc-1234567890ab +``` - 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. +- 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`. - ## 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 +### 2. Environment Variables +Create a `.env` file (or set env variables directly) with: - ## Configuration +``` +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 +``` - ### 1. Wiki Page Configuration - Edit your subreddit wiki page (name set by `REDDIT_WIKI_PAGE` env variable) with YAML like: +## Installation - ``` - 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 +### Docker Compose (Recommended) +1. Copy `.env.example` to `.env` and fill in your values. +2. Run: - post_tags: - - tag: Bedrock, Java - comment: | - __[Click here if your post says "Sorry, this post was removed by Reddit’s filters"](...)__ - status: enabled - flair_id: 12345678-aaaa-bbbb-cccc-1234567890ab - ``` +``` +docker compose up -d +``` - - 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`. +* The DB folder is mounted for persistent database storage. - ### 2. Environment Variables - Create a `.env` file (or set env variables directly) with: +### Docker Run +1. Copy `.env.example` to `.env` and fill in your values. +2. Run: - ``` - 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 - ``` +``` +docker run --env-file .env -v $(pwd)/DB:/app/DB slfhstd.uk/slfhstd/modreplybot:latest +``` - ## Installation +### Baremetal (Direct Python) +1. Install Python 3.11+ +2. Install dependencies: - ### Docker Compose (Recommended) - 1. Copy `.env.example` to `.env` and fill in your values. - 2. Run: +``` +pip install -r requirements.txt +``` - ``` - docker compose up -d - ``` +3. Set environment variables or create a `.env` file. +4. Run: - * 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 - ``` +``` +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.