112 lines
3.3 KiB
Markdown
112 lines
3.3 KiB
Markdown
|
||
# 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
|
||
comment: |
|
||
Thank you for your report!
|
||
This post is now approved.
|
||
status: enabled
|
||
- 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 Reddit’s filters"](...)__
|
||
status: enabled
|
||
```
|
||
|
||
- Triggers: Bot responds to mod comments and mod reports containing `!trigger` (e.g., `!help`) with the configured comment.
|
||
- post_tags: Bot posts the comment automatically on new posts with matching tags in the title.
|
||
- Status options: `enabled`, `log-only`, `disabled`.
|
||
|
||
### 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
|
||
```
|
||
|
||
docker compose up -d
|
||
docker run --env-file .env -v $(pwd)/DB:/app/DB slfhstd.uk/slfhstd/modreplybot:latest
|
||
pip install -r requirements.txt
|
||
|
||
## 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
|
||
```
|
||
|
||
|
||
## 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 survives container restarts.
|
||
- If the wiki config is invalid, the bot will notify mods via modmail and pause until fixed.
|
||
|
||
## Moderator Guide
|
||
See `ModGuide.md` for a detailed guide to configuring triggers, auto-post tags, and wiki options.
|
||
|
||
## License
|
||
MIT
|