
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-botPython 版本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://你的域名,无尾斜杠,必须 HTTPSCURRENCY可选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,与宝塔项目端口一致即可;防火墙不要放行