All apps · 0 apps
release-bot
Docker app from grtgbln's Repository
Overview
Readme
View on GitHubrelease-bot - a Telegram bot that notifies you of new GitHub releases
This is a Telegram bot that monitors the releases of given repos, sending messages upon a new release.
If you don't need a local installation you can use public bot, avalaible at https://t.me/janisreleasebot.
Alternatives
This bot is inspired by new(releases), Github releases notify bot and release-bot.
Other similar tools:
Features
- Easy subscription to repo by owner/name, GitHub/PyPI/npm URL or uploading requirements.txt or package.json file
- Rich markdown formatting for release note
- Auto subscription to starred repos
- Ready for self-hosting, has docker image
- Work locally, without white IP and domain name
- Only Telegram token required
Commands
/start - show welcome message/about - information about this bot/help - brief usage info/list - show your subscriptions/editlist - show and edit your subscriptions/starred username - subscribe to user's starred repos/starred - unsubscribe from user's starred repos/settings - change output format/stats - basic server statistics/test URL - show specified release message
Stack
- Python 3.12
- Flask
- telegramify_markdown
- sulguk
- python-telegram-bot
- PyGithub
- APScheduler via Flask-APScheduler
- SQLAlchemy via Flask-SQLAlchemy
- Alembic via Flask-Migrate - SQLAlchemy database migrations
Running it yourself
With docker
Using docker compose:
services:
release-bot:
container_name: release-bot
image: ghcr.io/janisv/release-bot:latest
restart: unless-stopped
environment:
- TELEGRAM_BOT_TOKEN=<telegram_token>
#- GITHUB_TOKEN=<github_token> # optional
#- SITE_URL=https://<your_domain_name> # optional
ports:
- 5000:5000
volumes:
- /path/to/data:/app/data
or docker run:
docker run -p 5000:5000 -e TELEGRAM_BOT_TOKEN="<telegram_token>" -v /path/to/data:/app/data -d --name release-bot ghcr.io/janisv/release-bot:latest
From source
Look at Development section
Set the necessary env vars
TELEGRAM_BOT_TOKEN - get this from BotFather. You'll need to create a bot.
GITHUB_TOKEN - (optional) GitHub personal access token (classic) or fine-grained personal access token. When not specified working well for about 20 repos. More info at Rate limits for the REST API.
SITE_URL - (optional) URL used for listening for incoming requests from the Telegram servers. When not specified uses polling instead webhooks. More info at Marvin's Marvellous Guide to All Things Webhook.
CHAT_ID - (optional) Only messages from the specified chat ID are accepted. Can be a comma separated list. You can get your chat ID with @getmyid_bot. If not specified, all messages are accepted.
DATABASE_URI - (optional) When not specified local SQLite uses.
MAX_REPOS_PER_CHAT - (optional) Limit number of repos per user. Default 0 - unlimited.
LOG_LEVEL - (optional) Default INFO.
GITHUB_POLL_INTERVAL - (optional) How often to poll GitHub, minutes. Default 60.
Development
Setup env vars and run:
pip3 install -r requirements.txt
flask db upgrade
python3 -m flask run -h 0.0.0.0
For use webhooks locally, you may want to use localhost.run.
Install release-bot on Unraid in a few clicks.
Find release-bot in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Requires creating a Telegram bot and obtaining the token. See documentation: https://github.com/JanisV/release-bot?tab=readme-ov-file#set-the-necessary-env-vars
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/janisv/release-bot:latestRuntime arguments
- Web UI
http://[IP]:[PORT:5000]- Network
bridge- Privileged
- false
Template configuration
Container Port: 5000
- Target
- 5000
- Default
- 5000
- Value
- 5000
Token for the Telegram bot
- Target
- TELEGRAM_BOT_TOKEN
Maximum number of repositories a chat can monitor. 0 for unlimited
- Target
- MAX_REPOS_PER_CHAT
- Default
- 0
- Value
- 0
Token for the GitHub API. If not provided, restricted by rate limiting
- Target
- GITHUB_TOKEN
URL of the site to listen for incoming requests from Telegram. If not provided, will use polling instead of webhooks
- Target
- SITE_URL
URI for the database. If not provided, will use SQLite database
- Target
- DATABASE_URI
Path to data (SQLite) storage
- Target
- /app/data
- Default
- /mnt/user/appdata/release_bot/data
- Value
- /mnt/user/appdata/release_bot/data