媒体推荐机器人

一个基于Telegram的媒体推荐机器人,支持书籍、电影、剧集和播客的推荐,使用Supabase存储数据并提供简单的HTML前端界面。

  • by VAnastasia
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 VAnastasia/mcp-example

使用说明

Recommended Media Bot (Python + HTML/CSS/JS + Supabase)

Проект: Telegram-бот для персональных рекомендаций по медиа (книги, фильмы, сериалы, подкасты) с хранением в Supabase и простым HTML фронтендом (читательский интерфейс).

Возможности

  • Добавление рекомендации через Telegram-бота: выбрать тип → ввести название → ввести описание.
  • Команда /list — последние 5 рекомендаций пользователя.
  • Команда /random — случайная рекомендация любого пользователя.
  • Inline-клавиатура для выбора типа контента.

Технологии

  • Python 3.11
  • Telegram: pyTelegramBotAPI
  • Supabase: supabase (официальный Python SDK)
  • Конфигурация: python-dotenv
  • Frontend: HTML/CSS/JS, @supabase/supabase-js (CDN)
  • Контейнеризация: Docker (бот в контейнере)

Структура

backend/
  Dockerfile
  requirements.txt
  .env.example
  main.py
  database.py
frontend/
  index.html
  Dockerfile
  nginx.conf
README.md

Подготовка Supabase

  1. Создайте проект в Supabase.
  2. В Settings → API скопируйте Project URL и anon public ключ.
  3. В SQL редакторе выполните схему (если не хотите автосоздание в коде):
create table if not exists public.recommendations (
  id bigint generated always as identity primary key,
  user_id text not null,
  type text not null check (type in ('book','movie','series','podcast')),
  title text not null,
  description text not null,
  created_at timestamp with time zone not null default now()
);

create index if not exists recommendations_user_id_created_at_idx
  on public.recommendations (user_id, created_at desc);

Примечание: Бэкенд также пытается создать таблицу автоматически при старте (безопасно при повторных запусках).


Настройка окружения

Скопируйте .env.example → .env в директории backend/ и заполните:

SUPABASE_URL=...
SUPABASE_KEY=...
TELEGRAM_TOKEN=...

Запуск бэкенда (Docker)

Перейдите в каталог backend/ и соберите образ:

cd backend
docker build -t recommend-bot:latest .
docker run --rm --name recommend-bot --env-file .env recommend-bot:latest

Бот запустится и будет принимать сообщения в Telegram.


Запуск фронтенда (HTML/CSS/JS)

Вариант 1: Docker (рекомендуется)

# Запуск всех сервисов
docker-compose up --build

# Или только фронтенд
docker-compose up --build frontend

Фронтенд будет доступен на http://localhost:3000

Вариант 2: Локальная разработка

cd frontend
# Просто откройте index.html в браузере
open index.html
# или запустите простой HTTP сервер:
python -m http.server 8000
# Откройте http://localhost:8000

Примечание: В index.html уже встроены ваши Supabase ключи. Если нужно изменить — отредактируйте переменные SUPABASE_URL и SUPABASE_ANON_KEY в скрипте.


Команды бота

  • /start — приветствие и меню выбора типа контента (Inline-кнопки).
  • /list — последние 5 рекомендаций текущего пользователя.
  • /random — случайная рекомендация любого пользователя.

Пользовательский поток добавления:

  1. Выбор типа (кнопка) → 2) Ввод названия → 3) Ввод описания → 4) Сохранение в Supabase.

Переменные окружения

  • SUPABASE_URL — URL проекта Supabase
  • SUPABASE_KEY — anon public ключ (или service role, если запускаете в доверенной среде)
  • TELEGRAM_TOKEN — токен бота

Для фронтенда: Supabase ключи встроены в index.html. Для продакшена рекомендуется вынести в переменные окружения.


MCP примечания

  • MCP Docker: предоставлен Dockerfile для локального запуска сервиса-бота.
  • MCP Supabase: используйте ваш проект Supabase. Код создаёт таблицу автоматически при старте.

Лицензия

MIT