# wechatbot **Repository Path**: minyang2018/wechatbot ## Basic Information - **Project Name**: wechatbot - **Description**: 借鉴worktool 实现企业微信自动转发 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-08 - **Last Updated**: 2026-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WeChatBot 项目 基于 WebSocket 的微信/企业微信消息发送机器人 ## 项目结构 ``` wechatbot/ ├── client/ # Android 客户端(Gradle) ├── server/ # Spring Boot 服务端(Maven) ├── build.gradle # Gradle 根项目配置 ├── settings.gradle # Gradle 项目设置 └── pom.xml # 父POM(仅管理服务端) ``` ## 技术栈 ### 服务端 - Spring Boot 3.1.5 - Spring WebSocket - Java 17 - Maven ### 客户端 - Android SDK 30 - Kotlin 1.9.0 - OkHttp WebSocket 4.11.0 - Android Accessibility Service - Gradle 8.5 - Android Gradle Plugin 8.1.4 ## 快速开始 ### 服务端 1. **进入服务端目录** ```bash cd server ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行服务** ```bash mvn spring-boot:run ``` 服务将在 `http://localhost:8080` 启动 4. **WebSocket 连接地址** ``` ws://localhost:8080/websocket/{robotId} ``` ### 客户端 1. **进入项目根目录** ```bash cd wechatbot ``` 2. **编译项目** ```bash ./gradlew :client:assembleDebug # Windows: ./gradlew.bat :client:assembleDebug ``` 3. **打包APK(Debug)** ```bash ./gradlew :client:assembleDebug # Windows: ./gradlew.bat :client:assembleDebug ``` APK 位置:`client/build/outputs/apk/debug/client-debug.apk` 4. **打包APK(Release)** ```bash ./gradlew :client:assembleRelease # Windows: ./gradlew.bat :client:assembleRelease ``` APK 位置:`client/build/outputs/apk/release/client-release.apk` 5. **安装到设备** ```bash ./gradlew :client:installDebug # Windows: ./gradlew.bat :client:installDebug ``` ## 使用说明 ### 1. 启动服务端 ```bash cd server mvn spring-boot:run ``` ### 2. 配置客户端 1. 安装APK到Android设备 2. 打开应用 3. 输入服务器地址(例如:`ws://192.168.1.100:8080/websocket/`) 4. 输入机器人ID 5. 开启无障碍服务权限 6. 点击"连接服务器" ### 3. 发送消息 #### 通过 WebSocket 发送 连接到服务端后,发送JSON格式的消息: ```json { "type": "send_message", "target": "群聊名称", "content": "消息内容", "messageType": "text", "robotId": "your_robot_id", "messageId": "unique_message_id" } ``` #### 通过 HTTP API 发送 ```bash curl -X POST http://localhost:8080/api/send/{robotId} \ -H "Content-Type: application/json" \ -d '{ "type": "send_message", "target": "群聊名称", "content": "消息内容", "messageType": "text" }' ``` 发送成功时响应会包含 `msg_id`(与 `messageId` 同值),可用于后续查询发送结果。 #### 查询消息发送结果 根据发送接口返回的 `msg_id` 查询该条消息的发送状态: ```bash curl http://localhost:8080/api/send/result/{msg_id} ``` 响应示例(MessageRecord): - `messageId` / `msg_id`:消息 ID - `status`:发送状态(pending/sent/success/failed) - `statusMessage`:状态说明 - `robotId`、`target`、`sendTime`、`completeTime` 等 ## 消息类型 ### 文本消息 ```json { "type": "send_message", "target": "群聊名称", "content": "这是一条文本消息", "messageType": "text" } ``` ### 图片消息 ```json { "type": "send_message", "target": "群聊名称", "messageType": "image", "filePath": "/storage/emulated/0/Pictures/image.jpg" } ``` ### 文件消息 ```json { "type": "send_message", "target": "群聊名称", "messageType": "file", "filePath": "/storage/emulated/0/Download/document.pdf" } ``` ## 支持的平台 - ✅ 企业微信(com.tencent.wework) - ✅ 普通微信(com.tencent.mm) ## 注意事项 1. **无障碍服务权限**:必须手动在系统设置中开启 2. **网络权限**:确保手机和服务器在同一网络或可访问 3. **文件路径**:发送文件时需要使用Android可访问的文件路径 4. **版本兼容**:不同版本的微信/企业微信UI可能不同,可能需要适配 ## 开发说明 ### 服务端开发 服务端使用标准的Spring Boot项目结构,主要文件: - `WeChatBotApplication.java` - 主应用类 - `WebSocketConfig.java` - WebSocket配置 - `WebSocketHandler.java` - WebSocket消息处理 - `ConnectionManager.java` - 连接管理 - `MessageController.java` - HTTP API控制器 ### 客户端开发 客户端使用Android无障碍服务实现UI自动化,主要文件: - `ChatBotService.kt` - 无障碍服务主类 - `WebSocketManager.kt` - WebSocket客户端 - `MessageHandler.kt` - 消息处理 - `MessageSender.kt` - 消息发送实现 - `WeChatNavigator.kt` - 微信导航 - `AccessibilityHelper.kt` - UI操作工具 ## 故障排除 1. **无法连接服务器** - 检查服务器是否启动 - 检查网络连接 - 检查防火墙设置 2. **无法发送消息** - 检查无障碍服务是否开启 - 检查是否在目标群聊中 - 查看日志输出 3. **找不到群聊** - 确保群聊名称正确 - 尝试使用完整的群聊名称 ## License Apache License 2.0