🤖 一个现代化的Telegram群组验证机器人,通过人机验证自动管理群组成员申请。
- 🔐 安全验证 - 集成多种人机验证服务,有效防止机器人
- ⚡ 自动处理 - 验证通过后自动批准用户加群
- 🌐 Mini Web App - 美观的Telegram Mini Web App界面
- 🏗️ 可扩展架构 - 支持多种验证码服务,易于扩展
- 📊 管理功能 - 完整的统计和管理命令
- 🐳 容器化部署 - Docker支持,一键部署
- 🔧 高性能 - 基于Python 3.13 + aiogram + FastAPI
| 驱动 | 描述 | 配置要求 |
|---|---|---|
| hCaptcha | 隐私友好的人机验证服务 | site_key, secret_key |
| Cap.js | 基于Proof-Of-Work的验证码解决方案 | server_url, site_key, secret_key |
| Turnstile | Cloudflare的免费人机验证服务 | site_key, secret_key |
- 🔄 自动切换 - 根据配置自动选择验证码服务
- 🎨 统一界面 - 所有驱动使用相同的用户界面
- ⚙️ 灵活配置 - 支持独立配置每个验证码服务
- 🔧 易于扩展 - 基于抽象接口,轻松添加新驱动
内容待补充 - 这里将提供使用现有TGuard服务的详细教程
- Docker & Docker Compose
# 下载配置文件
wget https://github.com/SideCloudGroup/TGuard/raw/refs/heads/main/config.example.toml -O config.toml
wget https://github.com/SideCloudGroup/TGuard/raw/refs/heads/main/docker-compose.yml
# 编辑配置文件,填入你的密钥
nano config.toml
# 启动服务
docker-compose up -d编辑 config.toml 文件,参考 config.example.toml 中的详细注释进行配置:
- Bot Token: 从 @BotFather 获取
- 验证码服务: 选择 hCaptcha 或 Cap.js,并填入相应密钥
- 数据库: 默认使用 PostgreSQL,可根据需要调整
- API域名: 更新为你的实际域名
- 将机器人添加到群组
- 给机器人管理员权限
- 开启群组的"批准新成员"功能
- 用户申请加群 → Bot接收到join request
- 发送验证链接 → 用户收到Mini Web App链接
- 完成人机验证 → 用户在Web App中通过验证码
- 自动批准入群 → 验证成功后自动加入群组
POST /api/v1/verify- 提交验证GET /api/v1/verification-status/{token}- 查询验证状态GET /api/v1/captcha-config- 获取验证码配置
GET /health- 基础健康检查GET /health/detailed- 详细健康检查
GET /verify?token={token}- 验证页面GET /- 主页
TGuard/
├── src/
│ ├── bot/ # Telegram Bot
│ │ ├── handlers/ # 消息处理器
│ │ └── main.py # Bot入口
│ ├── api/ # FastAPI后端
│ │ ├── routes/ # API路由
│ │ ├── services/ # 业务服务
│ │ └── main.py # API入口
│ ├── database/ # 数据库
│ │ ├── models.py # 数据模型
│ │ ├── operations.py # 数据库操作
│ │ └── connection.py # 连接管理
│ ├── captcha/ # 验证码服务
│ │ ├── base.py # 抽象接口
│ │ ├── hcaptcha.py # hCaptcha实现
│ │ ├── cap.py # Cap.js实现
│ │ └── factory.py # 工厂模式
│ ├── config/ # 配置管理
│ └── utils/ # 工具函数
├── templates/ # HTML模板
├── static/ # 静态文件
├── database/ # 数据库脚本
├── config.toml # 配置文件
├── requirements.txt # Python依赖
├── docker-compose.yml # Docker配置
└── Dockerfile # Docker镜像
TGuard采用抽象接口设计,轻松支持新的验证码服务:
from src.captcha.base import CaptchaProvider, CaptchaVerificationResult
class YourCaptchaProvider(CaptchaProvider):
@property
def provider_name(self) -> str:
return "your_captcha"
async def verify(self, response: str, **kwargs) -> CaptchaVerificationResult:
# 实现验证逻辑
# 返回 CaptchaVerificationResult 对象
pass
def get_frontend_config(self) -> Dict[str, Any]:
# 返回前端配置
# 包含验证码服务所需的所有配置
pass- 在
src/captcha/目录下创建新的驱动文件 - 继承
CaptchaProvider基类并实现必要方法 - 在
src/captcha/factory.py中注册新驱动 - 在
src/config/settings.py中添加配置支持 - 更新前端模板以支持新的验证码服务
- 用户信息、申请时间、验证状态
- 处理状态:pending/approved/rejected/expired
- 验证令牌、过期时间、验证结果
- IP地址、用户代理等安全信息
- 群组配置、超时设置、消息模板
# 运行健康检查
curl http://localhost:8000/health
# 测试验证码配置
curl http://localhost:8000/api/v1/captcha-config欢迎提交Issues和Pull Requests!
MIT License - 详见 LICENSE 文件
⚡ TGuard - 让Telegram群组管理更简单、更安全!