<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kirill</title>
    <description>The latest articles on DEV Community by Kirill (@waterflane).</description>
    <link>https://dev.to/waterflane</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4032101%2F26c72ccd-f179-4c59-9c37-cebdac37bc96.png</url>
      <title>DEV Community: Kirill</title>
      <link>https://dev.to/waterflane</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/waterflane"/>
    <language>en</language>
    <item>
      <title>Telegram Has Rich Messages Now — So I Built a Markdown Workflow for Them</title>
      <dc:creator>Kirill</dc:creator>
      <pubDate>Thu, 16 Jul 2026 12:19:02 +0000</pubDate>
      <link>https://dev.to/waterflane/telegram-has-rich-messages-now-so-i-built-a-markdown-workflow-for-them-34og</link>
      <guid>https://dev.to/waterflane/telegram-has-rich-messages-now-so-i-built-a-markdown-workflow-for-them-34og</guid>
      <description>&lt;p&gt;Telegram messages have traditionally been fairly simple.&lt;/p&gt;

&lt;p&gt;You could send text, apply basic formatting, attach media, or use a few special message types such as polls. More complex posts usually had to be split across multiple messages or assembled manually with separate media groups.&lt;/p&gt;

&lt;p&gt;That changed with Telegram's new &lt;strong&gt;rich messages&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Rich messages can contain structured blocks such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;section headings;&lt;/li&gt;
&lt;li&gt;paragraphs;&lt;/li&gt;
&lt;li&gt;quotations;&lt;/li&gt;
&lt;li&gt;collapsible details;&lt;/li&gt;
&lt;li&gt;mathematical expressions;&lt;/li&gt;
&lt;li&gt;dividers;&lt;/li&gt;
&lt;li&gt;inline images and videos;&lt;/li&gt;
&lt;li&gt;collages;&lt;/li&gt;
&lt;li&gt;slideshows;&lt;/li&gt;
&lt;li&gt;and more!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of treating a post as one text string followed by attachments, Telegram can now represent it as a sequence of content blocks.&lt;/p&gt;

&lt;p&gt;This makes a Telegram message feel much closer to a small article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Faa85dd3b-7934-4c95-b971-530d2cb420fb" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Faa85dd3b-7934-4c95-b971-530d2cb420fb" alt="Example of a Telegram rich message" width="506" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two related Telegram updates
&lt;/h2&gt;

&lt;p&gt;There are two parts of this change that are easy to confuse.&lt;/p&gt;

&lt;p&gt;In June 2026, Telegram introduced rich-text messages for bots. The Bot API gained structured rich-message objects that bots could use to send long, block-based posts.&lt;/p&gt;

&lt;p&gt;In July 2026, Telegram added a visual rich-text editor to its official clients. The editor supports headings, lists, tables, quotations, code blocks, inline media and messages containing more than 32,000 characters.&lt;/p&gt;

&lt;p&gt;However, Telegram currently makes the visual editor available only to Telegram Premium users.&lt;/p&gt;

&lt;p&gt;The underlying rich-message format is not limited to manually composed Premium messages. Bots can construct rich messages through Telegram's official API.&lt;/p&gt;

&lt;p&gt;That distinction creates an interesting opportunity: alternative editors can be built on top of the official bot interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The new format is useful for more than decorative channel posts.&lt;/p&gt;

&lt;p&gt;A structured message can represent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a project announcement;&lt;/li&gt;
&lt;li&gt;release notes;&lt;/li&gt;
&lt;li&gt;technical documentation;&lt;/li&gt;
&lt;li&gt;an event schedule;&lt;/li&gt;
&lt;li&gt;a tutorial;&lt;/li&gt;
&lt;li&gt;a community guide;&lt;/li&gt;
&lt;li&gt;a FAQ;&lt;/li&gt;
&lt;li&gt;a product changelog;&lt;/li&gt;
&lt;li&gt;a formatted news post;&lt;/li&gt;
&lt;li&gt;a collection of images with commentary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Previously, creating this kind of content in Telegram often required several separate messages. The result was harder to edit, forward and read as one document.&lt;/p&gt;

&lt;p&gt;Rich messages make the structure explicit.&lt;/p&gt;

&lt;p&gt;A heading is a heading. A list is a list. A collage is a content block rather than a loosely associated group of attachments.&lt;/p&gt;

&lt;h2&gt;
  
  
  The current accessibility problem
&lt;/h2&gt;

&lt;p&gt;The feature itself was generally received as useful, but the Premium restriction generated a predictable discussion.&lt;/p&gt;

&lt;p&gt;In a recent discussion on r/Telegram, users questioned why basic formatting such as lists and richer posts required a subscription. Some Premium subscribers also argued that formatting is not inherently an advanced or resource-intensive feature.&lt;/p&gt;

&lt;p&gt;This resembles the reaction to Telegram checklists. When collaborative checklists were introduced, users reported that non-Premium members could see a checklist but could not necessarily interact with it in the way group members expected.&lt;/p&gt;

&lt;p&gt;The issue is not simply that Telegram Premium exists. Premium subscriptions fund Telegram and include many optional capabilities.&lt;/p&gt;

&lt;p&gt;The practical problem is that structured content is especially useful in collaborative environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;community channels;&lt;/li&gt;
&lt;li&gt;open-source projects;&lt;/li&gt;
&lt;li&gt;student groups;&lt;/li&gt;
&lt;li&gt;small teams;&lt;/li&gt;
&lt;li&gt;public announcements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In those environments, requiring every author to use the same paid editor can make adoption less convenient.&lt;/p&gt;

&lt;p&gt;Bots provide another interface to the same platform capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Markdown-based approach
&lt;/h2&gt;

&lt;p&gt;I wanted to test whether rich Telegram posts could be created without building another large visual editor.&lt;/p&gt;

&lt;p&gt;Markdown was a natural input format because it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;readable as plain text;&lt;/li&gt;
&lt;li&gt;familiar to developers;&lt;/li&gt;
&lt;li&gt;easy to store in Git;&lt;/li&gt;
&lt;li&gt;portable between editors;&lt;/li&gt;
&lt;li&gt;suitable for templates;&lt;/li&gt;
&lt;li&gt;straightforward to generate programmatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The resulting workflow is intentionally simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write a post in Markdown.&lt;/li&gt;
&lt;li&gt;Send the text or a UTF-8 &lt;code&gt;.md&lt;/code&gt; file to a Telegram bot.&lt;/li&gt;
&lt;li&gt;Let the bot parse the document.&lt;/li&gt;
&lt;li&gt;Convert supported Markdown extensions into Telegram rich-message blocks.&lt;/li&gt;
&lt;li&gt;Preview and publish the resulting message.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7xyvrgxueuh84klob22j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7xyvrgxueuh84klob22j.png" alt="test" width="465" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is called &lt;strong&gt;Amethyst-Post-Bot&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is not a modified Telegram client and it does not imitate user actions. It uses Telegram's official bot APIs to construct messages from structured blocks.&lt;/p&gt;

&lt;p&gt;You can check out my implementation on GitHub: &lt;a href="https://github.com/rassvetteam/Amethyst-Post-Bot" rel="noopener noreferrer"&gt;https://github.com/rassvetteam/Amethyst-Post-Bot&lt;/a&gt;&lt;br&gt;
And support me, too! &lt;a href="https://www.patreon.com/waterflane_dev" rel="noopener noreferrer"&gt;https://www.patreon.com/waterflane_dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>telegram</category>
      <category>bot</category>
      <category>dev</category>
    </item>
  </channel>
</rss>
