Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Other similar tools:
- Ready for self-hosting, has docker image
- Work locally, without white IP and domain name
- Only Telegram token required
- Daily summary of release notifications (optional)

## Commands

Expand Down Expand Up @@ -71,6 +72,10 @@ services:
- TELEGRAM_BOT_TOKEN=<telegram_token>
#- GITHUB_TOKEN=<github_token> # optional
#- SITE_URL=https://<your_domain_name> # optional
#- DAILY_SUMMARY_TIME=21:00 # optional, HH:MM (24h)
#- DAILY_SUMMARY_TIMEZONE=Europe/Rome # optional
#- OPENROUTER_API_KEY=<openrouter_api_key> # optional
#- OPENROUTER_MODEL=openrouter/auto # optional
ports:
- 5000:5000
volumes:
Expand All @@ -93,6 +98,18 @@ Look at Development section

`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](https://core.telegram.org/bots/webhooks).

`DAILY_SUMMARY_TIME` - (optional) Time to send a daily summary of release notifications, format HH:MM (24h). Default 21:00 (Europe/Rome).

`DAILY_SUMMARY_TIMEZONE` - (optional) Timezone for `DAILY_SUMMARY_TIME` in IANA format, default Europe/Rome.

`OPENROUTER_API_KEY` - (optional) OpenRouter API key for AI-generated daily summaries.

`OPENROUTER_MODEL` - (optional) OpenRouter model name, default `openrouter/auto`.

`OPENROUTER_APP_NAME` - (optional) OpenRouter app name header value.

`OPENROUTER_SITE_URL` - (optional) OpenRouter referer header value.

`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](https://t.me/getmyid_bot). If not specified, all messages are accepted.

`DATABASE_URI` - (optional) When not specified local SQLite uses.
Expand All @@ -101,6 +118,8 @@ Look at Development section

`LOG_LEVEL` - (optional) Default INFO.

If `OPENROUTER_API_KEY` is not set, daily summaries are skipped.

## Development

Setup env vars and run:
Expand Down
17 changes: 17 additions & 0 deletions app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,20 @@ class Release(db.Model):

repo_id = db.Column(db.ForeignKey('repo.id'))
repos = db.relationship('Repo', back_populates='releases')


class ReleaseNotification(db.Model):
id = db.Column(db.Integer, primary_key=True)
chat_id = db.Column(db.Integer, db.ForeignKey('chat.id'), index=True)
repo_id = db.Column(db.Integer, db.ForeignKey('repo.id'), index=True)
release_id = db.Column(db.Integer)
release_tag = db.Column(db.String)
release_title = db.Column(db.String)
release_url = db.Column(db.String)
release_body = db.Column(db.Text)
repo_full_name = db.Column(db.String)
repo_link = db.Column(db.String)
pre_release = db.Column(db.Boolean, default=False)
updated = db.Column(db.Boolean, default=False)
sent_at = db.Column(db.DateTime, default=aware_utcnow)
summarized_at = db.Column(db.DateTime)
Loading