本文将手把手教你部署 tgbot-verify 项目。这是一个基于 Telegram 的自动化工具,用于处理 SheerID 的学生/教师身份验证。
项目地址:https://github.com/PastKing/tgbot-verify?tab=readme-ov-file
本教程特别解决了以下两个痛点:
没有数据库环境:通过 Docker Compose 自动创建 MySQL 容器。
认证被拒绝 :无需更换账号或重新注册 Google/OpenAI 账号。
🎯 支持的认证服务

🛠️ 前置准备
在开始之前,请确保你拥有:
一台美国IP的 Linux 服务器(推荐 Debian 12 或 Ubuntu 22.04)。
已安装 Docker 和 Docker Compose。
Telegram Bot Token(通过 @BotFather 获取)和你的 Admin ID(通过 @userinfobot 获取)。
第一步:获取项目代码
登录服务器,拉取项目源码:
Bash
git clone https://github.com/PastKing/tgbot-verify.git
cd tgbot-verify
第二步:配置环境变量
复制示例配置文件并编辑:
Bash
cp env.example .env
nano .env
请修改 .env 文件,填入你的 Bot 信息。注意:数据库部分请严格按照下方填写,以便连接到我们即将创建的数据库容器。
Ini, TOML
# --- Telegram Bot 配置 ---
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 # 替换为你的 Token(通过 @BotFather 获取)
CHANNEL_USERNAME=my_channel_name # 替换为你的频道用户名 (不带@)
CHANNEL_URL=https://t.me/my_channel_name # 替换为你的频道链接
ADMIN_USER_ID=123456789 # 替换为你的数字 ID(通过 @userinfobot 获取)
# --- MySQL 数据库配置 (保持如下配置,不要改动 Host) ---
# MYSQL_HOST 必须填 'db',这是 Docker 内部的服务名称
MYSQL_HOST=db
MYSQL_PORT=3306
MYSQL_USER=tgbot_user
MYSQL_PASSWORD=tgbot_secure_pass
MYSQL_DATABASE=tgbot_verify
第三步:创建 Docker Compose 文件 (含代理配置)
这是最关键的一步。我们需要创建一个 docker-compose.yml 文件,它包含数据库、机器人以及解决风控所需的代理配置。
在项目根目录下新建文件:
Bash
nano docker-compose.yml
复制并粘贴以下内容(注意修改代理部分):
YAML
version: '3.8'
services:
# 数据库服务 (新增部分)
db:
image: mysql:5.7
container_name: tgbot-mysql
environment:
MYSQL_ROOT_PASSWORD: root_secure_password # Root 密码,可自行修改
MYSQL_DATABASE: tgbot_verify # 必须与 .env 一致
MYSQL_USER: tgbot_user # 必须与 .env 一致
MYSQL_PASSWORD: tgbot_secure_pass # 必须与 .env 一致
volumes:
- ./mysql_data:/var/lib/mysql # 将数据库数据持久化到当前目录
networks:
- tgbot_net
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
# 机器人服务 (原项目)
bot:
build: .
container_name: tgbot-verify
env_file:
- .env
environment:
- MYSQL_HOST=db # 强制指定连接到上面的 db 服务
volumes:
- ./logs:/app/logs
# 如果你需要修改内部配置代码,可以挂载这两个目录
- ./one:/app/one
- ./k12:/app/k12
- ./spotify:/app/spotify
- ./youtube:/app/youtube
- ./Boltnew:/app/Boltnew
depends_on:
db:
condition: service_healthy # 等待数据库完全启动后再启动机器人
networks:
- tgbot_net
restart: always
networks:
tgbot_net:
driver: bridge第四步:启动服务
使用 Docker Compose 一键启动所有服务:
Bash
# 如果提示 docker-compose 未找到,请尝试使用 `docker compose up -d`
docker compose up -d
查看日志,确保没有报错:
Bash
docker compose logs -f
如果看到 Bot started 且没有数据库连接错误,说明部署成功!

此教程为您的机器人添加了针对以下服务的详细认证流程说明。请注意,SheerID 的认证核心逻辑都是通用的,区别主要在于入口链接获取和所需身份材料。
新增认证服务详细流程
1. Gemini One Pro (Google AI Premium) 认证
对应指令:/verify
Google 目前为高校学生提供 12 个月的 Google One AI Premium (包含 Gemini Advanced) 免费试用。
前置要求:
建议使用干净的 Google 账号(未加入家庭组)。
获取链接流程:
浏览器(无痕模式)访问 Google One 学生优惠页面: https://gemini.google/tw/students/?hl=zh-TW 点击 【获取优惠】。
登录您的 Google 账号。
点击页面上的 "Verify student status" (验证学生身份) 按钮。
页面会跳转到 SheerID 的验证表单。
关键步骤:此时复制浏览器地址栏中的长链接(包含
verificationId),发送给机器人。
所需材料:
.edu邮箱(如有)。包含当前学期日期的录取通知书、成绩单或学生证。
2. ChatGPT Teacher K12 认证
对应指令:/verify2
OpenAI 为美国 K-12 (幼儿园至高中) 的教师提供免费的 ChatGPT Plus 功能(即 ChatGPT for Teachers)。
前置要求:
必须使用 美国 (US) IP 地址。
仅限 K-12 教师,大学教授通常需申请 ChatGPT Edu。
获取链接流程:
直接访问官方验证页面:
https://chatgpt.com/k12-verification点击开始验证,跳转至 SheerID 界面。
关键步骤:复制浏览器地址栏中的
https://services.sheerid.com/verify/...完整链接,发送给机器人。
所需材料:
教师工卡 (Teacher ID)。
或者最近 90 天内的工资单 (Pay stub),需包含学校名称和您的姓名。
学校官网的教师名录截图(包含您的名字和职位)通常也有效。
3. Spotify Student 认证
对应指令:/verify3
Spotify 学生会员认证,通常包含 Hulu (仅限美国) 和 Showtime。
前置要求:
IP 地址必须与您想要开通的 Spotify 账号所在国家一致(推荐美区账号用美国 IP)。
获取链接流程:
访问
https://www.spotify.com/us/student/。点击 "Get Premium Student" 或 "Try free for 1 month"。
登录您的 Spotify 账号。
在跳转到 SheerID 填写学校信息的页面时,不要填写,直接复制浏览器地址栏的长链接。
将链接发送给机器人。
所需材料:
本学期的课程表 (Class Schedule)。
或者是显示当前日期的成绩单 (Transcript)。
注意:Spotify 对文档审核较严,单纯的学生证 (ID Card) 如果没有明确的有效期通常会被拒。
4. Bolt.new Teacher 认证
对应指令:/verify4
Bolt.new (StackBlitz) 的教育优惠,通常通过 GitHub Student Developer Pack 或直接的 SheerID 验证提供 Pro 功能。
获取链接流程:
访问 Bolt.new 或 StackBlitz 的教育定价页面(如未直接提供入口,通常在
Settings->Plans中查找 "Education" 或 "Teacher" 选项)。注意:由于 Bolt.new 较新,如果未找到直接入口,该指令可能通用适配于 Autodesk 或 Figma 的教师认证流程(因为它们共享相似的 SheerID
programId逻辑)。若为标准 SheerID 流程,进入验证页面后复制 URL 发送给机器人。
所需材料:
教师资格证。
聘书或学校出具的在职证明 (Official Letter)。
学校官方邮箱验证通常能提高通过率。
5. YouTube Premium Student 认证
对应指令:/verify5
特别说明:YouTube 的认证链接由
programId和verificationId动态组成,不能直接复制地址栏,需要手动抓取。获取链接流程:
电脑浏览器按
F12打开开发者工具,切换到 Network (网络) 标签。访问
https://www.youtube.com/premium/student。点击 "Try it for free" (免费试用)。
在 Network 面板的搜索框输入
verification。找到类似
https://services.sheerid.com/rest/v2/verification/...的请求。查看该请求的 Response (响应) 或 Payload,找到
"verificationId": "xxxxxxxx"和"programId": "xxxxxxxx"。手动拼接链接:
https://services.sheerid.com/verify/YOUR_PROGRAM_ID/?verificationId=YOUR_VERIFICATION_ID将拼接好的链接发送给机器人。
所需材料:
SheerID 在 YouTube 上的审核非常依赖 "当前学期" 的证明。
推荐上传:包含姓名、学校、当前日期的注册缴费单 (Tuition receipt) 或 官方入学信 (Enrollment letter)。
🔧 常见报错与修复指南
在使用过程中,你可能会遇到以下两个主要错误,请对号入座进行修复。
适用范围:Gemini One Pro / ChatGPT Teacher K12
⚠️ 重要提示
由于 Gemini One Pro 和 ChatGPT Teacher K12 采用的是基于文档的验证方式,认证过程中出现失败属于正常现象。请保持耐心,按照以下步骤操作即可。
🔄 认证失败时的标准处理流程
当认证失败时,无需更换账号或重新注册 Google/OpenAI 账号。请按以下步骤“重置”认证链接:
手动干扰验证
在浏览器中打开当前的 SheerID 验证页面。
在上传文档的步骤,持续上传纯色图片(例如纯黑色或纯白色的图片)。
触发链接失效
连续提交无效图片后,SheerID 系统会判定当前验证链接失效。
生成新链接
链接失效后,系统通常会引导您重新开始,从而生成一个新的 SheerID 认证链接。
机器人重试
复制这个新的链接。
将新链接发送给 Telegram 机器人,机器人将使用新链接为您进行下一轮认证尝试。
🚫 常见错误代码排查
错误:Step 2 Failure (400): invalidStep
报错示例:
JSON
步骤 2 失败 (状态码 400): {
'verificationId': '6927a491fc1f830b9018a9d8',
'currentStep': 'error',
'errorIds': ['invalidStep'],
...
'systemErrorMessage': "Verification with id ... can not perform step 'COLLECT_STUDENT_PERSONAL_INFO'"
}
原因分析:
错误代码
invalidStep意味着当前的 SheerID 链接状态异常。机器人试图执行“提交个人信息”的步骤,但链接当前并不处于“填写个人信息表单”的页面(可能是已经过期的页面,或者是其他步骤的页面)。
解决方案:
检查链接:请自行在浏览器中打开该链接。
确认页面:确保链接打开后,直接显示的是提交学生/教师个人信息的表单页面。
重置链接:如果页面不对,请严格按照上文 “认证失败时的标准处理流程” 操作(上传纯色图片 -> 触发失效 -> 生成新链接 -> 发送给机器人)。
⚠️ 重要说明
🔴 使用前必读
在使用机器人之前,请务必检查并更新各模块的验证配置!
由于 SheerID 平台的 programId 可能会定期更新,使用前请确认以下配置文件中的 PROGRAM_ID 是否为最新:
one/config.py- Gemini One Pro 认证k12/config.py- ChatGPT Teacher K12 认证spotify/config.py- Spotify Student 认证youtube/config.py- YouTube Premium Student 认证Boltnew/config.py- Bolt.new Teacher 认证
如何获取最新的 programId:
访问对应服务的认证页面
打开浏览器开发者工具(F12)→ 网络(Network)标签
开始认证流程
查找
https://services.sheerid.com/rest/v2/verification/请求从 URL 或请求载荷中提取
programId更新对应模块的
config.py文件
提示:如果认证一直失败,很可能是
programId已过期,请按上述步骤更新。
评论区