通过 Telegram 监控任意 GitHub 公有仓库
- Push 监控 - 实时接收新提交通知
- Release 监控 - 新版本发布提醒
- Issue 监控 - Issue 创建/关闭/重开通知
- Pull Request 监控 - PR 状态变更提醒
- 监控任意公有仓库 - 不需要仓库管理权限
- 持久化存储 - SQLite 数据库存储订阅信息
- 代理支持 - 支持 HTTP/SOCKS5 代理访问 Telegram API (v1.2.0+)
- 时区配置 - 自定义通知时间显示格式 (v1.2.0+)
- 清爽通知格式 - Emoji 标签 + 自动清理 Markdown 格式 (v1.2.0+)
githubbot/
├── cmd/bot/ # 程序入口
├── internal/
│ ├── config/ # 配置管理
│ ├── github/ # GitHub API、Webhook 和轮询
│ ├── notifier/ # 通知服务
│ ├── storage/ # 数据存储
│ └── telegram/ # Telegram Bot
├── pkg/logger/ # 日志工具
├── configs/ # 配置文件
├── Dockerfile
└── docker-compose.yml
| 模式 | 说明 | 适用场景 |
|---|---|---|
| polling (推荐) | 定时轮询 GitHub API | 监控任意公有仓库 |
| webhook | 接收 GitHub 推送 | 仅限有管理权限的仓库 |
| both | 同时启用两种模式 | 混合场景 |
推荐使用 polling 模式,因为它可以监控任何公有仓库,无需配置 Webhook。
- Go 1.21+
- Telegram Bot Token (从 @BotFather 获取)
- GitHub Personal Access Token (可选,但强烈建议)
-
克隆仓库
git clone https://github.com/your-username/githubbot.git cd githubbot -
安装依赖
go mod download
-
配置
cp configs/config.example.yaml configs/config.yaml # 编辑 config.yaml,填入你的配置 -
运行
go run ./cmd/bot -config configs/config.yaml
使用 Docker Hub 镜像:
# 1. 拉取镜像
docker pull gemiluxvii/github-telegram-bot:latest
# 2. 创建配置文件(重要:挂载前必须先创建文件)
mkdir -p configs data
docker run --rm gemiluxvii/github-telegram-bot:latest \
cat /app/configs/config.example.yaml > configs/config.yaml
# 3. 编辑配置文件,填入你的 Token
vi configs/config.yaml
# 4. 启动容器
docker run -d --name github-bot \
-v $(pwd)/configs/config.yaml:/app/configs/config.yaml \
-v $(pwd)/data:/app/data \
gemiluxvii/github-telegram-bot:latest使用 docker-compose:
mkdir -p configs data
docker run --rm gemiluxvii/github-telegram-bot:latest \
cat /app/configs/config.example.yaml > configs/config.yaml
vi configs/config.yaml
docker-compose up -dtelegram:
token: "YOUR_BOT_TOKEN"
debug: false
proxy: "socks5://127.0.0.1:1080" # 可选:HTTP/SOCKS5 代理
github:
token: "ghp_xxxx" # 强烈建议设置
mode: "polling" # polling / webhook / both
poll_interval: 300 # 轮询间隔 (秒)
# 通知时区 (如 "Asia/Shanghai", "America/New_York")
timezone: "Asia/Shanghai"
database:
path: "./data/bot.db"
server:
host: "0.0.0.0"
port: 8080如果你所在地区无法直接访问 Telegram,可以配置代理:
| 代理类型 | 示例 |
|---|---|
| HTTP | http://127.0.0.1:7890 |
| SOCKS5 | socks5://127.0.0.1:1080 |
| 带认证 | socks5://user:pass@127.0.0.1:1080 |
常用时区:
| 时区 | 说明 |
|---|---|
UTC |
协调世界时 (默认) |
Asia/Shanghai |
中国标准时间 (UTC+8) |
Asia/Tokyo |
日本标准时间 (UTC+9) |
America/New_York |
美国东部时间 |
Europe/London |
英国时间 |
格式: GHBOT_<SECTION>_<KEY>
export GHBOT_TELEGRAM_TOKEN="your-bot-token"
export GHBOT_GITHUB_TOKEN="ghp_xxxx"
export GHBOT_GITHUB_MODE="polling"- 无 Token: 60 次请求/小时
- 有 Token: 5000 次请求/小时
获取地址: https://github.com/settings/tokens
| 命令 | 说明 |
|---|---|
/start |
显示欢迎信息 |
/help |
显示帮助文档 |
/subscribe <owner/repo> |
订阅仓库 |
/unsubscribe <owner/repo> |
取消订阅 |
/list |
查看当前订阅 (带快捷取消按钮) |
/status |
显示 Bot 状态和 API 配额 |
/test |
预览所有通知格式 |
快捷命令: /sub, /unsub
/subscribe torvalds/linux
/subscribe microsoft/vscode
/subscribe golang/go
MIT License