Thematic breaks (---, ***, ___) and empty block-level markdown elements
produce empty HTML after markdown→Telegram conversion. When these empty
chunks are sent to the Telegram Bot API, it rejects with '400: message
text is empty', which aborts the delivery loop and silently drops all
subsequent message chunks.
Fix:
1. markdownToTelegramChunks() now filters out chunks with empty HTML
before returning, preventing empty chunks from reaching the delivery
pipeline at all.
2. sendTelegramText() adds a defensive guard that skips empty HTML,
protecting against any other code path that might produce one.
Closes#3011