# 跨群聊天插件需求分析与文档 ## 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智能过滤功能 这份需求文档提供了跨群聊天插件的基本框架和实现思路,可以根据实际开发过程进行调整和完善。