Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

GitHub Webhook Bot for Telegram

A robust Telegram bot that integrates with GitHub to send real-time event notifications, manage repositories, and interact with issues, pull requests, actions, releases, and discussions directly from Telegram.

Features

  • Real-time Notifications: Receive instant updates for Pushes, Issues, Pull Requests, Reviews, Forks, Stars, GitHub Actions, Discussions, and more.
  • Repository Management: Add, remove, star, watch, fork, archive, or list repositories directly from Telegram (/addrepo, /removerepo, /star, /fork, etc.).
  • Auto-Discovery: Interactively browse and link repositories accessible via your connected GitHub account.
  • Interactive Settings: Configure event notification preferences for each repository using inline menus (/settings or /config).
  • Full GitHub Interaction:
    • Reply Comments: Reply directly to a notification message in Telegram to post a comment on GitHub.
    • Issues & PRs: Create issues, assign members, label, milestone, lock/unlock, pin/unpin, approve, request changes, or merge PRs directly.
    • Actions & CI: Monitor workflow runs, dispatch manual workflow runs, rerun failed jobs, cancel runs, and access job logs.
    • Releases & Changelogs: View latest releases, draft new releases, and automatically generate changelogs/release notes.
    • Discussions: Create new discussions and mark comments as answers directly from Telegram.
    • Search: Search issues, pull requests, and repository code seamlessly.
  • Privacy & Security:
    • Private chat authentication (/connect).
    • AES-GCM encrypted storage of OAuth tokens in MongoDB.
    • Role-based access control for administrative commands (/reload).
    • Transparent privacy policy (/privacy).
  • Stateless Webhooks: Efficient webhook routing using encrypted payload tokens in webhook URLs without extra database lookups during incoming requests.

Supported Events

  • Code: Push events & Commits
  • Issues: Open, close, reopen, label, comment, assign, lock, pin, etc.
  • Pull Requests: Open, close, review, approve, request changes, merge, draft status, check runs, etc.
  • GitHub Actions: Workflow runs, workflow jobs
  • Releases & Discussions: Release creation, discussion posts & answered comments
  • Wikis: Gollum events
  • Settings: Repository updates
  • Deploy Keys & Collaborators: Member changes and access key management
  • Forks & Stars: Fork and watch/star events

Prerequisites

  • Go: v1.23 or higher
  • Docker & Docker Compose: For containerized deployment.
  • MongoDB: v5.0+ (Provided via Docker Compose or MongoDB Atlas).
  • Telegram Bot Token: Created via @BotFather.
  • GitHub OAuth App: Configured in GitHub Developer Settings.
    • Homepage URL: Your domain/bot URL (e.g., https://your-domain.com).
    • Authorization callback URL: https://your-domain.com/oauth/callback.

Configuration

Copy sample.env to .env and fill in the required variables:

# --- Telegram ---# Your Telegram Bot Token from @BotFatherTELEGRAM_TOKEN=123456:ABC-DEF...# Public URL where the bot server is reachableTELEGRAM_WEBHOOK_URL=https://your-domain.com# --- GitHub OAuth ---# From your GitHub OAuth App settingsGITHUB_CLIENT_ID=Iv1...GITHUB_CLIENT_SECRET=0123...# --- Webhooks ---# Shared secret for validating GitHub webhook payloads (e.g. openssl rand -hex 16)GITHUB_WEBHOOK_SECRET=your_webhook_secret_here# --- Database ---MONGODB_URI=mongodb://mongo:27017DATABASE_NAME=github_bot# --- Security ---# 32-byte (64 hex characters) string for AES-GCM encryption of stored tokens.# Generate with: openssl rand -hex 32ENCRYPTION_KEY=a1b2c3d4...# --- Server ---PORT=8080# --- Owner / Admin ---# Telegram User ID of the ownerOWNER_ID=123456789

Installation & Deployment

Using Docker Compose (Recommended)

  1. Clone the repository:

    git clone https://github.com/AshokShau/GithubBot.git
    cd GithubBot
  2. Configure environment:

    cp sample.env .env
    # Edit .env with your credentials
  3. Start the services:

    docker-compose up -d --build
  4. Verify installation: The bot web server runs on http://localhost:8080. GitHub webhooks are received at https://your-domain.com/webhook/....

Manual Build

  1. Install Go dependencies:
    go mod download
  2. Build the binary:
    go build -o bot main.go
  3. Run the application:
    ./bot

Usage

  1. Start the Bot: Send /start in Telegram.
  2. Connect GitHub: Send /connect (in a private chat) to authenticate with your GitHub account via OAuth.
  3. Add Repositories:
    • In a group/channel: /addrepo owner/repo (or alias /add owner/repo).
    • Or send /addrepo without arguments to select interactively from your accessible GitHub repositories.
  4. Manage Notifications:
    • Send /settings (or alias /config) to view linked repositories and toggle event notifications using inline menus.
  5. Interact via Telegram:
    • Reply to Notifications: Simply reply to any issue or PR notification message to post a comment on GitHub.
    • Execute Quick Actions: Reply with commands like /close, /reopen, /approve, or /merge to update GitHub state immediately.

Commands

Authentication

  • /connect - Connect your GitHub account via OAuth (Private chat only).
  • /disconnect, /logout - Disconnect your GitHub account.
  • /me - Display your connected GitHub account profile details.

Repository Management

  • /addrepo [owner/repo], /add [owner/repo] - Link a repository to the chat.
  • /removerepo [owner/repo], /rm [owner/repo] - Unlink a repository from the chat.
  • /repos - List all repositories linked to the current chat.
  • /repo [owner/repo] - Show repository summary, statistics, and URL.
  • /star - Star the repository.
  • /unstar - Remove your star from the repository.
  • /watch - Watch the repository.
  • /unwatch - Stop watching the repository.
  • /fork - Fork the repository to your GitHub account.
  • /archive - Archive the repository.
  • /unarchive - Unarchive the repository.
  • /contributors - List top contributors and commit counts.
  • /languages - Show language composition breakdown percentages.
  • /branches - List repository branches.
  • /branch <branch-name> - Show branch details and latest commit.
  • /default <branch-name> - Change repository default branch.

Issues

  • /issue <Title> - Create a new issue (supports multi-line body).
  • /comment <text> - Post a comment on an issue or PR (reply to notification).
  • /close - Close an issue or PR (reply to notification).
  • /reopen - Reopen a closed issue or PR (reply to notification).
  • /assign @username - Assign a user to the issue or PR.
  • /assignme - Assign yourself to the issue or PR.
  • /unassign @username - Unassign a user.
  • /label +<label1> -<label2> - Add or remove labels (e.g. /label +bug -help-wanted).
  • /labels - List labels for the issue or repository.
  • /milestone <name> - Assign a milestone to an issue or PR.
  • /lock - Lock conversation on an issue or PR.
  • /unlock - Unlock conversation on an issue or PR.
  • /pin - Pin an issue.
  • /unpin - Unpin an issue.

Pull Requests

  • /approve - Approve a Pull Request (reply to notification).
  • /requestchanges [text] - Request changes on a Pull Request.
  • /merge [squash|rebase|merge] - Merge a Pull Request with specified strategy.
  • /draft - Convert a Pull Request to Draft status.
  • /ready - Mark a Draft Pull Request as Ready for Review.
  • /checks - View CI/CD check runs status for the head commit.
  • /files - List changed files and addition/deletion line counts.
  • /diff - Display change summary (files changed, additions, deletions).
  • /reviews - List review history and approval status.
  • /mergeable - Check if a Pull Request has merge conflicts.
  • /request @username - Request a review from a GitHub user.

Commits

  • /commit <SHA> - View details for a specific commit SHA.
  • /commits - View recent commit history.
  • /compare <branch1> <branch2> - Compare two branches or commits.

GitHub Actions

  • /actions - List recent workflow runs and statuses.
  • /run <workflow.yml> [branch] - Manually trigger a workflow run.
  • /rerun - Rerun a failed workflow run (reply to notification).
  • /cancel - Cancel an active workflow run (reply to notification).
  • /logs - Get a link to workflow run logs.

Releases

  • /release - View details for the latest release.
  • /release create <tag> - Create a new release with automatically generated notes.
  • /changelog [tag] - Generate release notes / changelog for a tag or next release.

Discussions

  • /discussion <Title> - Create a new discussion (supports multi-line body).
  • /answered - Mark a discussion comment as the answer (reply to notification).

Search

  • /find <keyword> - Search issues within the repository.
  • /pr <keyword> - Search pull requests within the repository.
  • /search <keyword> - Search repository code.

Notifications & Statistics

  • /mute - Mute notifications for the current forum topic/thread.
  • /done - Mark corresponding GitHub notification as done (reply to notification).
  • /read - Mark corresponding GitHub notification as read (reply to notification).
  • /stats - Show repository summary statistics (stars, forks, open issues/PRs, contributors).
  • /activity - Show recent activity stream for the repository.

Settings & System

  • /settings, /config - Manage event notification preferences for linked repositories.
  • /reload - Reload administrator permission cache (Admins only).
  • /privacy - View data privacy policy.
  • /help - View complete command list and usage help.

Contributing

Pull requests are welcome! Please ensure you follow standard Go coding practices, update documentation, and verify tests pass before submitting.

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Maintainer

Maintained by:AshokShau
Telegram:https://t.me/FallenProjects

Bug / Issue Tracking

If you encounter a bug or unexpected behavior, please open an issue on GitHub with detailed reproduction steps and logs.

Support

For general queries, announcements, and support, join our channel on Telegram.


⭐ If this project helps you, consider giving it a star.

About

Get notifications about events in your GitHub repositories and post comments directly from Telegram.

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages