完善 Docker 部署骨架并整理开源发布资料

- 调整 Dockerfile 与入口脚本,拆分应用、MySQL、Redis 的部署职责
- 新增 docker-compose、docker ignore 与 Docker 环境变量示例
- 重写 README 并补充 Docker 部署说明与第三方资产说明
- 将后台示例账号与 webhook token 改为安全占位值,移除弱口令默认兜底
This commit is contained in:
liuwei
2026-05-06 14:44:49 +08:00
parent 53b6ddc05c
commit 9589846113
11 changed files with 508 additions and 361 deletions

445
README.MD
View File

@@ -1,366 +1,181 @@
# A-BOT 智能助手
# ABOT
A-BOT是一个功能丰富的微信机器人助手集成了多种实用功能包括AI聊天、群智闯关、积分系统、新闻推送等。支持多种AI模型集成提供消息自动回复、群管理等功能
ABOT 是一个基于插件体系构建的微信机器人项目包含消息处理主链路、管理后台、MySQL/Redis 存储、定时任务与多类 AI / 内容插件能力。当前仓库更适合有一定 Python 与部署基础的维护者进行二次开发、私有部署与功能扩展
## 📋 功能清单
## 项目定位
### 1. 群智闯关
- 面向“可持续迭代的机器人平台”,不是一次性脚本
- 核心能力包括消息接入、插件化处理、后台管理、数据归档与 AI 扩展
- 当前默认假设你具备 MySQL、Redis、Docker、环境变量配置的基础经验
- 答题游戏系统
- 积分排行榜
- 任务管理
- 实时答题反馈
## 当前主要能力
### 2. 积分交易系统
- 微信消息接入与机器人主循环
- 插件加载、启停、热更新与后台管理
- MySQL + Redis 双存储
- AI 自动回复、消息总结、成员画像等能力
- 签到、积分、排行榜、内容推送、媒体处理等业务插件
- 积分转账
- 积分查询
- 积分排行榜
- 打劫系统
- 保释功能
## 快速开始
### 3. 全球快讯
### 方式一Docker Compose
- 国际政经新闻推送
- 实时新闻更新
适合第一次快速跑通部署骨架。
### 4. AI聊天
- 智能对话
- 多模型支持Claude、DeepSeek、豆包等
- 自定义提示词模板
### 5. 媒体内容
- 秀人图片
- 猛男视频
- 美腿图片
- 音乐点播
- 抖音视频解析
### 6. 群管理功能
- 群自动邀请
- 插件管理系统
- 消息智能总结
- 数据库消息存档
### 7. 系统功能
- 每日签到系统
- 系统更新
- 视频分享
- 邮件通知系统
- 系统监控集成
## 🚀 安装说明
### 环境要求
- Python 3.10+
- MySQL 数据库
- Redis 服务
- Git用于系统更新
- 支持的操作系统Windows/Linux/MacOS
### server安装
- 复制wechat_ipad/server/下面的所有内容到你的服务器
- 修改conf下的文件[app.conf](wechat_ipad%2Fserver%2Fconf%2Fapp.conf)
- 将redis链接改成自己的redis配置
```
redislink = 192.168.2.40:6379
redispass = ""
redisdbnum = 7
```
- 配置完成之后运行server
1. 复制 Docker 环境变量示例
```bash
sudo nohup ./ipad859go > /tmp/logger.log 2>&1 &
cp .env.docker.example .env
```
### 依赖安装
Windows PowerShell
```bash
# 克隆项目
git clone https://github.com/your-username/abot.git
cd abot
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# 或
.venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 特别安装,pip 版本依赖不准确,需要单独安装
pip install pysilk-mod
```powershell
Copy-Item .env.docker.example .env
```
- 字体包安装用来支持图片合成时字体emoji等显示
2. 按实际环境修改 `.env` 中的数据库密码、`WECHAT_SERVER_URL` 等参数
3. 启动服务
```bash
sudo apt-get install -y fonts-noto-cjk fonts-noto-cjk-extra
sudo apt-get install -y fonts-noto-color-emoji fonts-noto-cjk fonts-wqy-microhei
docker compose up -d --build
```
### 主要依赖包
更多说明见 [docs/Docker部署说明.md](/d:/learn/abot/docs/Docker部署说明.md:1)。
- lxml~=5.3.0
- openai>1.0.0
- pandas~=2.2.3
- pyyaml~=6.0.2
- requests~=2.32.3
- schedule~=1.2.2
- sparkdesk-api==1.3.0
- pillow~=11.0.0
- Flask~=3.1.0
- fastapi~=0.115.12
- uvicorn~=0.34.2
- 更多依赖请查看 requirements.txt
### 方式二:本地直跑
## ⚙️ 配置说明
### 1. 配置文件
推荐先复制 `config.example.yaml` 为 `config.yaml`,再在项目根目录放置 `.env` 文件。程序启动时会自动加载该文件,不需要每次手动 `export`
1. 准备 Python 3.10+
2. 准备 MySQL、Redis
3. 复制配置文件
```bash
# Linux / Mac
cp config.example.yaml config.yaml
cp .env.example .env
```
# Windows PowerShell
Windows PowerShell
```powershell
Copy-Item config.example.yaml config.yaml
Copy-Item .env.example .env
```
`config.yaml` 现已支持 `${ENV_NAME}` / `${ENV_NAME:默认值}` 两种写法:
- `${ABOT_DB_PASSWORD}`:必须由环境变量提供,否则启动时报错
- `${ABOT_DB_HOST:127.0.0.1}`:若环境变量缺失,则回退默认值
如果项目根目录存在 `.env`,系统会先自动加载该文件,再执行 `config.yaml` 占位符解析。
启动时系统会自动执行配置完整性检查,并在日志中输出脱敏后的配置快照。包含以下主要配置项:
#### 数据库配置
```yaml
db_config:
pool_name: "${ABOT_DB_POOL_NAME:wechat_boot_pool}"
pool_size: "${ABOT_DB_POOL_SIZE:10}"
host: "${ABOT_DB_HOST:127.0.0.1}"
port: "${ABOT_DB_PORT:3306}"
user: "${ABOT_DB_USER:root}"
password: "${ABOT_DB_PASSWORD}"
database: "${ABOT_DB_NAME:message_archive}"
charset: "${ABOT_DB_CHARSET:utf8mb4}"
```
#### Redis配置
```yaml
redis_config:
host: "${ABOT_REDIS_HOST:127.0.0.1}"
port: "${ABOT_REDIS_PORT:6379}"
password: "${ABOT_REDIS_PASSWORD:}"
db: "${ABOT_REDIS_DB:0}"
decode_responses: true
```
#### ipad 客户端配置
- 修改 wechat_ipad 下的配置[config.toml](wechat_ipad%2Fconfig.toml)用于启动client
- 设备ID和name 可以为空系统会自己生成一个需要保持一个号一个ID+NAME
```
server_url = "http://192.168.2.170:8059/" #server的访问地址
wxid = ""
device_id = ""
device_name = ""
server_ip = "192.168.2.170"
server_port = "8059"
login_time = ""
```
### 2. 插件配置
#### AI聊天插件 (dify)
```yaml
Dify:
enable: true
commands: [ "ai", "dify", "聊天", "AI" ]
command-tip: "聊天 请求内容"
api-key: "your-dify-api-key"
base-url: "your-dify-base-url"
```
#### 音乐插件 (music)
```yaml
Music:
enable: true
command: [ "点歌", "音乐" ]
command-format: "点歌 歌曲名"
```
#### 群智闯关插件 (game_task)
```yaml
GameTask:
enable: true
command: [ "/s", "/t", "/a", "/r", "/l", "/h" ]
command-format: "游戏命令格式说明"
```
## 📖 使用说明
### 基础命令
1. 群智闯关
- `/s` - 加入答题游戏
- `/t` - 获取新问题
- `/a 任务ID 答案` - 回答问题
- `/r` - 查看排行榜
- `/l` - 查看活跃问题
- `/h` - 查看未解决问题
2. 积分系统
- `积分转账 积分数 @用户` - 转账积分
- `我的积分` - 查询积分
- `积分排行` - 查看排行榜
- `打劫 @用户` - 打劫积分
- `保释 @用户` - 保释用户
3. 新闻功能
- `全球新闻` - 获取国际新闻
- 支持:`国际新闻`、`环球新闻`、`政经新闻`
4. AI聊天
- `聊天 问题` - 与AI对话
- 支持:`ai`、`dify`、`AI` 开头
5. 插件管理
- `插件 列表` - 查看插件
- `插件 启用 [插件名]` - 启用插件
- `插件 禁用 [插件名]` - 禁用插件
- `插件 信息 [插件名]` - 查看插件信息
### 媒体功能
- `图来`/`秀人` - 获取图片
- `猛男` - 获取视频
- `美腿`/`腿来` - 获取美腿图片
- `点歌 歌曲名` - 点播音乐
- 直接发送抖音链接可自动解析
### 系统功能
- `签到` - 每日签到
- `更新系统` - 系统更新(管理员)
- `#总结` - 消息总结
## 📁 项目结构
```
abot/
├── admin/ # 管理后台相关代码
├── base/ # 基础功能模块
├── db/ # 数据库相关代码
├── plugins/ # 插件目录
├── resource/ # 资源文件
├── static/ # 静态文件
├── utils/ # 工具函数
├── wechat_ipad/ # 微信相关核心代码
├── config.yaml # 配置文件
├── main.py # 主程序入口
├── requirements.txt # 依赖列表
└── restart.sh # 重启脚本
```
## 🔧 开发说明
### 插件开发
1. 在 `plugins` 目录下创建新的插件目录
2. 实现 `MessagePluginInterface` 接口
3. 在 `config.toml` 中添加插件配置
4. 在插件管理器中注册插件
### 开发规范
- 遵循PEP 8编码规范
- 添加适当的中文注释
- 优先补齐文档与人工验证步骤
- 敏感配置优先使用环境变量注入
## ⚠️ 注意事项
1. 确保所有API密钥配置正确
2. 数据库和Redis服务必须正常运行
3. 建议使用虚拟环境运行项目
4. 定期检查日志文件wx_debug.log, wx_info.log, wx_error.log
5. 部分功能需要消耗积分
6. 部分功能需要管理员权限
7. 建议定期备份数据库
8. 请遵守相关法律法规使用
9. 注意API调用频率限制
## ❓ 常见问题
1. 依赖安装问题
4. 安装依赖
```bash
python -m pip install --upgrade pip
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
pip install pysilk-mod
```
2. 数据库连接问题
5. 启动主程序
- 检查数据库服务是否运行
- 验证配置信息是否正确
- 确认数据库用户权限是否足够
```bash
python main.py
```
3. Redis连接问题
## 配置说明
- 检查Redis服务是否运行
- 验证配置信息是否正确
- 检查Redis服务器防火墙设置
### 全局配置
4. API调用问题
项目支持从 `.env` 自动加载环境变量,并在 [config.example.yaml](/d:/learn/abot/config.example.yaml:1) / `config.yaml` 中使用:
- 确认API密钥是否正确
- 检查API服务是否可用
- 验证网络连接是否正常
- `${ENV_NAME}`
- `${ENV_NAME:默认值}`
## 🔄 更新日志
示例:
### v1.0.0
- `${ABOT_DB_PASSWORD}`:必须提供
- `${ABOT_DB_HOST:127.0.0.1}`:可缺省时回退
- 初始版本发布
- 基础功能实现
- 插件系统支持
### wechat_ipad 配置
## 🤝 贡献指南
当前仓库仍保留 [wechat_ipad/config.toml](/d:/learn/abot/wechat_ipad/config.toml:1) 作为现有登录态与设备信息的本地配置文件。
1. Fork 项目
2. 创建特性分支
3. 提交更改
4. 推送到分支
5. 创建 Pull Request
说明:
## 📄 许可证
- Docker 部署会通过环境变量在首次启动时生成该文件
- 本地直跑继续兼容原有读取方式
- 本轮未强制把全部 `wechat_ipad` 配置迁移进 `.env`
本项目采用 MIT 许可证,详见 LICENSE 文件。
## 目录结构
## 📞 联系方式
```text
abot/
├── admin/ # 管理后台
├── base/ # 插件基础接口与管理能力
├── db/ # 数据库访问层与迁移脚本
├── docs/ # 部署、设计、使用文档
├── plugins/ # 业务插件
├── utils/ # 通用工具与服务
├── wechat_ipad/ # 微信相关客户端与 server 对接代码
├── Dockerfile
├── docker-compose.yml
├── config.example.yaml
├── .env.example
└── main.py
```
- 项目维护者:水牛
- 邮箱bovine.liu@gmail.com
- 项目地址:待发布
## 管理后台
## 🙏 致谢
- 默认端口:`8888`
- 配置文件:[`admin/dashboard/config.toml`](/d:/learn/abot/admin/dashboard/config.toml:1)
- 公开仓库中的账号密码与 webhook token 已改为占位值,部署前务必自行修改
感谢所有为本项目做出贡献的开发者。
## Docker 化现状
本仓库现在提供的是“开源友好”的基础部署骨架:
- 应用、MariaDB、Redis 已拆分为独立服务
- 提供 `docker-compose.yml`、`.dockerignore`、`.env.docker.example`
- 保留 `wechat_ipad/config.toml` 的挂载方式,避免这次改动影响你现有登录态逻辑
当前仍建议你在正式生产前继续补充:
- HTTPS / 反向代理
- 备份策略
- CI/CD
- 监控与告警
## 开源说明
### License 要不要改
当前主代码仍按 MIT License 分发,通常不必为了“开源”单独换许可证。
但你需要额外关注:
- 字体文件的再分发许可
- `wechat_ipad/ipad859go` 二进制来源与授权
- `resource/` 下业务资料是否适合公开
- 第三方前端静态资源的许可证保留
详情见 [THIRD_PARTY_LICENSES.md](/d:/learn/abot/THIRD_PARTY_LICENSES.md:1)。
### 不建议公开提交的内容
- `.env`
- `config.yaml`
- `wechat_ipad/config.toml` 中的真实 `wxid` / `device_id`
- 真实数据库密码、LLM API Key、Webhook Token
## 路线图
当前更优先的方向不是继续无上限堆新功能,而是继续补工程底座:
- Docker 化与部署规范
- 文档与回归清单
- 插件治理
- 可观测性与任务中心
- 开源边界与资产合规
已整理的工程 backlog 见 [docs/工程优化与Feature清单.md](/d:/learn/abot/docs/工程优化与Feature清单.md:1)。
## 贡献与使用说明
- 欢迎基于自己的场景二次开发
- 提交前请避免把本地私有配置、运行日志、登录态一并提交
- 涉及平台接口、内容抓取、自动推送等能力时,请自行评估目标平台规则与当地法律要求