Fix Telegram rich message tables to render with visible vertical column borders by sending raw Markdown instead of HTML through Bot API 10.1
sendRichMessage.
OpenClaw converts Markdown tables to HTML internally before sending them via Telegram's sendRichMessage API as {html: "<table>..."}. However, Telegram's rich HTML renderer does not display vertical column borders on tables, making them look like plain text without visual separation between columns.
This patch modifies OpenClaw's Telegram sending pipeline to send raw Markdown as {markdown: "..."} instead of converting to HTML. Telegram's Bot API 10.1 natively converts Markdown tables to RichBlockTable blocks with proper borders, alignment, and formatting β just like Telegram's own table rendering.
Two functions in OpenClaw's send-*.js (in dist/) are patched:
| Function | Before | After |
|---|---|---|
buildTelegramRichMarkdown |
Converts Markdown β HTML β sends {html} |
Sends {markdown} directly |
splitTelegramRichMessageTextChunks |
Converts chunks to HTML | Passes Markdown chunks as-is |
openclaw skills install git:https://github.com/basil20100/openclaw-telegram-tables-patchopenclaw skills install ./openclaw-telegram-tables-patchopenclaw config patch --stdin <<'json'
{"channels": {"telegram": {"richMessages": true}}}
jsonnode ~/.openclaw/workspace/skills/openclaw-telegram-tables-patch/scripts/telegram-rich-markdown.patch.jssystemctl --user restart openclaw-gatewaySend a Markdown table in Telegram β you should see vertical column borders.
| Feature | Status | Details |
|--------|--------|---------|
| Tables | β
| Working |
| Borders | β
| Visible |
| Alignment | β
| Centered |- Re-apply after every OpenClaw update β
npm update -g openclawoverwrites the patched file - The patch script auto-detects OpenClaw's installation path across systems
- If the patch can't find the target file (e.g., filename changed), it will warn you β manual patching may be needed
- A backup of the original file is saved as
send-*.js.bak
Before (broken):
Markdown table β markdownToTelegramRichHtml() β HTML <table> β sendRichMessage({html}) β β no borders
After (fixed):
Markdown table β sendRichMessage({markdown}) β Telegram renders RichBlockTable β β
borders
- OpenClaw 2026.6.11 (e085fa1)
- Telegram Bot API 10.1
- Node.js v22+
- Linux (systemd)
MIT β free to use, modify, and distribute.
If OpenClaw updates and the patch breaks, please open an issue with the new send-*.js filename and the relevant code section.
- Discovered by Basil Albishri while comparing OpenClaw's table rendering with Hermes Agent's approach
- Hermes sends
{markdown}natively β this patch brings the same behavior to OpenClaw