Telegram Ascii Table
by @nalg
Format tabular data as ASCII box tables for Telegram. Stdin-only input eliminates shell injection risks. Handles smart column sizing, text wrapping, and proper padding for monospace display.
clawhub install telegram-ascii-tableπ About This Skill
name: telegram-ascii-table description: Format tabular data as ASCII box tables for Telegram. Stdin-only input eliminates shell injection risks. Handles smart column sizing, text wrapping, and proper padding for monospace display.
Telegram ASCII Tables
Format tabular data as ASCII box-drawing tables that render correctly in Telegram code blocks.
Quick Start
{baseDir}/scripts/ascii-table.py <<'EOF'
Name|Value|Status
Server|web-01|Online
Database|db-01|Syncing
EOF
Wrap output in triple backticks when sending to Telegram.
Usage
Heredoc (recommended)
# Desktop mode (default): Unicode box chars, 58 char width
ascii-table <<'EOF'
Server|Status|Uptime
web-01|Online|14d 3h
db-01|Syncing|2d 12h
EOFMobile mode: ASCII chars, 48 char width
ascii-table --mobile <<'EOF'
Task|Status
Deploy|Done
Test|Pending
EOFCustom width
ascii-table --width 80 <<'EOF'
Column|Another Column
data|more data
EOF
Pipe
cat data.txt | ascii-table
echo -e 'Name|Value\nRow1|Data1' | ascii-table
some-command | ascii-table --mobile
Options
βββββββββββββ¬ββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ
β Flag β Short β Description β
βββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β --desktop β -d β Unicode box chars, 58 char width (DEFAULT) β
βββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β --mobile β -m β ASCII chars, 48 char width β
βββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β --width N β -w N β Override default width β
βββββββββββββ΄ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββ
Mode Comparison
βββββββββββββββββ¬βββββββββββββββββββββββ¬ββββββββββββββββββββββ
β Aspect β Desktop (default) β Mobile β
βββββββββββββββββΌβββββββββββββββββββββββΌββββββββββββββββββββββ€
β Characters β Box drawing β ASCII (+ - chars) β
βββββββββββββββββΌβββββββββββββββββββββββΌββββββββββββββββββββββ€
β Default width β 58 chars β 48 chars β
βββββββββββββββββΌβββββββββββββββββββββββΌββββββββββββββββββββββ€
β Rendering β Clean on desktop β Reliable everywhere β
βββββββββββββββββΌβββββββββββββββββββββββΌββββββββββββββββββββββ€
β Use when β Recipient on desktop β Recipient on mobile β
βββββββββββββββββ΄βββββββββββββββββββββββ΄ββββββββββββββββββββββ
Unicode box-drawing characters render at inconsistent widths on mobile Telegram. Use --mobile for mobile recipients.
Input Format
|Output Examples
Desktop
ββββββββββββ¬βββββββββββ¬βββββββββββ
β Server β Status β Uptime β
ββββββββββββΌβββββββββββΌβββββββββββ€
β web-01 β Online β 14d 3h β
ββββββββββββΌβββββββββββΌβββββββββββ€
β db-01 β Syncing β 2d 12h β
ββββββββββββ΄βββββββββββ΄βββββββββββ
Mobile
+------------+----------+----------+
| Server | Status | Uptime |
+------------+----------+----------+
| web-01 | Online | 14d 3h |
+------------+----------+----------+
| db-01 | Syncing | 2d 12h |
+------------+----------+----------+
With Wrapping
βββββββββββ¬βββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β Task β Status β Notes β
βββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββ€
β Deploy β Done β Rolled out to prod successfully β
β API β β β
βββββββββββΌβββββββββΌβββββββββββββββββββββββββββββββββββββββ€
β Fix bug β WIP β Waiting on upstream OAuth fix β
βββββββββββ΄βββββββββ΄βββββββββββββββββββββββββββββββββββββββ
Design Note: Stdin-Only Input
This script intentionally does not accept row data as CLI arguments.
Shell argument parsing happens *before* any script runs. Characters like ` `, $, and ! in double-quoted args get executed or expanded by the shell β not by the script receiving them. For example, whoami would execute and substitute its output before the script ever sees it.
By requiring stdin input, user data bypasses shell parsing entirely. A quoted heredoc (<<'EOF') passes everything through literally β no escaping needed, no execution possible.
Limitations
π‘ Examples
Heredoc (recommended)
# Desktop mode (default): Unicode box chars, 58 char width
ascii-table <<'EOF'
Server|Status|Uptime
web-01|Online|14d 3h
db-01|Syncing|2d 12h
EOFMobile mode: ASCII chars, 48 char width
ascii-table --mobile <<'EOF'
Task|Status
Deploy|Done
Test|Pending
EOFCustom width
ascii-table --width 80 <<'EOF'
Column|Another Column
data|more data
EOF
Pipe
cat data.txt | ascii-table
echo -e 'Name|Value\nRow1|Data1' | ascii-table
some-command | ascii-table --mobile
βοΈ Configuration
βββββββββββββ¬ββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ
β Flag β Short β Description β
βββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β --desktop β -d β Unicode box chars, 58 char width (DEFAULT) β
βββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β --mobile β -m β ASCII chars, 48 char width β
βββββββββββββΌββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ€
β --width N β -w N β Override default width β
βββββββββββββ΄ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββ