Files
fakabot/PROJECT_STRUCTURE.md
T
2025-10-18 13:15:13 +08:00

302 lines
6.6 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📁 项目结构说明
## 核心文件
### 主程序
- `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
```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
- 定期备份数据库
---
**项目整理完成!**