Skip to content

Olimp666/MemeVault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MemeVault

MemeVault — система хранения и поиска медиа-вложений через Telegram-бота.

📋 Описание проекта

MemeVault представляет собой полнофункциональную систему для организации и поиска медиаконтента (изображений, GIF-анимаций и видео) в Telegram. Проект состоит из двух взаимосвязанных компонентов и предоставляет пользователям удобный интерфейс для работы с персональными коллекциями мемов.

Архитектура

Проект включает следующие компоненты:

  1. ImageStorage (Go) — backend-сервис, предоставляющий RESTful API для управления изображениями
  2. MemeVaultControl (C#) — Telegram-бот для взаимодействия с пользователями
  3. PostgreSQL — база данных с поддержкой нечёткого поиска (fuzzy search)
  4. MemeVaultUI — веб-интерфейс для Mini App

Система хранилищ

Проект реализует двухуровневую систему хранения:

  • Глобальное хранилище — коллекция мемов, доступная всем пользователям, управляется модераторами (user_id = 0)
  • Персональные хранилища — индивидуальные коллекции каждого пользователя

Каждое изображение в системе:

  • Имеет собственный набор тегов для быстрой категоризации
  • Поддерживает различные форматы (фото, GIF, видео)
  • Отслеживает статистику использования
  • Индексируется для эффективного поиска

Основные возможности

Для пользователей:

  • Загрузка медиафайлов с указанием тегов в персональное хранилище
  • Поиск изображений по тегам с поддержкой:
    • Точного совпадения (exact match)
    • Частичного совпадения (partial match)
    • Нечёткого поиска (fuzzy search) для исправления опечаток
  • Inline-режим для быстрого доступа к мемам прямо из чата
  • Просмотр всех сохранённых медиафайлов
  • Управление тегами и удаление контента

Технические особенности:

  • Поиск работает одновременно в личном и глобальном хранилище
  • Результаты ранжируются по релевантности
  • Поддержка множественных тегов для одного изображения
  • Статистика использования для популярных мемов

🚀 Быстрый старт

Предварительные требования

Для запуска проекта необходимо:

  • Docker и Docker Compose
  • Telegram Bot Token (получите у @BotFather)

Установка и запуск

  1. Клонируйте репозиторий:
git clone https://github.com/Olimp666/MemeVault.git
cd MemeVault
  1. Настройте переменные окружения:
cd deployments
cp .env.example .env

Отредактируйте файл .env и укажите ваш токен бота:

TELEGRAM_BOT_TOKEN=your_bot_token_here
  1. Запустите приложение:
docker-compose up -d

📚 Использование

Команды бота

  • /start — начало работы с ботом, приветственное сообщение
  • /add — добавить новый мем с тегами в личное хранилище
  • /list — показать все сохранённые мемы

Добавление мема

  1. Отправьте боту изображение, GIF или видео
  2. Можно указать теги одновременно с вложением или следующим сообщением
  3. Введите теги через пробел (например: кот смешной реакция)
  4. Мем будет сохранён в вашем персональном хранилище

Поиск мемов (Inline-режим)

  1. В любом чате введите @ваш_бот_username запрос
  2. Бот покажет подходящие мемы из вашего хранилища и глобальной коллекции
  3. Выберите нужный мем для отправки

Пустой запрос покажет все ваши сохранённые мемы.

🏗️ Структура проекта

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)
  • Контекстный поиск с пониманием намерений пользователя
  • Рекомендательная система на основе истории использования

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors