gothfilebot
Как Telegram становится личным файловым хранилищем
Файлы лежат на серверах Telegram, бот хранит только их опись: папки, теги и кто что может открыть. Весь интерфейс живёт в одном сообщении, которое меняется на месте, поэтому чат не засоряется.
- Загрузкафото, видео, документ
- Описьfile_id · SQLite
- Папкитеги и проверка дублей
- ПоискFTS5 по всему
- Выдачасообщение удалится само
Содержимое файлов не копируется на диск сервера. В базе остаются ссылка Telegram на файл и его описание, поэтому хранилище весит мегабайты, а не гигабайты.
Отправляешь файл, бот его описывает
Подходит документ, фото, видео, аудио, голосовое, GIF, кружок или стикер. Бот записывает file_id, который Telegram выдал файлу, и сам ставит теги: тип, расширение, месяц и хештеги из подписи. Альбом сохраняется целиком за одно обновление панели.
Одна копия, а не две
Перед записью бот сверяет файл с уже сохранёнными. Копию в той же папке он просто не добавит, а если такой файл лежит в другой папке, предупредит об этом.
Один экран вместо ленты сообщений
Все экраны и статусы редактируют одну постоянную панель: меняются подпись, картинка и кнопки. У каждой папки своя обложка, коллаж последних фото или карточка с названием. На кнопке «назад» написано, куда именно она ведёт.
Чтобы найти, достаточно написать в чат
Любой текст, отправленный боту, считается поиском. Работает полнотекстовый индекс SQLite FTS5 по названию, тегам, подписи и папке.
Выданный файл исчезает сам
Файл или целая папка выдаётся с прогрессом, отменой и повтором после ошибок, альбомы собираются обратно как были. Для выданных сообщений выбирается срок: навсегда, 5 минут, час или сутки. Очередь удаления лежит в базе, так что перезапуск бота её не теряет. Из хранилища при этом ничего не пропадает.
Гости без паролей
Доступ даётся только аккаунту Telegram. Владелец выбирает человека штатным выбором контакта, одобряет его запрос или отправляет ссылку-приглашение со 128-битным токеном, лимитом входов и сроком. Гость видит только открытые ему папки и может их только читать. О каждом входе владелец получает уведомление с кнопками «Убрать» и «Заблокировать».
Резервная копия каждый день
Раз в сутки база копируется целиком, последние семь копий хранятся. Сам бот запущен от отдельного системного пользователя в песочнице systemd и может писать только в свою папку с данными.
VACUUM INTO 'data/backups/vault-2026-11-04.db'
Python · aiogram 3 · SQLAlchemy · SQLite FTS5 · Alembic · systemd
Вернуться к проектам