OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  telegram-ascii-table:为 Telegram 将表格数据格式化为 ASCII 盒子表格

telegram-ascii-table:为 Telegram 将表格数据格式化为 ASCII 盒子表格

 
  sandbox ·  2026-02-05 18:38:19 · 3 次点击  · 0 条评论  

名称: telegram-ascii-table
描述: 将表格数据格式化为适用于 Telegram 的 ASCII 框线表格。仅通过标准输入接收数据,可消除 Shell 注入风险。支持智能列宽调整、文本换行和等宽显示的适当填充。


Telegram ASCII 表格

将表格数据格式化为 ASCII 框线表格,确保在 Telegram 代码块中正确渲染。

快速开始

{baseDir}/scripts/ascii-table.py <<'EOF'
Name|Value|Status
Server|web-01|Online
Database|db-01|Syncing
EOF

发送到 Telegram 时,请将输出包裹在三个反引号中。

使用方法

Heredoc(推荐)

# 桌面模式(默认):使用 Unicode 框线字符,宽度为 58 个字符
ascii-table <<'EOF'
Server|Status|Uptime
web-01|Online|14d 3h
db-01|Syncing|2d 12h
EOF

# 移动模式:使用 ASCII 字符,宽度为 48 个字符
ascii-table --mobile <<'EOF'
Task|Status
Deploy|Done
Test|Pending
EOF

# 自定义宽度
ascii-table --width 80 <<'EOF'
Column|Another Column
data|more data
EOF

管道

cat data.txt | ascii-table
echo -e 'Name|Value\nRow1|Data1' | ascii-table
some-command | ascii-table --mobile

选项

┌───────────┬───────┬────────────────────────────────────────────┐
│ 标志      │ 简写  │ 描述                                        │
├───────────┼───────┼────────────────────────────────────────────┤
│ --desktop │ -d    │ Unicode 框线字符,58 字符宽(默认)         │
├───────────┼───────┼────────────────────────────────────────────┤
│ --mobile  │ -m    │ ASCII 字符,48 字符宽                       │
├───────────┼───────┼────────────────────────────────────────────┤
│ --width N │ -w N  │ 覆盖默认宽度                                │
└───────────┴───────┴────────────────────────────────────────────┘

模式对比

┌───────────────┬──────────────────────┬─────────────────────┐
│ 方面          │ 桌面模式(默认)      │ 移动模式            │
├───────────────┼──────────────────────┼─────────────────────┤
│ 字符          │ 框线绘制字符          │ ASCII 字符(+ -)   │
├───────────────┼──────────────────────┼─────────────────────┤
│ 默认宽度      │ 58 个字符             │ 48 个字符           │
├───────────────┼──────────────────────┼─────────────────────┤
│ 渲染效果      │ 在桌面端清晰          │ 在所有设备上可靠    │
├───────────────┼──────────────────────┼─────────────────────┤
│ 适用场景      │ 接收方使用桌面端      │ 接收方使用移动端    │
└───────────────┴──────────────────────┴─────────────────────┘

Unicode 框线字符在移动版 Telegram 上的渲染宽度不一致。若接收方使用移动设备,请使用 --mobile 选项。

输入格式

  • 每行通过标准输入表示一行数据
  • 列之间使用 | 分隔
  • 空行会被忽略
  • 单元格前后的空白字符会被修剪

输出示例

桌面模式

┌──────────┬──────────┬──────────┐
│ Server   │ Status   │ Uptime   │
├──────────┼──────────┼──────────┤
│ web-01   │ Online   │ 14d 3h   │
├──────────┼──────────┼──────────┤
│ db-01    │ Syncing  │ 2d 12h   │
└──────────┴──────────┴──────────┘

移动模式

+------------+----------+----------+
| Server     | Status   | Uptime   |
+------------+----------+----------+
| web-01     | Online   | 14d 3h   |
+------------+----------+----------+
| db-01      | Syncing  | 2d 12h   |
+------------+----------+----------+

带换行效果

┌─────────┬────────┬──────────────────────────────────────┐
│ Task    │ Status │ Notes                                │
├─────────┼────────┼──────────────────────────────────────┤
│ Deploy  │ Done   │ Rolled out to prod successfully      │
│ API     │        │                                      │
├─────────┼────────┼──────────────────────────────────────┤
│ Fix bug │ WIP    │ Waiting on upstream OAuth fix        │
└─────────┴────────┴──────────────────────────────────────┘

设计说明:仅支持标准输入

本脚本有意不将行数据作为命令行参数接收。

Shell 的参数解析发生在任何脚本运行之前。在双引号参数中的字符如 `$! 会被 Shell 执行或展开——而不是由接收它们的脚本处理。例如,`whoami` 会在脚本看到它之前就执行并替换为其输出。

通过要求标准输入,用户数据完全绕过了 Shell 解析。带引号的 heredoc (<<'EOF') 会原样传递所有内容——无需转义,也不可能执行。

限制

  • 管道分隔符 — 使用 | 分隔列(单元格内容中不能出现此字符)
  • 单词断行 — 长单词可能会在中间被拆分
  • 宽字符 — 表情符号或中日韩字符可能导致对齐问题
  • 仅左对齐 — 不支持数字右对齐
3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor