这是一个用于 Ingress 主题 Telegram 群组的入群验证 Bot。新成员加入时需要通过图片识别验证才能获得发言权限。
- 新成员自动触发验证
- 图片识别验证(从预设图片集中随机选择)
- 防 Hash 扫描的图片合成
- 可配置的验证参数
- 防刷机制(重复加入冷却)
- 管理员权限管理
- 在 Telegram 中找到 @BotFather
- 发送
/newbot创建新 Bot - 按提示设置 Bot 名称和用户名
- 保存获得的 Bot Token
- 启动 Bot 后,私聊发送
/myid - 记录返回的数字 ID
cp .env.example .env编辑 .env 文件:
TELEGRAM_BOT_TOKEN=你的Bot_Token
BOT_ADMIN_IDS=你的User_ID# 使用 Docker Compose
docker-compose up -d --build
# 或本地运行
go build -o bot ./cmd/bot
./bot将 Bot 添加到群组并设为管理员,需要以下权限:
- ✅ 删除消息
- ✅ 封禁用户
- ✅ 限制成员
至少需要 9 个不同的图片集,每个集合至少 1 张图片。
/addset Portal
/addset Resonator
/addset XMP
/addset UltraStrike
/addset PowerCube
/addset Shield
/addset LinkAmp
/addset HeatSink
/addset MultiHack
然后为每个集合添加图片(回复图片发送命令):
/addimage Portal
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
TELEGRAM_BOT_TOKEN |
✅ | - | Telegram Bot Token |
BOT_ADMIN_IDS |
推荐 | - | Bot 管理员 ID,逗号分隔 |
DATABASE_PATH |
❌ | /data/bot.db |
SQLite 数据库路径 |
IMAGE_CACHE_PATH |
❌ | /images |
图片缓存目录 |
VERIFY_IMAGE_COUNT |
❌ | 3 |
验证时显示的图片数量 |
VERIFY_REQUIRED_CORRECT |
❌ | 2 |
需要答对的数量 |
VERIFY_TIMEOUT_SECONDS |
❌ | 120 |
验证超时时间(秒) |
VERIFY_MAX_RETRY |
❌ | 1 |
最大重试次数 |
REJOIN_COOLDOWN_SECONDS |
❌ | 300 |
重新加入冷却时间(秒) |
- 图片数量 (n=3):验证时显示 3 张图片
- 通过条件 (y=2):答对 2 个即可通过
- 选项数量:9 个选项(3 个正确 + 6 个干扰)
- 超时时间:120 秒内未完成验证将被踢出
- 重试次数:失败后可重试 1 次
Bot 有两种权限检查机制:
- 通过
BOT_ADMIN_IDS环境变量配置 - 通过
/addadmin命令动态添加 - 可以在私聊中管理图片集
- 可以管理其他 Bot 管理员
- Telegram 群组的管理员/群主
- 可以在群组内管理图片集
- 不能管理 Bot 管理员
方法一:环境变量(推荐)
在 .env 文件中设置:
BOT_ADMIN_IDS=123456789,987654321多个管理员用逗号分隔。
方法二:命令添加
首先需要有一个初始管理员(通过环境变量设置),然后可以用命令添加更多:
/addadmin 123456789
- 私聊 Bot 发送
/myid - 或使用 @userinfobot
| 命令 | 说明 | 权限要求 |
|---|---|---|
/addadmin <user_id> |
添加 Bot 管理员 | Bot 管理员 |
/removeadmin <user_id> |
移除 Bot 管理员 | Bot 管理员 |
/listadmins |
列出所有 Bot 管理员 | Bot 管理员 |
| 命令 | 说明 |
|---|---|
/start |
显示欢迎信息 |
/help |
显示帮助信息 |
/myid |
获取你的 Telegram User ID |
| 命令 | 说明 | 权限要求 |
|---|---|---|
/addset <label> |
创建新图片集 | 管理员 |
/addimage <label> |
添加图片到指定集合 | 管理员 |
/listsets |
列出所有图片集 | 管理员 |
/delset <label> |
删除图片集 | 管理员 |
/setstats |
查看各集合图片数量 | 管理员 |
/test |
触发测试验证 | 管理员 |
| 命令 | 说明 | 权限要求 |
|---|---|---|
/addadmin <user_id> |
添加 Bot 管理员 | Bot 管理员 |
/removeadmin <user_id> |
移除 Bot 管理员 | Bot 管理员 |
/listadmins |
列出所有 Bot 管理员 | Bot 管理员 |
/addset Portal
- 在群组或私聊中发送一张图片
- 回复该图片,发送命令:
/addimage Portal
/setstats
输出示例:
📊 图片集统计
• Portal: 5 张
• Resonator: 3 张
• XMP: 4 张
共 3 个图片集,12 张图片
⚠️ 需要至少 9 个图片集才能正常验证
/delset Portal
- 至少 9 个不同的图片集
- 每个集合至少 1 张图片
- 建议每个集合 3-5 张图片以增加随机性
- 用户加入群组
- 立即被限制发言权限
- 收到验证消息,显示 3 张合成图片
- 依次为图片 1、2、3 选择正确的标签
- 答对 2 个以上:验证通过,恢复权限
- 答错:
- 首次失败:重新生成验证
- 再次失败:被踢出群组
- 超时未完成:被踢出群组
👋 欢迎 张三!
请在 120 秒内完成验证。
图片中显示了 3 张图片(标注 1、2、3)。
请依次为每张图片选择正确的标签。
当前:请选择图片 1 的标签
[Portal] [Resonator] [XMP]
[Shield] [LinkAmp] [HeatSink]
[PowerCube] [UltraStrike] [MultiHack]
# 1. 克隆项目
git clone <repo_url>
cd ING-reCAPTCHA
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件
# 3. 启动
docker-compose up -d --build
# 4. 查看日志
docker-compose logs -f# 1. 安装 Go 1.21+
# 2. 安装依赖
go mod download
# 3. 配置环境变量
export TELEGRAM_BOT_TOKEN=your_token
export BOT_ADMIN_IDS=your_user_id
# 4. 运行
go run ./cmd/botDocker 部署时,以下目录会被挂载:
./data/- SQLite 数据库./images/- 图片缓存
- 检查 Bot Token 是否正确
- 检查网络连接
- 查看日志:
docker-compose logs -f
- 确保 Bot 是群组管理员
- 确保 Bot 有"限制成员"权限
- 检查是否有足够的图片集(至少 9 个)
- 群组内:确保你是群组管理员
- 私聊中:确保你的 User ID 在
BOT_ADMIN_IDS中
- 确保回复的是图片消息
- 确保图片集已创建
- 检查磁盘空间
/myid
或使用 @userinfobot
如有问题,请提交 Issue 或联系管理员。