Telegram-бот для поиска фильмов/сериалов и выдачи ссылок для просмотра. Работает асинхронно на aiogram v3 + aiohttp, хранит историю и статистику в sqlite.
Тег бота: @cloalenka_cinema_bot
- Ищет фильмы/сериалы по тексту из сообщения.
- Основной источник: TMDb.
- Fallback: PoiskKino (api.poiskkino.dev) — используется, если TMDb ничего не нашёл или временно недоступен.
- Если результатов несколько — бот показывает inline-кнопки для выбора нужного тайтла.
Показывает:
- название
- год
- описание
- рейтинг
- постер (если есть)
Бот показывает кнопки со ссылками:
- сначала источники из Watchmode
- затем ссылки из PoiskKino
/start— приветствие и краткая инструкция/help— справка по использованию/history— последние запросы пользователя (персонально)/stats— сколько раз бот показывал пользователю каждый тайтл (персонально)
Обязательные:
BOT_TOKEN— токен Telegram Bot API
Опциональные (рекомендуется включить все):
TMDB_API_KEY— API key TMDb (если не задан, TMDb отключается)TMDB_LANGUAGE— язык TMDb, по умолчаниюru-RUWATCHMODE_API_KEY— ключ Watchmode (если не задан, ссылки Watchmode не показываются)WATCHMODE_REGION— регион Watchmode, по умолчаниюUSPOISKKINO_API_KEY— ключ PoiskKino (если не задан, PoiskKino отключается)POISKKINO_BASE_URL— base URL PoiskKino, по умолчаниюhttps://api.poiskkino.devDB_PATH— путь к sqlite базе (по умолчаниюcinema.sqlite3)
- Создать и заполнить
.env(можно от.env.example) - Установить зависимости:
pip install -r requirements.txt- Запустить бота:
python -m bot.main- Создать
.envв корне проекта - Запуск:
mkdir -p data
docker compose up -d --build
docker compose logs -fБаза данных будет храниться в ./data/ (volume), не пропадёт при перезапуске контейнера.
Остановка:
docker compose downИспользуется VM + Docker Compose, бот работает в режиме polling (без webhook).
-
bot/main.py— точка входа: создание Bot/Dispatcher, aiohttp session, подключение sqlite, регистрация роутеров -
bot/config.py— конфиг из переменных окружения -
bot/routers/common.py—/start,/helpsearch.py— поиск по тексту, показ карточки, выбор из списка, кнопки “где посмотреть”user_data.py—/history,/stats
-
bot/services/tmdb.py— поиск/детали в TMDbpoiskkino.py— поиск/линки в PoiskKinowatchmode.py— источники “где посмотреть” по TMDb id
-
bot/db/repo.py— слой работы с sqlite (история, тайтлы, показы)