chore: sync current WechatHookBot workspace
This commit is contained in:
360
FEATURES.md
Normal file
360
FEATURES.md
Normal file
@@ -0,0 +1,360 @@
|
||||
# WechatHookBot 功能与指令总结
|
||||
|
||||
> 基于微信 Hook API 的智能机器人框架,采用 HTTP 协议通信
|
||||
|
||||
## 目录
|
||||
|
||||
- [核心架构](#核心架构)
|
||||
- [基础功能](#基础功能)
|
||||
- [AI 对话功能](#ai-对话功能)
|
||||
- [AI 绘图功能](#ai-绘图功能)
|
||||
- [AI 视频生成](#ai-视频生成)
|
||||
- [娱乐功能](#娱乐功能)
|
||||
- [实用工具](#实用工具)
|
||||
- [群聊管理](#群聊管理)
|
||||
- [签到系统](#签到系统)
|
||||
- [系统管理](#系统管理)
|
||||
- [LLM 工具集成](#llm-工具集成)
|
||||
- [配置说明](#配置说明)
|
||||
|
||||
---
|
||||
|
||||
## 核心架构
|
||||
|
||||
### 技术栈
|
||||
- **通信协议**: HTTP RESTful API + HTTP 回调服务器
|
||||
- **API 地址**: `http://127.0.0.1:61108` (可配置)
|
||||
- **回调地址**: `http://IP:PORT/vxapi`
|
||||
- **插件系统**: 基于装饰器的模块化插件架构
|
||||
- **数据库**: SQLite (消息记录、键值存储)
|
||||
- **缓存**: Redis (可选)
|
||||
|
||||
### 消息处理流程
|
||||
1. Hook 推送消息到回调服务器 `/vxapi`
|
||||
2. 消息标准化处理 (MessageNormalizer)
|
||||
3. 消息入队 (PriorityMessageQueue)
|
||||
4. 事件分发到各插件处理器
|
||||
5. 按优先级执行插件响应
|
||||
|
||||
---
|
||||
|
||||
## 基础功能
|
||||
|
||||
### 菜单帮助 (Menu)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/菜单` | 显示功能菜单 |
|
||||
| `/帮助` | 显示帮助信息 |
|
||||
| `/help` | 英文帮助 |
|
||||
| `/menu` | 英文菜单 |
|
||||
|
||||
### 插件管理 (ManagePlugin)
|
||||
> 仅管理员可用
|
||||
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/插件列表` | 查看所有插件状态 |
|
||||
| `/重载插件 <插件名>` | 重新加载指定插件 |
|
||||
| `/启用插件 <插件名>` | 启用指定插件 |
|
||||
| `/禁用插件 <插件名>` | 禁用指定插件 |
|
||||
|
||||
---
|
||||
|
||||
## AI 对话功能
|
||||
|
||||
### 智能对话 (AIChat)
|
||||
- **触发方式**: @机器人 或 私聊
|
||||
- **功能**: 基于大语言模型的智能对话
|
||||
- **支持**: 多轮对话、上下文记忆
|
||||
|
||||
### 智能自动回复 (AutoReply)
|
||||
- **触发方式**: 自动检测需要回复的消息
|
||||
- **架构**: 双 LLM 架构 (判断 + 回复)
|
||||
- **功能**: 智能判断是否需要回复,自动生成回复内容
|
||||
|
||||
---
|
||||
|
||||
## AI 绘图功能
|
||||
|
||||
### Flow2API 绘图
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/绘画f <提示词>` | 生成图片 |
|
||||
| `/绘画f横屏 <提示词>` | 横屏图片 (16:9) |
|
||||
| `/绘画f竖屏 <提示词>` | 竖屏图片 (9:16) |
|
||||
| 引用图片 + `/绘画f <提示词>` | 图生图 |
|
||||
|
||||
### NanoImage 绘图
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/绘画n <提示词>` | 使用 OpenAI 格式 API 生成图片 |
|
||||
|
||||
### ZImageTurbo 绘图
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/z绘图 <提示词>` | 使用 Z-Image-Turbo 生成图片 |
|
||||
|
||||
---
|
||||
|
||||
## AI 视频生成
|
||||
|
||||
### Sora2API 视频
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/sora <提示词>` | 生成 AI 视频 |
|
||||
| `/sora横屏 <提示词>` | 横屏视频 |
|
||||
| `/sora竖屏 <提示词>` | 竖屏视频 |
|
||||
|
||||
### GrokVideo 视频
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/视频 <提示词>` | 基于引用图片生成视频 |
|
||||
|
||||
> 注意: GrokVideo 需要先引用一张图片
|
||||
|
||||
---
|
||||
|
||||
## 娱乐功能
|
||||
|
||||
### 随机图片 (RandomImage)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `随机图片` | 随机美图 |
|
||||
| `图来` | 随机图片 |
|
||||
| `黑丝` | 黑丝图片 |
|
||||
| `白丝` | 白丝图片 |
|
||||
|
||||
### 随机视频 (RandomVideo)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `随机视频` | 随机短视频 |
|
||||
| `小姐姐视频` | 小姐姐短视频 |
|
||||
|
||||
### 舔狗日记 (DogDiary)
|
||||
| 触发词 | 说明 |
|
||||
|--------|------|
|
||||
| `舔狗` | 获取舔狗日记 |
|
||||
| `舔狗日记` | 获取舔狗日记 |
|
||||
|
||||
### KFC 文案 (KFC)
|
||||
| 触发词 | 说明 |
|
||||
|--------|------|
|
||||
| `疯狂星期四` | 获取 KFC 文案 |
|
||||
| `KFC` | 获取 KFC 文案 |
|
||||
| `V我50` | 获取 KFC 文案 |
|
||||
|
||||
### 复读姬 (Repeater)
|
||||
- **功能**: 自动复读群聊中的连续相同消息
|
||||
- **触发**: 群内连续多人发送相同消息时自动复读
|
||||
|
||||
---
|
||||
|
||||
## 实用工具
|
||||
|
||||
### 60秒新闻 (News60s)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `60秒` | 获取60秒读懂世界新闻 |
|
||||
| `新闻` | 获取今日新闻 |
|
||||
|
||||
### 点歌 (Music)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `点歌 <歌名>` | 搜索并发送歌曲 |
|
||||
|
||||
### 短视频解析 (VideoParser)
|
||||
- **功能**: 自动解析抖音、快手等短视频链接
|
||||
- **触发**: 发送包含短视频链接的消息
|
||||
|
||||
### 短剧搜索 (PlayletSearch)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/搜索短剧 <名称>` | 搜索短剧资源 |
|
||||
|
||||
### Epic 免费游戏 (EpicFreeGames)
|
||||
| 触发词 | 说明 |
|
||||
|--------|------|
|
||||
| `喜加一` | 获取 Epic 免费游戏 |
|
||||
| `Epic` | 获取 Epic 免费游戏 |
|
||||
| `免费游戏` | 获取 Epic 免费游戏 |
|
||||
|
||||
### 群聊总结 (ChatRoomSummary)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/总结` | 总结今日群聊内容 |
|
||||
| `/群聊总结` | 总结群聊内容 |
|
||||
| `/昨日总结` | 总结昨日群聊内容 |
|
||||
|
||||
---
|
||||
|
||||
## 群聊管理
|
||||
|
||||
### 新人欢迎 (GroupWelcome)
|
||||
- **功能**: 新成员加入群聊时自动发送欢迎消息
|
||||
- **触发**: 自动检测新成员入群事件
|
||||
|
||||
### 退群通知 (GroupLeave)
|
||||
- **功能**: 成员退出群聊时发送通知
|
||||
- **触发**: 自动检测成员退群事件
|
||||
|
||||
---
|
||||
|
||||
## 签到系统
|
||||
|
||||
### 普通签到 (SignInPlugin)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `签到` | 每日签到 |
|
||||
|
||||
### 鹿打卡 (DeerCheckin)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `🦌` | 鹿打卡 |
|
||||
| `🦌日历` | 查看打卡日历 |
|
||||
| `🦌帮助` | 查看打卡帮助 |
|
||||
| `🦌补签 <月> <日>` | 补签指定日期 |
|
||||
|
||||
---
|
||||
|
||||
## 系统管理
|
||||
|
||||
### 性能监控 (PerformanceMonitor)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/性能` | 查看系统性能 |
|
||||
| `/stats` | 查看统计信息 |
|
||||
| `/状态` | 查看运行状态 |
|
||||
|
||||
### MCP 管理 (MCPManager)
|
||||
| 指令 | 说明 |
|
||||
|------|------|
|
||||
| `/mcp status` | 查看 MCP 服务器状态 |
|
||||
| `/mcp list` | 列出可用工具 |
|
||||
| `/mcp reload` | 重载 MCP 配置 |
|
||||
|
||||
### 消息记录 (MessageLogger)
|
||||
- **功能**: 自动记录所有消息到 MySQL 数据库
|
||||
- **存储**: 消息内容、发送者、时间、图片(MinIO)
|
||||
- **用途**: 群聊总结、消息查询
|
||||
|
||||
---
|
||||
|
||||
## LLM 工具集成
|
||||
|
||||
以下插件作为 LLM 工具,可在 AI 对话中自动调用:
|
||||
|
||||
### Tavily 搜索 (TavilySearch)
|
||||
- **功能**: AI 对话中的联网搜索能力
|
||||
- **调用**: AI 自动判断是否需要搜索
|
||||
|
||||
### 旅行规划 (TravelPlanner)
|
||||
- **功能**: 基于高德 API 的旅行规划
|
||||
- **调用**: AI 对话中提及旅行相关话题时自动调用
|
||||
|
||||
---
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 主配置文件 (`main_config.toml`)
|
||||
|
||||
```toml
|
||||
[HttpHook]
|
||||
api-url = "http://127.0.0.1:61108" # Hook API 地址
|
||||
callback-host = "0.0.0.0" # 回调监听地址
|
||||
callback-port = 80 # 回调监听端口
|
||||
|
||||
[Bot]
|
||||
admins = ["wxid_xxx"] # 管理员 wxid
|
||||
disabled-plugins = [] # 禁用的插件
|
||||
ignore-mode = "None" # 消息过滤模式
|
||||
whitelist = [] # 白名单
|
||||
blacklist = [] # 黑名单
|
||||
|
||||
[Database]
|
||||
message-db = "sqlite+aiosqlite:///database/message.db"
|
||||
|
||||
[Performance]
|
||||
log_level_console = "INFO"
|
||||
log_sampling_rate = 1.0
|
||||
|
||||
[Concurrency]
|
||||
message_interval_ms = 200 # 消息间隔(毫秒)
|
||||
plugin_task_timeout_seconds = 720 # 插件超时
|
||||
```
|
||||
|
||||
### 消息过滤模式
|
||||
- `None`: 处理所有消息
|
||||
- `Whitelist`: 仅处理白名单中的 wxid/群
|
||||
- `Blacklist`: 屏蔽黑名单中的 wxid/群
|
||||
|
||||
### 插件配置
|
||||
每个插件在 `plugins/<插件名>/config.toml` 中有独立配置
|
||||
|
||||
---
|
||||
|
||||
## Bot API 接口
|
||||
|
||||
### 消息发送
|
||||
```python
|
||||
await bot.send_text(to_wxid, content) # 发送文本
|
||||
await bot.send_image(to_wxid, image_path) # 发送图片
|
||||
await bot.send_file(to_wxid, file_path) # 发送文件
|
||||
await bot.send_video(to_wxid, video_path) # 发送视频
|
||||
await bot.send_at_message(room_id, content, at_list) # @消息
|
||||
await bot.send_card(to_wxid, card_wxid) # 发送名片
|
||||
await bot.send_link(to_wxid, title, desc, url) # 发送链接
|
||||
await bot.revoke_message(msg_id) # 撤回消息
|
||||
```
|
||||
|
||||
### 信息获取
|
||||
```python
|
||||
await bot.get_login_info() # 获取登录信息
|
||||
await bot.get_friend_list() # 获取好友列表
|
||||
await bot.get_friend_info(wxid) # 获取好友信息
|
||||
await bot.get_chatroom_list() # 获取群列表
|
||||
await bot.get_chatroom_members(room_id) # 获取群成员
|
||||
await bot.get_chatroom_info(room_id) # 获取群信息
|
||||
await bot.get_user_info_in_chatroom(room_id, wxid) # 获取群内用户信息
|
||||
```
|
||||
|
||||
### 好友管理
|
||||
```python
|
||||
await bot.add_friend(wxid, verify_msg, scene) # 添加好友
|
||||
await bot.accept_friend(v3, v4, scene) # 同意好友请求
|
||||
await bot.delete_friend(wxid) # 删除好友
|
||||
await bot.set_friend_remark(wxid, remark) # 设置备注
|
||||
```
|
||||
|
||||
### 群聊管理
|
||||
```python
|
||||
await bot.create_chatroom(member_list) # 创建群聊
|
||||
await bot.invite_to_chatroom(room_id, wxid_list) # 邀请入群
|
||||
await bot.remove_chatroom_member(room_id, wxid_list) # 踢出成员
|
||||
await bot.quit_chatroom(room_id) # 退出群聊
|
||||
await bot.set_chatroom_announcement(room_id, text) # 设置群公告
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 运行要求
|
||||
|
||||
- **操作系统**: Windows
|
||||
- **Python**: 3.x
|
||||
- **微信**: 需已登录微信客户端
|
||||
- **Hook**: d3d11.dll 放置于微信安装目录
|
||||
|
||||
## 依赖项
|
||||
|
||||
```
|
||||
loguru==0.7.3
|
||||
APScheduler==3.11.0
|
||||
aiohttp>=3.9.1
|
||||
httpx>=0.27.0
|
||||
Pillow>=10.0.0
|
||||
aiohttp-socks>=0.8.0
|
||||
redis>=5.0.0 (可选)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*更新时间: 2026-01-12*
|
||||
Reference in New Issue
Block a user