<?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: TIRION 13</title>
    <description>The latest articles on DEV Community by TIRION 13 (@tirion_13).</description>
    <link>https://dev.to/tirion_13</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%2F4230803%2Fa464580c-d9f8-4d61-9abb-a742d7faec5e.jpg</url>
      <title>DEV Community: TIRION 13</title>
      <link>https://dev.to/tirion_13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tirion_13"/>
    <language>en</language>
    <item>
      <title>Why I built a bot that remembers what people delete — and what it taught me</title>
      <dc:creator>TIRION 13</dc:creator>
      <pubDate>Fri, 06 Nov 2026 17:04:37 +0000</pubDate>
      <link>https://dev.to/tirion_13/why-i-built-a-bot-that-remembers-what-people-delete-and-what-it-taught-me-4ne5</link>
      <guid>https://dev.to/tirion_13/why-i-built-a-bot-that-remembers-what-people-delete-and-what-it-taught-me-4ne5</guid>
      <description>&lt;p&gt;It started in a café.&lt;/p&gt;

&lt;p&gt;At the time, things between my wife and me were difficult. Messages would appear&lt;br&gt;
in our chat and then disappear, and I kept wondering what I had missed. So, sitting&lt;br&gt;
there with a cup of coffee, I went looking for a Telegram bot that could show&lt;br&gt;
deleted messages.&lt;/p&gt;

&lt;p&gt;I found one. It was free at first, then it asked me to pay — and honestly, what it did&lt;br&gt;
was pretty basic. Then I found another one that was completely free and did more or less&lt;br&gt;
the same thing.&lt;/p&gt;

&lt;p&gt;And that's what made me stop and think. &lt;strong&gt;Why is it free?&lt;/strong&gt;&lt;br&gt;
A server costs money. Development costs money. Keeping thousands of people's private&lt;br&gt;
messages safe costs money and effort. If nobody is paying for that, then what exactly&lt;br&gt;
is the product — and who is it for?&lt;/p&gt;

&lt;p&gt;The more I dug into it, the less comfortable I felt handing my private conversations&lt;br&gt;
to a service that couldn't answer that question. So I decided to build my own, around&lt;br&gt;
a few principles I actually care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;security&lt;/strong&gt; — your messages are encrypted and treated as yours;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;honesty&lt;/strong&gt; — clear about what the bot can and cannot do;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;openness&lt;/strong&gt; — talking to the people who use it, not hiding behind a landing page;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a good interface&lt;/strong&gt; — something pleasant to use, not just a raw log.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's how &lt;strong&gt;DeletedGuard&lt;/strong&gt; began — a Telegram bot that keeps a copy of a message&lt;br&gt;
when your contact deletes or edits it. I'm still working on it and improving it every week.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9sdbcgnfs8byqwantqxe.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%2F9sdbcgnfs8byqwantqxe.png" alt=" " width="780" height="1688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule I set on day one: no hacks
&lt;/h2&gt;

&lt;p&gt;There are plenty of "see deleted messages" tricks out there: modified clients,&lt;br&gt;
apps that read your phone's notifications, services that ask for your login code.&lt;br&gt;
I didn't want any of that.&lt;/p&gt;

&lt;p&gt;Telegram has an official feature called &lt;strong&gt;Chat Automation&lt;/strong&gt; (part of Telegram Business,&lt;br&gt;
no Premium needed). You connect a bot to your own account, choose which chats it&lt;br&gt;
can see, and Telegram itself sends it the messages — including the events&lt;br&gt;
"this was deleted" and "this was edited". No password, no codes. One tap to switch off.&lt;/p&gt;

&lt;p&gt;That choice shaped everything else. It also means honest limits:&lt;br&gt;
the bot &lt;strong&gt;cannot&lt;/strong&gt; recover anything sent before you connected it. I put that on the&lt;br&gt;
website in plain words, because a tool built on trust can't start with an overpromise.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually went wrong
&lt;/h2&gt;

&lt;p&gt;I thought the hard part would be the features. It wasn't. The hard part was the&lt;br&gt;
moments when the bot was &lt;em&gt;quietly&lt;/em&gt; failing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Messages lost to a database lock.&lt;/strong&gt; In the early days I used SQLite. One handler&lt;br&gt;
kept a write transaction open while it was waiting for a reply from the Telegram API.&lt;br&gt;
Under load, other writes waited, timed out — and some incoming messages were simply&lt;br&gt;
never saved. No crash, no error on screen. The lesson I now repeat to myself:&lt;br&gt;
&lt;em&gt;never hold a transaction open across a network call.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Telegram shipped something new.&lt;/strong&gt; One day Telegram started sending a message type&lt;br&gt;
my library didn't know yet. Instead of skipping one odd message, the whole update&lt;br&gt;
fetch failed — and the bot went silent for hours. Now unknown pieces are cut out,&lt;br&gt;
the message itself is saved, and I get a note "Telegram sent something new" so&lt;br&gt;
I can catch up.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxnd4k3k9v5h3knwo4ik0.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%2Fxnd4k3k9v5h3knwo4ik0.png" alt=" " width="780" height="1688"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;The scariest screen isn't mine.&lt;/strong&gt; When you connect a bot, Telegram shows a warning&lt;br&gt;
that the bot "manages your account". It's the single reason people named most often&lt;br&gt;
for leaving. I can't change that screen — so I learned to explain, in my own words&lt;br&gt;
and in their language, exactly what the bot can and cannot do.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I measure
&lt;/h2&gt;

&lt;p&gt;Early on I tracked "how many people connected the bot". It looked great and meant&lt;br&gt;
nothing. A connection is not value.&lt;/p&gt;

&lt;p&gt;The number I care about now is: &lt;strong&gt;did the bot actually catch a deleted message&lt;br&gt;
for this person?&lt;/strong&gt; That's the moment the product exists for. Everything else —&lt;br&gt;
notifications, the archive, the Mini App — serves that moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is now
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python + aiogram 3, PostgreSQL (moved from SQLite this autumn), a React Mini App
to browse the archive&lt;/li&gt;
&lt;li&gt;stored messages are encrypted (AES-256-GCM), servers in the Netherlands&lt;/li&gt;
&lt;li&gt;11 languages, including Arabic and Persian — right-to-left layouts and Persian digits
were a story of their own&lt;/li&gt;
&lt;li&gt;groups too, not only private chats&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where I want it to go
&lt;/h2&gt;

&lt;p&gt;I don't want to be "one more bot". I want DeletedGuard to be the tool people&lt;br&gt;
can recommend without a disclaimer: honest about limits, careful with data,&lt;br&gt;
and still working when something breaks at 3 a.m.&lt;/p&gt;

&lt;p&gt;I'll be writing here about the things I learned the hard way — the bugs,&lt;br&gt;
the measurements that proved me wrong, and building for people in eleven languages.&lt;br&gt;
If you work with Telegram bots or Mini Apps, I'd love to compare notes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bot: &lt;a href="https://t.me/Deleted_guard_bot" rel="noopener noreferrer"&gt;@Deleted_guard_bot&lt;/a&gt; · Site: &lt;a href="https://deletedguard.ru/en/" rel="noopener noreferrer"&gt;deletedguard.ru/en&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>privacy</category>
      <category>security</category>
    </item>
  </channel>
</rss>
