# 文字处理机器人使用手册（小白友好版）

欢迎使用文字处理机器人！你不需要懂编程，只要会打字，就能用它完成各种文字操作——比如加密、解密、打乱顺序、进制转换、排版整理等。

---

## 一、基础演示

在 QQ 群里这样使用：

1. **直接输入命令**（适合短文本）：
   ```
   /textfx reverse 你好世界
   ```
   → 机器人回复：`界世好你`

2. **先发一段文字，再用命令处理它**（适合长文本）：
   - 先发送：`Hello, World!`
   - 回复这条消息，输入：
     ```
     /textfx b64 encode
     ```
   → 机器人返回：`SGVsbG8sIFdvcmxkIQ==`

> 命令可写为 `/textfx`、`/处理文字` 或 `/处理文本`。
> 若不回复消息，命令会处理当前行后面的文本。

---

## 二、流水线语法（超简单）

- 用 `|` 连接多个操作，前一个的输出自动作为后一个的输入。
- 用 `;` 分隔多条独立指令，它们各自产生输出，最终合并显示。
- 用 `&&` / `||` 做最小 shell 风格条件执行：
  - `cmd1 && cmd2`：仅当 `cmd1` 成功时执行 `cmd2`
  - `cmd1 || cmd2`：仅当 `cmd1` 失败时执行 `cmd2`
- 用 `!` 对一条 pipeline 的成功/失败取反。
- 支持最小 bash-like `if ... then ... else ... fi` 语句。
- 支持最小 bash-like `while ... do ... done` 循环。
- 可使用内建真假命令：`true` / `false`。
- 为避免滥用与卡死：
  - 同一用户同时只能运行 **一个** textfx 脚本
  - 单个脚本最长执行时间为 **60 秒**

**例子**：把"HELLO"先反转，再转成摩斯电码：（转换为摩斯电码功能暂未实现）
```
textfx reverse HELLO | morse en
```
→ 输出：`--- .-.. .-.. . ....`

**例子**：失败后兜底执行：
```
textfx test a = b || echo 不相等
```
→ 输出：`不相等`

**例子**：成功后继续执行：
```
textfx [ 2 -gt 1 ] && echo 条件成立
```
→ 输出：`条件成立`

**例子**：真正的 if 语句：
```
textfx if test a = b; then echo yes; else echo no; fi
```
→ 输出：`no`

**例子**：对条件取反：
```
textfx ! test a = b && echo 条件不成立
```
→ 输出：`条件不成立`

**例子**：while 循环：
```
textfx while false; do echo 不会执行; done
```
→ 输出为空

**例子**：多条指令各自输出：
```
textfx echo 你好; echo 世界
```
→ 输出：
```
你好
世界
```

**例子**：重定向的指令不输出，其余正常输出：
```
textfx echo 1; echo 2 > a; echo 3
```
→ 输出：
```
1
3
```

---

## 三、功能清单（含示例）

### reverse（或 rev、反转）
反转文字。
示例：`/textfx reverse 爱你一万年` → `年万一你爱`

### b64（或 base64）
Base64 编码或解码。
示例：`/textfx b64 encode 你好` → `5L2g5aW9`
示例：`/textfx b64 decode 5L2g5aW9` → `你好`

### caesar（或 凯撒、rot）
凯撒密码（仅对英文字母有效）。
示例：`/textfx caesar 3 ABC` → `DEF`
示例：`/textfx caesar -3 DEF` → `ABC`

### morse（或 摩斯）
将摩斯电码解码为文字（支持英文和日文）。字符间用空格，单词间用 `/`。
示例：`/textfx morse en .... . .-.. .-.. ---` → `HELLO`
示例：`/textfx morse jp -... --.-- -.. --.. ..- ..` → `ハアホフウイ`

### baseconv（或 进制转换）
在不同进制之间转换数字。
示例：`/textfx baseconv 2 10 1101` → `13`
示例：`/textfx baseconv 10 16 255` → `FF`

### shuffle（或 打乱）
随机打乱文字顺序。
示例：`/textfx shuffle abcdef` → `fcbade`（每次结果不同）

### sort（或 排序）
将文字按字符顺序排列。
示例：`/textfx sort dbca` → `abcd`

### b64hex
在 Base64 和十六进制之间互转。
示例：`/textfx b64hex dec SGVsbG8=` → `48656c6c6f`
示例：`/textfx b64hex enc 48656c6c6f` → `SGVsbG8=`

### align（或 format、排版）
按指定格式分组排版文字。
示例：`/textfx align 2 4 0123456789abcdef` →
```
01 23 45 67
89 ab cd ef
```

### echo
输出指定文字。
示例：`/textfx echo 你好` → `你好`

### cat
读取并拼接缓存内容，类似 Unix cat 命令。
- 无参数时直接传递标准输入（管道输入或回复的消息）。
- 使用 `-` 代表标准输入，可与缓存名混合使用。
- 支持多个参数，按顺序拼接输出。

示例：
- 传递输入：`/textfx echo 你好 | cat` → `你好`
- 读取缓存：`/textfx cat mytext` → 输出 mytext 的内容
- 拼接多个缓存：`/textfx cat a b c` → 依次拼接缓存 a、b、c
- 混合标准输入和缓存：`/textfx echo 前缀 | cat - mytext` → 拼接标准输入与缓存 mytext

### 缓存操作（保存中间结果）
- 保存：`/textfx reverse 你好 > mytext`（不输出，存入 mytext）
- 读取：`/textfx cat mytext` → `好你`
- 追加：`/textfx echo world >> mytext`
- 删除：`/textfx rm mytext`

> 缓存仅在当前对话中有效，重启后清空。

### true / false / test / [
最小 shell 风格条件命令。通常配合 `if`、`&&`、`||`、`!` 使用。

支持：
- `true`：总是成功
- `false`：总是失败
- 字符串非空：`test foo`
- `-n` / `-z`：`test -n foo`、`test -z ""`
- 字符串比较：`test a = a`、`test a != b`
- 整数比较：`test 2 -gt 1`、`test 3 -le 5`
- 方括号别名：`[ 2 -gt 1 ]`

示例：
- `/textfx true && echo 一定执行`
- `/textfx false || echo 兜底执行`
- `/textfx test hello && echo 有内容`
- `/textfx test a = b || echo 不相等`
- `/textfx [ 3 -ge 2 ] && echo yes`

### if / then / else / fi
支持最小 bash-like 条件语句。

示例：
- `/textfx if test a = a; then echo yes; else echo no; fi`
- `/textfx if [ 2 -gt 1 ]; then echo 成立; fi`
- `/textfx if test a = a; then if test b = c; then echo x; else echo y; fi; fi`

说明：
- `if` 后面跟一个条件链，可配合 `test`、`[`、`!`、`&&`、`||`
- `then` 和 `else` 后面都可以写多条以 `;` 分隔的 textfx 语句
- `else` 可省略

### while / do / done
支持最小 bash-like 循环语句。

示例：
- `/textfx while false; do echo 不会执行; done`
- `/textfx while ! false; do false; done`
- `/textfx while ! false; do if true; then false; fi; done`

说明：
- `while` 后面跟一个条件链，返回成功就继续循环
- `do` 后面可写多条以 `;` 分隔的 textfx 语句
- 为避免 bot 死循环，内置最大循环次数限制；超限会报错

### replace（或 替换、sed）
替换文字（支持正则表达式）。
示例（普通）：`/textfx replace 世界 宇宙 你好世界` → `你好宇宙`
示例（正则）：`/textfx replace \d+ [数字] 我有123个苹果` → `我有[数字]个苹果`

### trim（或 strip、去空格）
去除文本首尾空白字符。
示例：`/textfx trim "  你好  "` → `你好`
示例：`/textfx echo "  hello  " | trim` → `hello`

### ltrim（或 lstrip）
去除文本左侧空白字符。
示例：`/textfx ltrim "  你好  "` → `你好  `

### rtrim（或 rstrip）
去除文本右侧空白字符。
示例：`/textfx rtrim "  你好  "` → `  你好`

### squeeze（或 压缩空白）
将连续的空白字符（空格、制表符）压缩为单个空格。
示例：`/textfx squeeze "你好   世界"` → `你好 世界`

### lines（或 行处理）
按行处理文本，支持以下子命令：
- `lines trim` — 去除每行首尾空白
- `lines empty` — 去除所有空行
- `lines squeeze` — 将连续空行压缩为一行

示例：`/textfx echo "  hello\n\n\n  world  " | lines trim` → `hello\n\n\n world`
示例：`/textfx echo "a\n\n\nb" | lines squeeze` → `a\n\nb`

---

## 常见问题

- **没反应？** 可能内容被安全系统拦截，机器人会提示“内容被拦截”。
- **只支持纯文字**，暂不支持图片或文件。
- 命令拼错时，机器人会提示“不存在名为 xxx 的函数”，请检查名称。

快去试试吧！用法核心：**`/textfx` + 你的操作**
