![图片[1]|Telegram 付费入群机器人代码,审计报告 & 宝塔部署教程|不死鸟资源网](https://busi.net/wp-content/uploads/2026/09/20260906082004909-image.png)
Telegram 付费入群机器人
代码审计报告 & 宝塔部署教程
项目:telegram-paid-group-verify(Python 3.10+ / python-telegram-bot v22 / aiohttp / OkPay)
🛡️ 安全审计:通过(无后门)⚠️ 1 项高危需立即处理📢 品牌文案:狗凯源码库 bbbb.bid🚀 宝塔部署 8 步走
0
后门 / 恶意代码
1
高危:Bot Token 泄露
2
中危:配置与数据残留
8 步
宝塔部署教程
一、代码审计结论
对全部 24 个 Python 文件、配置、CI 工作流逐行审计,未发现后门或恶意行为:
| 审计项 | 结果 | 结论 |
|---|---|---|
| 后门 / 恶意代码 | 全库无 eval / exec / subprocess / 隐蔽 socket 外连 / base64 解码执行,依赖仅 3 个正规库(python-telegram-bot、aiohttp、python-dotenv) | 安全 |
| 数据外传 | 唯一外部请求为 OkPay 商户 API(api.okaypay.me),与业务一致 | 安全 |
| 支付回调验签 | HMAC-SHA256 + hmac.compare_digest 恒定时间比较;验签失败回 400,防伪造到账 | 规范 |
| 结算幂等性 | 同一订单不会重复发链接 / 重复记返利;订单超时前主动查单兜底 | 规范 |
| 权限控制 | /stats /paytest /config 及返利确认均校验 ADMIN_IDS;回调按钮二次校验 | 规范 |
| ⚠️ Bot Token 泄露 | .env 内含真实 BOT_TOKEN(源码包作者遗留)。任何人拿到即完全控制机器人 | 高危 |
| 数据残留 | data/store.json 含原作者测试用户数据(已按需求原样保留,上线前可自行决定是否清空) | 已保留 |
| 杂项 | 根目录 package-lock.json 与 __pycache__ 为无用文件,可删除;.github/workflows/ci.yml 仅做语法检查,无风险 | 建议清理 |
⚠️ 部署前必做:立即到 Telegram @BotFather → /mybots → 选择机器人 → API Token → Revoke current token 换新 Token,旧 Token 视为已泄露。同时 .env 里的原作者 ADMIN_IDS、SUPPORT_URL、NOTIFY_USERNAME 等要全部换成自己的,否则原作者可能收到订单通知。
二、宝塔面板部署教程(8 步)
1
准备材料
部署前凑齐以下 5 样:
| 材料 | 获取方式 |
|---|---|
| Bot Token | @BotFather → /newbot(换掉泄露的旧 Token) |
| 你的 Telegram 数字 ID | 私聊 @userinfobot |
| 目标付费群 ID | -100 开头的超级群 ID,拉机器人进群发 /id 获取 |
| OkPay 商户 | 商户机器人开通,拿到 App ID + Token |
| 域名一个 | 如 pay.example.com,A 记录解析到服务器 IP(回调必须 HTTPS) |
机器人必须是目标群的管理员,并勾选「邀请用户」权限,否则无法生成进群链接。
2
上传代码 + 安装依赖
宝塔面板 → 文件 → 上传本项目到 /www/wwwroot/paid-group-bot(或用终端 git 拉取),然后在宝塔终端执行:
# 进入目录并创建虚拟环境 cd /www/wwwroot/paid-group-bot python3 -m venv .venv source .venv/bin/activate pip install -U pip pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
要求 Python ≥ 3.10(推荐 3.11/3.12)。宝塔「Python 项目管理器」若无合适版本,先在管理器里安装。
3
配置 .env(重点,必改项见下表)
编辑项目根目录 .env,至少修改以下 7 项:
BOT_TOKEN=# 新申请的 Token(旧 Token 已泄露,必须换) ADMIN_IDS=# 你自己的 Telegram 数字 ID(删掉原作者的 1351132825) TARGET_GROUP_ID=# 你的付费群 ID(-100 开头) CHANNEL=# 欢迎语频道展示,可写 @你的频道 或留空 SUPPORT_URL=# 你的客服链接 https://t.me/你的客服号 NOTIFY_USERNAME=# 你的展示用户名(不含@,删掉原作者的 kzrrr) WEBHOOK_PUBLIC_BASE=# https://pay.example.com(换成你的域名,无尾斜杠)
OkPay 收款需另填 OKPAY_APP_ID 与 OKPAY_TOKEN;只跑 /paytest 演示可不填。
4
宝塔创建 Python 项目(进程守护)
宝塔面板 → 网站 → Python 项目 → 添加 Python 项目:
| 配置项 | 填写 |
|---|---|
| 项目路径 | /www/wwwroot/paid-group-bot |
| Python 版本 | 3.11 或 3.12 |
| 启动方式 | 命令启动(不要选 gunicorn/wsgi) |
| 启动命令 | /www/wwwroot/paid-group-bot/.venv/bin/python -m bot.main |
| 端口 | 8090(对应 .env 的 WEBHOOK_PORT) |
| 虚拟环境 | 选项目下的 .venv(管理器会自动带 –require-virtualenv 时用此项) |
关键:启动方式必须选「命令启动」+ python -m bot.main。这个机器人是 long polling 模式,webhook 回调服务和 Bot 在同一进程,用 gunicorn 托管启动文件会跑不起来。启动后到「日志」确认看到 机器人启动完成:@xxx。
5
新建网站 + 反向代理
宝塔 → 网站 → 添加站点:域名填 pay.example.com,纯静态即可,不建数据库、不建 FTP。然后:
# 方式一:站点设置 → 反向代理 → 添加反向代理
目标 URL:http://127.0.0.1:8090
发送域名:$host
# 方式二(等价):直接在站点配置文件里加:
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
6
申请 SSL 证书(必须)
站点设置 → SSL → Let’s Encrypt → 勾选域名 → 申请,并开启「强制 HTTPS」。OkPay 回调地址必须是公网 HTTPS:
https://pay.example.com/pay/okpay/callback
安全建议:宝塔防火墙 / 安全组里不要放行 8090 端口,让回调只走 Nginx 反代,外网无法直连后端。
7
OkPay 后台登记回调
OkPay 商户后台 / 商户机器人里,把全局回调地址设为上面那条回调 URL,同时 .env 保持:
OKPAY_SEND_CALLBACK_URL=false
后台已有全局回调时,下单再传 callback_url 会被 OkPay 拒绝(报「callback_url 参数验证失败」),保持 false 即可。
8
验收 & 日常运维
按下面清单逐项打勾,全部通过即可开张:
进程存活:宝塔 Python 项目状态为「运行中」
健康检查:浏览器访问 https://pay.example.com/health 返回 {"status":"ok"}
机器人私聊:发 /start,看到欢迎语(含狗凯源码库品牌)+ 底部四键菜单
群权限:在群里发 /id 拿到群 ID 回填 .env 并重启项目
演示闭环:管理员发 /paytest,能收到一次性进群链接
真实支付:点「付费进群」→ OkPay 付款 → 自动收到进群链接
返利链路:邀请链接拉新 → 好友付费 → 管理员确认 → OkPay 出款
日常运维:改 .env 后在宝塔项目里点「重启」;定期备份 data/store.json(所有用户/订单/返利数据都在这一个文件里);看日志用宝塔项目「日志」或 journalctl。
三、.env 配置修改对照表
| 变量 | 必改 | 说明 |
|---|---|---|
BOT_TOKEN | 必须 | 换新 Token(旧的在源码包里已泄露) |
ADMIN_IDS | 必须 | 删掉原作者 1351132825,填自己的数字 ID,多个逗号分隔 |
TARGET_GROUP_ID | 必须 | -100 开头的付费群 ID;先填 0 启动后拉群发 /id 获取 |
CHANNEL | 建议 | 原作者写「源码分享网测试」,换成你的频道或留空 |
SUPPORT_URL / SUPPORT_USERNAME / NOTIFY_USERNAME / ADMIN_USERNAME | 建议 | 原作者均为 kzrrr,全部换成自己的 |
WEBHOOK_PUBLIC_BASE | 必须 | https://你的域名,无尾斜杠,必须 HTTPS |
CURRENCY | 可选 | USDT / TRX / CNY,与 OkPay 商户能力一致 |
PRICE_TIERS / PRICE_DEFAULT | 可选 | 阶梯定价:默认前 20 人 66U、之后 88U,按需修改(也可上线后 /config 在线改) |
REBATE_RATE | 可选 | 返利比例,默认 0.1(10%) |
ORDER_TTL_SECONDS | 可选 | 订单有效期,默认 90 秒 |
OKPAY_APP_ID / OKPAY_TOKEN | 收款必填 | OkPay 商户机器人「商户信息」里查看;Token 仅本地算签勿泄露 |
OKPAY_SEND_CALLBACK_URL | 保持 | 保持 false,回调走 OkPay 后台全局配置 |
WEBHOOK_PORT | 保持 | 默认 8090,与宝塔项目端口一致即可;防火墙不要放行 |
四、常见问题排查
| 现象 | 排查方向 |
|---|---|
| 支付成功但没收到进群链接 | 回调地址是否 200(看宝塔项目日志有无「收到 okpay 回调」);机器人是否仍有群「邀请用户」权限;TARGET_GROUP_ID 是否正确。订单超时前系统会主动查单补发 |
| 下单报 callback_url 校验失败 | 保持 OKPAY_SEND_CALLBACK_URL=false,回调统一在 OkPay 后台登记 |
| 签名失败 / 身份认证失败 | 核对 OKPAY_APP_ID、OKPAY_TOKEN;服务器开启 NTP 校时(时间偏差 ±300 秒会被拒签) |
| 无法生成进群链接 | 把机器人设为目标群管理员,勾选「邀请用户 / 管理邀请链接」权限 |
| 健康检查不通 | 先在服务器上 curl 127.0.0.1:8090/health:通则是 Nginx 反代/证书问题;不通则项目没启动,检查启动命令必须是 python -m bot.main |
| 宝塔里 gunicorn 启动失败 | 本项目不是 Web 应用,不能用 gunicorn 托管,改为「命令启动」+ .venv/bin/python -m bot.main |





