MemeVault — система хранения и поиска медиа-вложений через Telegram-бота.
MemeVault представляет собой полнофункциональную систему для организации и поиска медиаконтента (изображений, GIF-анимаций и видео) в Telegram. Проект состоит из двух взаимосвязанных компонентов и предоставляет пользователям удобный интерфейс для работы с персональными коллекциями мемов.
Проект включает следующие компоненты:
- ImageStorage (Go) — backend-сервис, предоставляющий RESTful API для управления изображениями
- MemeVaultControl (C#) — Telegram-бот для взаимодействия с пользователями
- PostgreSQL — база данных с поддержкой нечёткого поиска (fuzzy search)
- MemeVaultUI — веб-интерфейс для Mini App
Проект реализует двухуровневую систему хранения:
- Глобальное хранилище — коллекция мемов, доступная всем пользователям, управляется модераторами (user_id = 0)
- Персональные хранилища — индивидуальные коллекции каждого пользователя
Каждое изображение в системе:
- Имеет собственный набор тегов для быстрой категоризации
- Поддерживает различные форматы (фото, GIF, видео)
- Отслеживает статистику использования
- Индексируется для эффективного поиска
Для пользователей:
- Загрузка медиафайлов с указанием тегов в персональное хранилище
- Поиск изображений по тегам с поддержкой:
- Точного совпадения (exact match)
- Частичного совпадения (partial match)
- Нечёткого поиска (fuzzy search) для исправления опечаток
- Inline-режим для быстрого доступа к мемам прямо из чата
- Просмотр всех сохранённых медиафайлов
- Управление тегами и удаление контента
Технические особенности:
- Поиск работает одновременно в личном и глобальном хранилище
- Результаты ранжируются по релевантности
- Поддержка множественных тегов для одного изображения
- Статистика использования для популярных мемов
Для запуска проекта необходимо:
- Docker и Docker Compose
- Telegram Bot Token (получите у @BotFather)
- Клонируйте репозиторий:
git clone https://github.com/Olimp666/MemeVault.git
cd MemeVault- Настройте переменные окружения:
cd deployments
cp .env.example .envОтредактируйте файл .env и укажите ваш токен бота:
TELEGRAM_BOT_TOKEN=your_bot_token_here- Запустите приложение:
docker-compose up -d/start— начало работы с ботом, приветственное сообщение/add— добавить новый мем с тегами в личное хранилище/list— показать все сохранённые мемы
- Отправьте боту изображение, GIF или видео
- Можно указать теги одновременно с вложением или следующим сообщением
- Введите теги через пробел (например:
кот смешной реакция) - Мем будет сохранён в вашем персональном хранилище
- В любом чате введите
@ваш_бот_username запрос - Бот покажет подходящие мемы из вашего хранилища и глобальной коллекции
- Выберите нужный мем для отправки
Пустой запрос покажет все ваши сохранённые мемы.
MemeVault/
├── ImageStorage/ # Backend-сервис (Go)
│ ├── cmd/
│ │ └── image_storage/ # Точка входа приложения
│ ├── internal/
│ │ ├── api/ # HTTP handlers
│ │ ├── app/ # Инициализация приложения
│ │ ├── models/ # Модели данных
│ │ ├── repository/ # Слой работы с БД
│ │ ├── service/ # Бизнес-логика
│ │ └── tg/ # Telegram API клиент
│ └── test/ # Тесты и скрипты
│
├── MemeVaultControl/ # Telegram-бот (C#)
│ └── src/
│ ├── BotService/ # Обработчики событий бота
│ ├── Client/ # HTTP клиент для backend
│ ├── Commands/ # Команды бота
│ ├── Helpers/ # Вспомогательные утилиты
│ └── Model/ # Модели данных
│
└── deployments/ # Конфигурация развёртывания
├── docker-compose.yml # Оркестрация сервисов
├── init_db.sql # Схема базы данных
└── .env.example # Пример конфигурации
Backend (ImageStorage):
- Go 1.21+
- PostgreSQL 13 (с расширением fuzzystrmatch)
- Telegram Bot API (для получения файлов)
Telegram Bot (MemeVaultControl):
- C# / .NET
- Telegram.Bot SDK
- RestSharp (HTTP клиент)
Инфраструктура:
- Docker & Docker Compose
- PostgreSQL с индексами для оптимизации поиска
Автоматическая генерация описаний:
- Внедрение AI-моделей для автоматического распознавания содержимого изображений
- Генерация релевантных тегов на основе визуального анализа
- Автоматическое пополнение метаданных для существующих мемов
- Поддержка мультиязычных описаний
Улучшенный поиск:
- Семантический поиск на основе AI-описаний
- Поиск похожих изображений по содержанию (visual similarity)
- Контекстный поиск с пониманием намерений пользователя
- Рекомендательная система на основе истории использования