refactor: 控制台输入框不再区分聊天与指令,只留一个入口

聊天和指令本来就是同一个东西:以 / 开头按游戏指令发送,否则按公屏消息发送。
服务端 /api/bots/:id/chat 一直就是这么分流的,前端多一个模式下拉框纯属多余。

- 删掉「公屏聊天 / 游戏指令」下拉框与重复的「快捷公屏消息」输入框
- 只保留:一个输入框 + 快捷发送按钮 + 移动测试按钮
- 接口返回新增 kind 字段(chat / command)说明实际走的是哪条路
- Toast 区分「消息已发送」与「指令已发送:/xxx」
- 快捷发送补上 /u restore confirm(配合定时消息常用)
- 空内容提示从「消息为空」改为「内容为空」(不再只针对聊天)

测试 325 -> 326,全部通过。
这个提交包含在:
lyizai
2026-09-28 01:00:05 +08:00
父节点 a83dea9677
当前提交 f1316bf58c
共修改 7 个文件,包含 82 行新增和 52 行删除
+13 -3
查看文件
@@ -441,7 +441,17 @@ npm start
- **中栏**:
- 地图页签 —— **大地图**(瓦片 + 领土多边形 + 全部机器人坐标)与 **领土地图**(区块级)
- 日志页签 —— **运行日志** / **公屏聊天** / **开拓日志**
- **右栏**:控制台 / 聊天框(含移动测试)+ 8 个标签页的配置表单
- **右栏**:控制台(统一输入框 + 快捷发送 + 移动测试)+ 8 个标签页的配置表单
### 控制台输入框:聊天与指令是同一个入口
不需要切换「聊天 / 指令」模式 —— **以 `/` 开头就按游戏指令发送,否则按公屏消息发送**。
服务端 `/api/bots/:id/chat` 就是这么分流的,返回里带 `kind` 字段说明实际走的是哪条路。
另外提供:
- **快捷发送**:`/u return`、`/u claimmode`、`/u restore confirm`、`/spawn`、`/list` 一键发出
- **移动测试**:前 / 后 / 左 / 右 / 跳,绕开寻路器直接按控制键 2 秒并回报真实位移
### 响应式与移动端
@@ -510,8 +520,8 @@ npm start
| POST | `/api/bots/:id/move` | 手动移动测试(`direction` / `seconds`),返回真实位移 |
| POST | `/api/bots` | 控制台新增玩家(`username` / `password` / `label`) |
| DELETE | `/api/bots/:id` | 移除控制台新增的玩家(`.env` 里的会返回 400) |
| POST | `/api/bots/:id/command` | 向该机器人发送游戏指令(要求已登录验证) |
| POST | `/api/bots/:id/chat` | 向该机器人发送公屏消息(要求已登录验证) |
| POST | `/api/bots/:id/chat` | 发送内容:**以 `/` 开头按指令发送,否则按公屏消息发送**(要求已登录验证) |
| POST | `/api/bots/:id/command` | 同上,但强制按指令发送(等价于给内容加 `/` 前缀) |
| GET | `/api/bots/:id/chat` | 该机器人的公屏日志(`limit` / `since` / `kind` / `keyword`) |
| POST | `/api/bots/:id/chat/export` | 导出该机器人的公屏日志到 `data/` |
| GET | `/api/expansion-log` | 开拓日志(`limit` / `botId` / `state` / `since`)+ 统计 |