Telegram Movie Recommendation Bot Using Python and pyTelegramBotAPI

Answered using ChatGPT 4o by ChatGPT4o

Question:

Напиши чат-бота для Telegram на Python с использованием библиотеки pyTelegramBotAPI. Бот должен будет выполнять функцию подборщика фильмов и сериалов. Для подбора от пользователя нужен любимый жанр и любимый фильм, а бот будет на основе этих данных выводить похожие фильмы и сериалы. Так же добавь функцию, чтобы при выборе фильма бот выдавал ссылку на сайт где можно посмотреть тот или иной фильм или сериал. Укрась бота.

Answer:

Для создания чат-бота для Telegram на Python с использованием библиотеки pyTelegramBotAPI, который будет подбирать фильмы и сериалы на основе любимого жанра и фильма пользователя, нам потребуется выполнить несколько шагов:

  1. Установить библиотеку pyTelegramBotAPI.
  2. Создать бота в Telegram и получить токен.
  3. Написать код для бота, который будет обрабатывать сообщения и подбирать фильмы и сериалы.
  4. Добавить функцию для предоставления ссылок на сайты для просмотра фильмов и сериалов.

Вот пример кода для такого бота:

import telebot
from telebot import types

# Замените 'YOUR_BOT_TOKEN' на токен вашего бота
bot = telebot.TeleBot('YOUR_BOT_TOKEN')

# Пример базы данных фильмов и сериалов
movies_db = {
    'action': [
        {'title': 'Mad Max: Fury Road', 'link': 'https://www.example.com/mad-max'},
        {'title': 'John Wick', 'link': 'https://www.example.com/john-wick'}
    ],
    'comedy': [
        {'title': 'The Grand Budapest Hotel', 'link': 'https://www.example.com/grand-budapest'},
        {'title': 'Superbad', 'link': 'https://www.example.com/superbad'}
    ],
    # Добавьте больше жанров и фильмов
}

# Начальное сообщение
@bot.message_handler(commands=['start'])
def send_welcome(message):
    bot.reply_to(message, "Привет! Я помогу тебе подобрать фильмы и сериалы. Напиши свой любимый жанр.")

# Обработка сообщений с жанром
@bot.message_handler(func=lambda message: True)
def handle_genre(message):
    genre = message.text.lower()
    if genre in movies_db:
        bot.reply_to(message, f"Отлично! Теперь напиши свой любимый фильм в жанре {genre}.")
        bot.register_next_step_handler(message, handle_favorite_movie, genre)
    else:
        bot.reply_to(message, "Извини, я не знаю такого жанра. Попробуй другой.")

# Обработка сообщений с любимым фильмом
def handle_favorite_movie(message, genre):
    favorite_movie = message.text
    recommendations = movies_db.get(genre, [])
    if recommendations:
        response = f"Вот несколько фильмов и сериалов, которые могут тебе понравиться, если тебе нравится {favorite_movie}:\n"
        for movie in recommendations:
            response += f"- {movie['title']} (ссылка: {movie['link']})\n"
        bot.reply_to(message, response)
    else:
        bot.reply_to(message, "Извини, я не нашел подходящих рекомендаций.")

# Запуск бота
bot.polling()

Пояснения:

  1. Установка библиотеки:

    pip install pyTelegramBotAPI
    
  2. Создание бота в Telegram:

    • Перейдите в Telegram и найдите бота @BotFather.
    • Создайте нового бота с помощью команды /newbot и следуйте инструкциям.
    • Получите токен для вашего бота.
  3. Код бота:

    • В коде выше мы создаем бота, который приветствует пользователя и запрашивает его любимый жанр.
    • Затем бот запрашивает любимый фильм пользователя в этом жанре.
    • На основе жанра и фильма бот предоставляет рекомендации и ссылки на сайты для просмотра.
  4. Украшение бота:

    • Вы можете добавить больше жанров и фильмов в базу данных.
    • Добавьте обработку ошибок и улучшите взаимодействие с пользователем.
    • Используйте кнопки и клавиатуры для улучшения интерфейса.

Пример улучшенного интерфейса с кнопками:

@bot.message_handler(commands=['start'])
def send_welcome(message):
    markup = types.ReplyKeyboardMarkup(row_width=2)
    itembtn1 = types.KeyboardButton('Action')
    itembtn2 = types.KeyboardButton('Comedy')
    # Добавьте больше кнопок для жанров
    markup.add(itembtn1, itembtn2)
    bot.send_message(message.chat.id, "Привет! Я помогу тебе подобрать фильмы и сериалы. Выбери свой любимый жанр:", reply_markup=markup)

@bot.message_handler(func=lambda message: message.text in ['Action', 'Comedy'])
def handle_genre(message):
    genre = message.text.lower()
    bot.reply_to(message, f"Отлично! Теперь напиши свой любимый фильм в жанре {genre}.")
    bot.register_next_step_handler(message, handle_favorite_movie, genre)

Этот код добавляет кнопки для выбора жанра, что делает взаимодействие с ботом более удобным.