Напиши код на телеграм бот для фильма и проверка на

Напиши код на телеграм бот для фильма и проверка на подписка канала
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: Python
Создано: 16.03.2025 20:44

Напиши код на телеграм бот для фильма и проверка на подписка канала

Конечно! Вот пример кода для Telegram-бота на Python, который отправляет информацию о фильмах и проверяет подписку пользователя на канал. Мы будем использовать библиотеку python-telegram-bot для создания бота и библиотеку sqlite3 для хранения информации о пользователях и их подписке.

Перед началом убедитесь, что у вас установлен python-telegram-bot. Если нет, вы можете установить его с помощью следующей команды:

pip install python-telegram-bot

Код бота

import logging
from telegram import Update, ForceReply
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
import sqlite3

# Настройка логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)

# Создаем базу данных для хранения информации о подписках
def create_database():
    conn = sqlite3.connect('subscribers.db')
    c = conn.cursor()
    c.execute('''
        CREATE TABLE IF NOT EXISTS subscribers (
            user_id INTEGER PRIMARY KEY,
            subscribed INTEGER DEFAULT 0
        )
    ''')
    conn.commit()
    conn.close()

# Команда /start
def start(update: Update, context: CallbackContext) -> None:
    user_id = update.effective_user.id
    update.message.reply_text('Привет! Напиши /subscribe для проверки подписки на канал.')

# Команда /subscribe
def subscribe(update: Update, context: CallbackContext) -> None:
    user_id = update.effective_user.id
    # Проверка подписки на канал
    chat_id = '@your_channel_name'  # Замените на имя вашего канала

    try:
        member = context.bot.get_chat_member(chat_id, user_id)
        if member.status in ['member', 'administrator', 'creator']:
            update.message.reply_text('Вы подписаны на канал!')
            # Сохраняем подписку в базе данных
            save_subscription(user_id, 1)
        else:
            update.message.reply_text('Вы не подписаны на канал. Подпишитесь, чтобы получить информацию о фильмах!')
            save_subscription(user_id, 0)
    except Exception as e:
        logger.error(f"Ошибка: {e}")
        update.message.reply_text('Ошибка при проверке подписки. Убедитесь, что бот является администратором канала.')

# Функция для сохранения подписки в базе данных
def save_subscription(user_id, status):
    conn = sqlite3.connect('subscribers.db')
    c = conn.cursor()
    c.execute('INSERT OR REPLACE INTO subscribers (user_id, subscribed) VALUES (?, ?)', (user_id, status))
    conn.commit()
    conn.close()

# Команда /film
def film(update: Update, context: CallbackContext) -> None:
    user_id = update.effective_user.id
    if check_subscription(user_id):
        # Здесь вы можете добавить логику, чтобы отправить информацию о фильме
        update.message.reply_text('Вот информация о фильме: ...')
    else:
        update.message.reply_text('Пожалуйста, сначала подпишитесь на канал.')

# Функция для проверки подписки из базы данных
def check_subscription(user_id):
    conn = sqlite3.connect('subscribers.db')
    c = conn.cursor()
    c.execute('SELECT subscribed FROM subscribers WHERE user_id = ?', (user_id,))
    result = c.fetchone()
    conn.close()
    return result is not None and result[0] == 1

def main():
    create_database()
    updater = Updater("YOUR_TOKEN_HERE")  # Замените YOUR_TOKEN_HERE на токен вашего бота

    # Получаем диспатчер для регистрации обработчиков
    dispatcher = updater.dispatcher

    # Команды
    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(CommandHandler("subscribe", subscribe))
    dispatcher.add_handler(CommandHandler("film", film))

    # Запускаем бота
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

Как использовать

  1. Замените YOUR_TOKEN_HERE на токен вашего Telegram-бота.
  2. Замените @your_channel_name на имя вашего канала для проверки подписки.
  3. Убедитесь, что ваш бот добавлен в ваш канал как администратор.
  4. Запустите скрипт. Теперь ваш бот будет реагировать на команды /start, /subscribe и /film.

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