{"id":15906180,"url":"https://github.com/avivace/radiogit","last_synced_at":"2026-05-06T15:43:38.038Z","repository":{"id":106679505,"uuid":"81082059","full_name":"avivace/radiogit","owner":"avivace","description":"Watch GitHub repositories from Telegram chats. GitHub notifications delivered on Telegram.","archived":false,"fork":false,"pushed_at":"2017-04-01T11:47:04.000Z","size":21,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-28T10:54:48.600Z","etag":null,"topics":["bot","broadcast-github","git","github","github-api","github-webhooks","telegram","telegram-api","telegram-bot","webhook-listener"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avivace.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-06T11:49:54.000Z","updated_at":"2024-07-26T02:16:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"46806688-ef3c-43dc-8dcf-b8a214c23dc5","html_url":"https://github.com/avivace/radiogit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avivace%2Fradiogit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avivace%2Fradiogit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avivace%2Fradiogit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avivace%2Fradiogit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avivace","download_url":"https://codeload.github.com/avivace/radiogit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229848553,"owners_count":18133649,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","broadcast-github","git","github","github-api","github-webhooks","telegram","telegram-api","telegram-bot","webhook-listener"],"created_at":"2024-10-06T13:21:38.125Z","updated_at":"2026-05-06T15:43:38.006Z","avatar_url":"https://github.com/avivace.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RadioGit\nA Python Bot - built upon the [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) wrapper and Node.js - to broadcast GitHub repository events and activities to Telegram chats.\n\nProvides public interface, handles multiple users with multiple subscription to repositories.\nEvery user can add and remove his subscriptions.\n\nA public instance of the bot is online at [@radiogit_bot](https://t.me/radiogit_bot).\n\n## Overview\n- The `webhoook-listener` contains a Node app to listen and record JSON payloads from GitHub;\n- The `bot` folder contains the actual Telegram bot, which provides an user interface (allowing personal preferences) and delivers updates;\n- In `misc` you'll find some other related code and the old PHP implementation of the webhook listening part (working but **deprecated**).\n\n## Install\n### Webhook Listener\n**Dependencies**: Node.js (Express 4, body-parser)\n\nEdit the port/webserver configuration and run `node index.js` (you may find useful setting up a reverse proxy). Make sure it's accessible and accepting POST requests, the URL will be the *Payload URL* when setting up the actual webhook in GitHub repository settings.\n\nYou can test the listener with `curl` with something like this: \n```\ncurl -d @payload.json -H \"Content-Type: application/json\" PAYLOAD/URL/SOME/POST\n```\nAssuming `payload.json` is something like [this](https://developer.github.com/v3/activity/events/types/#issuesevent).\n\n### The actual bot\n**Dependencies**: python3 (telegram, sqlite3).\n\nInsert your bot token and run the bot with `python bot.py`\n\n## Usage\nWhen everything is ready, talk to the bot.\nIf the repository url is https://github.com/RepoOwner/RepoName, send `/sub RepoOwner/RepoName` to set up event subscription.\n\nWorks in groups, too.\n\n## TODO\n- Support other types of events (currently supporting only commit events, as POC);\n- Implement *secret* checking;\n- Conversation Handling;\n- Rate Limitation;\n- Message Templates;\n\n### Related Projects\n- [TeleGit](https://github.com/FruitieX/telegit)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favivace%2Fradiogit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favivace%2Fradiogit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favivace%2Fradiogit/lists"}