141 lines
4.0 KiB
Markdown
141 lines
4.0 KiB
Markdown
# 跨群聊天插件需求分析与文档
|
||
|
||
## 1. 需求概述
|
||
|
||
开发一个名为"跨群聊天"的微信机器人插件,该插件允许用户将多个微信群组合成一个虚拟聊天组,实现群组间消息的自动转发,使不同群的成员能够进行跨群交流。
|
||
|
||
## 2. 功能需求
|
||
|
||
### 2.1 核心功能
|
||
|
||
1. **群组管理**
|
||
- 创建虚拟聊天组
|
||
- 向虚拟聊天组中添加/删除微信群
|
||
- 查看当前所有虚拟聊天组及其包含的群
|
||
- 解散虚拟聊天组
|
||
|
||
2. **消息转发**
|
||
- 自动捕获虚拟聊天组内任一群的消息
|
||
- 将消息转发至同一虚拟聊天组内的其他群
|
||
- 支持文本、图片等消息类型的转发(不支持语音、表情)
|
||
|
||
3. **消息标识**
|
||
- 转发的消息需标明原始发送者信息(昵称)
|
||
- 标明消息来源群组
|
||
- 避免消息循环转发
|
||
|
||
### 2.2 扩展功能
|
||
|
||
1. **权限控制**
|
||
- 设置管理员权限,只有管理员可以管理虚拟聊天组
|
||
- 支持黑名单功能,可以屏蔽特定用户的消息不被转发
|
||
|
||
2. **消息过滤**
|
||
- 支持关键词过滤,含有特定关键词的消息不转发
|
||
- 支持消息类型过滤,可选择只转发特定类型的消息(仅支持文本、图片)
|
||
|
||
3. **统计分析**
|
||
- 记录转发消息数量
|
||
- 统计各群组活跃度
|
||
|
||
## 3. 技术架构
|
||
|
||
### 3.1 数据结构
|
||
|
||
1. **虚拟聊天组(ChatGroup)**
|
||
- ID: 唯一标识符
|
||
- 名称: 虚拟聊天组名称
|
||
- 群组列表: 包含的微信群ID列表
|
||
- 创建时间
|
||
- 创建者
|
||
|
||
2. **消息记录(Message)**
|
||
- 消息ID
|
||
- 原始群ID
|
||
- 发送者ID
|
||
- 消息内容
|
||
- 消息类型
|
||
- 发送时间
|
||
- 转发状态
|
||
|
||
### 3.2 接口设计
|
||
|
||
1. **管理接口**
|
||
- 创建虚拟聊天组: `createChatGroup(name, creatorId)`
|
||
- 添加群到虚拟聊天组: `addGroupToChatGroup(chatGroupId, wxGroupId)`
|
||
- 从虚拟聊天组移除群: `removeGroupFromChatGroup(chatGroupId, wxGroupId)`
|
||
- 解散虚拟聊天组: `deleteChatGroup(chatGroupId)`
|
||
- 查询虚拟聊天组: `listChatGroups()`, `getChatGroupDetail(chatGroupId)`
|
||
|
||
2. **消息处理接口**
|
||
- 消息接收: `receiveMessage(wxGroupId, senderId, content, type)`
|
||
- 消息转发: `forwardMessage(message, targetGroupIds)`
|
||
- 消息过滤: `filterMessage(message, rules)`
|
||
|
||
## 4. 数据存储
|
||
|
||
使用JSON文件存储虚拟聊天组配置和相关数据:
|
||
|
||
```json
|
||
{
|
||
"chatGroups": [
|
||
{
|
||
"id": "cg001",
|
||
"name": "技术交流联盟",
|
||
"groups": ["wxid_group1", "wxid_group2", "wxid_group3"],
|
||
"createdAt": "2023-05-01T10:00:00Z",
|
||
"createdBy": "admin_user_id"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## 5. 用户交互
|
||
|
||
### 5.1 命令格式
|
||
|
||
用户通过在群内发送特定格式的命令来管理虚拟聊天组:
|
||
|
||
- 创建虚拟聊天组: `#创建跨群 [名称]`
|
||
- 添加群到虚拟聊天组: `#添加群 [虚拟聊天组ID] [当前群名称]`
|
||
- 查看所有虚拟聊天组: `#查看跨群列表`
|
||
- 查看虚拟聊天组详情: `#查看跨群 [虚拟聊天组ID]`
|
||
- 退出虚拟聊天组: `#退出跨群 [虚拟聊天组ID]`
|
||
- 解散虚拟聊天组: `#解散跨群 [虚拟聊天组ID]`
|
||
|
||
### 5.2 消息展示格式
|
||
|
||
转发的消息格式示例:
|
||
```
|
||
[来自群"技术交流群"]
|
||
张三:这是一条测试消息
|
||
```
|
||
|
||
## 6. 实现步骤
|
||
|
||
1. 创建插件基础结构
|
||
2. 实现数据存储模块
|
||
3. 实现群组管理功能
|
||
4. 实现消息捕获与转发功能
|
||
5. 实现用户命令解析
|
||
6. 添加消息过滤功能
|
||
7. 实现权限控制
|
||
8. 测试与优化
|
||
|
||
## 7. 注意事项
|
||
|
||
1. 避免消息循环转发
|
||
2. 确保消息转发的实时性
|
||
3. 注意微信API的限制,避免触发封号风险
|
||
4. 保护用户隐私,不存储敏感信息
|
||
5. 考虑高并发情况下的性能问题
|
||
|
||
## 8. 后续优化方向
|
||
|
||
1. 支持更多消息类型的转发
|
||
2. 提供Web管理界面
|
||
3. 增加更细粒度的权限控制
|
||
4. 支持定时消息和定向转发
|
||
5. 添加AI智能过滤功能
|
||
|
||
这份需求文档提供了跨群聊天插件的基本框架和实现思路,可以根据实际开发过程进行调整和完善。 |