Snoopy monitors users on Reddit and notifies about post activity via Discord.
Reddit API credentials are required for functionality, and a Discord Webhook is recommended for notifications.
Regardless of your chosen setup method, Snoopy is intended for use with a task scheduler, such as cron.
Environment Variables:
LOG_LEVEL
: Loguru severity level to write to the console.LOG_DISCORD_WEBHOOK_URL
: Discord Webhook URL to receive log events.LOG_DISCORD_WEBHOOK_LEVEL
: Minimum Loguru severity level to forward to Discord.REDDIT_USERNAME
(Required): Reddit account username.REDDIT_PASSWORD
(Required): Reddit account password.REDDIT_CLIENT_ID
(Required): Reddit API application client ID.REDDIT_CLIENT_SECRET
(Required): Reddit API application client secret.DISCORD_WEBHOOK_URL
: Discord Webhook URL to receive Reddit activity notifications.
Configurable Variables (config.json
):
users
(Required): Array of dicts containing options for watching Reddit users.username
(Required): Username of the desired Reddit userlabel
: Label to be displayed alongside the username and post flaircommunities
: Array of strings containing Reddit subreddit names
Rename config_example.json
to config.json
, then provide the configurable variables.
Modify the following compose.yaml
example file, then run docker compose up
.
services:
snoopy:
container_name: snoopy
image: ethanchrisp/snoopy:latest
environment:
LOG_LEVEL: INFO
LOG_DISCORD_WEBHOOK_URL: https://discord.com/api/webhooks/YYYYYYYY/YYYYYYYY
LOG_DISCORD_WEBHOOK_LEVEL: WARNING
REDDIT_USERNAME: XXXXXXXX
REDDIT_PASSWORD: XXXXXXXX
REDDIT_CLIENT_ID: XXXXXXXX
REDDIT_CLIENT_SECRET: XXXXXXXX
DISCORD_WEBHOOK_URL: https://discord.com/api/webhooks/XXXXXXXX/XXXXXXXX
volumes:
- /path/to/config.json:/snoopy/config.json:ro
Snoopy is built for Python 3.12 or greater.
- Install required dependencies using uv:
uv sync
- Rename
.env_example
to.env
, then provide the environment variables. - Rename
config_example.json
toconfig.json
, then provide the configurable variables. - Start Snoopy:
python snoo.py