mirror of
https://github.com/yanguo888/fakabot.git
synced 2026-06-20 12:30:40 +00:00
6.6 KiB
Executable File
6.6 KiB
Executable File
📁 项目结构说明
核心文件
主程序
bot.py(37KB) - 主程序入口,Flask服务器,支付回调处理user_flow.py(58KB) - 用户交互流程,订单创建,支付处理admin_panel.py(103KB) - 管理员面板,商品管理,订单管理
支付模块
payments.py(6.7KB) - 支付统一接口payments_lemzf_official.py(11KB) - 柠檬支付官方对接
缓存和限流
redis_cache.py(7.6KB) - Redis缓存模块rate_limiter.py(6.3KB) - 频率限制模块
工具模块
utils.py(15KB) - 工具函数,数据库操作screenshot_utils.py(12KB) - 支付页面截图
配置文件
config.json(1.8KB) - 主配置文件(需自行配置)requirements.txt(176B) - Python依赖Dockerfile(832B) - Docker镜像构建docker-compose.yml(735B) - Docker编排配置
文档
README.md- 项目说明CHANGELOG.md- 更新日志DEPLOY.md- 部署文档.gitignore- Git忽略文件
目录结构
fakabot/
├── 📄 核心代码
│ ├── bot.py # 主程序(Flask + Telegram Bot)
│ ├── user_flow.py # 用户流程处理
│ ├── admin_panel.py # 管理员面板
│ ├── payments.py # 支付处理
│ ├── payments_lemzf_official.py # 柠檬支付
│ ├── redis_cache.py # Redis缓存
│ ├── rate_limiter.py # 频率限制
│ ├── utils.py # 工具函数
│ └── screenshot_utils.py # 截图工具
│
├── ⚙️ 配置文件
│ ├── config.json # 主配置(需配置)
│ ├── requirements.txt # Python依赖
│ ├── Dockerfile # Docker镜像
│ └── docker-compose.yml # Docker编排
│
├── 📚 文档
│ ├── README.md # 项目说明
│ ├── CHANGELOG.md # 更新日志
│ ├── DEPLOY.md # 部署文档
│ ├── PROJECT_STRUCTURE.md # 项目结构(本文件)
│ └── .gitignore # Git忽略
│
└── 💾 数据目录(运行时生成)
└── data/
└── fakabot.db # SQLite数据库
代码模块说明
bot.py - 主程序
功能:
- Flask Web服务器
- Telegram Bot初始化
- 支付回调处理(柠檬支付/TOKEN188)
- 订单超时管理
- 健康检查接口
关键函数:
pay_callback()- 支付回调处理handle_token188_callback()- TOKEN188回调job_cancel_expired()- 订单超时取消_mark_paid_and_deliver()- 标记已支付并发货
user_flow.py - 用户流程
功能:
- 用户命令处理(/start, /shop等)
- 商品列表展示
- 支付方式选择
- 订单创建和预加载
- 支付链接生成
- 订单查询
关键函数:
cb_pay()- 支付方式选择_preload_payment_order()- 预加载订单_create_payment_order()- 创建支付订单cb_payment_announcement_ack()- 支付公告确认cb_order_list()- 订单列表
admin_panel.py - 管理员面板
功能:
- 商品管理(增删改查)
- 订单管理
- 用户管理
- 统计数据
- 系统设置
关键功能:
- 商品上下架
- 订单状态修改
- 数据统计
- 配置管理
payments.py - 支付处理
功能:
- 支付统一接口
- 支付网关对接
- 签名生成和验证
redis_cache.py - Redis缓存
功能:
- Redis连接管理
- 缓存读写
- 自动过期
- 降级处理
缓存类型:
- 商品信息(5分钟)
- 配置信息(10分钟)
- 用户会话(1小时)
rate_limiter.py - 频率限制
功能:
- 用户操作限流
- IP限流
- 自动重置
- 降级处理
限制规则:
- 用户命令:20次/分钟
- 创建订单:5次/5分钟
- 查询订单:10次/分钟
- IP回调:100次/分钟
utils.py - 工具函数
功能:
- 数据库操作
- 消息发送
- 键盘生成
- 设置管理
screenshot_utils.py - 截图工具
功能:
- 支付页面截图
- 二维码生成
- Selenium自动化
数据库表结构
products - 商品表
- id, name, price, cover_url, full_description, status
orders - 订单表
- id, user_id, product_id, amount, payment_method, status, out_trade_no, create_time
card_keys - 卡密表
- id, product_id, card_key, status
settings - 设置表
- key, value
last_msgs - 最后消息表
- chat_id, message_id
usdt_transactions - USDT交易表
- id, out_trade_no, transaction_id, from_address, amount, create_time
配置说明
config.json
{
"BOT_TOKEN": "Telegram Bot Token",
"ADMIN_ID": 管理员用户ID,
"DOMAIN": "域名",
"USE_WEBHOOK": true/false,
"WEBHOOK_PATH": "/tg/webhook",
"ORDER_TIMEOUT_SECONDS": 3600,
"SHOW_QR": false,
"STRICT_CALLBACK_SIGN_VERIFY": true,
"ENABLE_PAYMENT_SCREENSHOT": true,
"PAYMENTS": {
"alipay": {...},
"wxpay": {...},
"usdt_lemon": {...},
"usdt_token188": {...}
}
}
环境变量
Docker环境变量
TZ- 时区(Asia/Shanghai)REDIS_HOST- Redis主机(redis)REDIS_PORT- Redis端口(6379)DATA_DIR- 数据目录(/app/data)
端口说明
58001- Flask Web服务器(支付回调)58002- 备用端口6379- Redis(容器内部)
文件大小统计
| 文件 | 大小 | 说明 |
|---|---|---|
| admin_panel.py | 103KB | 管理员面板 |
| bot.py | 37KB | 主程序 |
| user_flow.py | 58KB | 用户流程 |
| utils.py | 15KB | 工具函数 |
| screenshot_utils.py | 12KB | 截图工具 |
| payments_lemzf_official.py | 11KB | 柠檬支付 |
| redis_cache.py | 7.6KB | Redis缓存 |
| rate_limiter.py | 6.3KB | 频率限制 |
| payments.py | 6.7KB | 支付处理 |
总代码量: ~256KB
依赖说明
Python依赖
- python-telegram-bot[job-queue,webhooks]==20.6
- Flask==3.0.3
- requests==2.31.0
- qrcode==7.4.2
- Pillow==10.2.0
- waitress==2.1.2
- selenium==4.15.0
- webdriver-manager==4.0.1
- redis==5.0.1
系统依赖
- Python 3.11
- Redis 7
- Chromium(用于截图)
开发建议
代码规范
- 使用Python 3.11+
- 遵循PEP 8规范
- 添加类型注解
- 编写文档字符串
测试
- 单元测试
- 集成测试
- 支付回调测试
部署
- 使用Docker部署
- 配置反向代理(Nginx)
- 启用HTTPS
- 定期备份数据库
项目整理完成! ✨