Как Telegram удалил 800 ГБ моих данных: история одной опечатки в Telethon

Одна опечатка в названии переменной — и 800 ГБ личных файлов исчезли за полторы минуты. 128 432 сообщения в Telegram стерты безвозвратно. Я сидел и смотрел на пустой экран, а в голове крутилась одна мысль: как такое вообще возможно? Главное, что я понял: Telegram — не злодей. Он всего лишь честно выполнил мои же команды. В этой статье разберу, где именно я наступил на грабли, и как поставить такой заслон, чтобы подобное не повторилось.
Опечатка, которая стоила гигабайт
Несколько лет я использую Telegram как личное облако. Приватный канал, бот забирает файлы с телефона и компьютеров. Удобно: поиск, доступ с любого устройства, ничего не надо таскать с собой. Когда накопилось больше 800 ГБ, я написал скрипт на Python с библиотекой Telethon. Два режима: sync — загрузка нового, cleanup — удаление сообщений старше 90 дней. Настройки — в переменных окружения из .env. Обычно я менял TG_MODE вручную. В тот вечер меня отвлекли звонком, и я не глядя вписал TG_MODE=delete вместо cleanup. Вроде бы мелочь. Но именно эта мелочь запустила цепочку событий.
В чем суть ошибки
Код обрабатывал режим delete через функцию, которая удаляла все сообщения подряд. Вот упрощенный фрагмент того, что было в скрипте:
async for message in client.iter_messages(channel):
ids.append(message.id)
Никакой фильтрации по дате. Никакой проверки на количество. Переменная ids в одном из мест переопределялась, и в неё попадали вообще все идентификаторы сообщений. Telethon выполнял запросы пачками по 500, как метроном. Я не успел даже закрыть ноутбук — через полторы минуты канал был пуст. Моя ошибка была не в том, что я написал delete вместо cleanup. Более глубокая проблема — я доверял режиму работы, а не проверял данные, которые собираюсь удалять.
Какие инструменты для Telegram опаснее всего
- Telethon — полноценный клиент API, позволяет массово удалять что угодно. Уровень риска: высокий.
- python-telegram-bot — для создания ботов, удаление можно делать только в ограниченном контексте. Риск: средний.
- Bot API — бот не сможет стереть все сообщения пользователя, если он не администратор канала. Риск: средний.
- Telegram CLI — утилита командной строки, удаление по командам, но тоже требует осторожности. Риск: низкий при аккуратном использовании.
Чем больше возможностей — тем выше цена ошибки. Telethon — это швейцарский нож, но именно такие ножи чаще всего режут пальцы.
Как поставить заслон: пять правил
После этого случая я внедрил жёсткий регламент для любых автоматизаций. Вот он:
- Явное подтверждение. Перед массовым удалением скрипт должен вывести: «Будет удалено N сообщений. Продолжить? Y/N». Даже для cron-задач.
- Dry-run по умолчанию. Скрипт сначала показывает, что он сделает, и только с отдельным флагом реально выполняет удаление.
- Бэкап логов. Сохраняю ID всех сообщений, которые попадают под удаление, в файл. Это позволяет хоть что-то восстановить из кэша.
- Конкретные имена переменных. Забудьте про ALL_MESSAGES. Называйте вещи точно: old_messages_ids или ids_to_delete. Это снижает шанс случайного переопределения.
- Внешний бэкап канала. Telegram — не корзина. Удалённое не восстановить. Поэтому раз в месяц делаю экспорт всего канала на внешний диск.
Личное наблюдение автора
Я в IT уже больше пятнадцати лет. И всё равно умудрился наступить на эти грабли. В голове до сих пор крутится: «Как можно было так облажаться?» Ответ простой — человеческий фактор. Проблемы с данными чаще случаются не из-за хакеров или сбоев серверов, а из-за того, что разработчик поторопился или отвлёкся. Поэтому теперь я добавляю защитный барьер из трёх «зачем»: зачем мне это удалять, зачем прямо сейчас, зачем именно эти сообщения. Это простое упражнение экономит гигабайты и нервы.
Резюме
Одна опечатка способна за полторы минуты уничтожить то, что собиралось годами. Telegram не виноват — он лишь исполнитель. Виноват мой недостаток контроля. Любые массовые операции — удаление, блокировка, изменение прав — должны проходить многоступенчатую проверку. Да, это дополнительные десять минут разработки. Но поверьте: эти десять минут могут спасти 800 ГБ бесценных файлов.














