Этот вопрос закрыт для ответов, так как повторяет вопрос Как выложить видео в телеграмм боте?
@loftyk

Как вывести видео?

import telebot
from telebot import types
from pytube import YouTube
import os
import logging

bot = telebot.TeleBot('TOKEN')

user_gender = {}

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


@bot.message_handler(commands=['start'])
def start(message):
    markup = main_menu_markup()  # Используем функцию для создания разметки
    bot.send_message(message.chat.id,
                     'Привет, {0.first_name}! Я бот БезВреда, чем могу быть обязан?'.format(message.from_user),
                     reply_markup=markup)


def main_menu_markup():
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton('Наши соцсети и сайт')
    item3 = types.KeyboardButton('Написать в поддержку')
    item2 = types.KeyboardButton('Получить скидку')
    item4 = types.KeyboardButton('Получить тренировки')
    markup.row(item1)
    markup.row(item2)
    markup.row(item3)
    markup.row(item4)
    return markup


photosm = ['https://ibb.co/MkrwBBD', 'https://ibb.co/T0NQ9Dc', 'https://ibb.co/DpdQ3gV', 'https://ibb.co/wwW6P2n',
           'https://ibb.co/xCT8hcZ', 'https://ibb.co/VvK9phm', 'https://ibb.co/0XKdyyZ', 'https://ibb.co/p3SLS8V',
           'https://ibb.co/nPx51Mv', 'https://ibb.co/74nXhRW', 'https://ibb.co/mtqy69b', 'https://ibb.co/qpvdmPy']
photosw = ['https://ibb.co/DWkrq3X', 'https://ibb.co/K6j5QfC', 'https://ibb.co/CKMPWYs', 'https://ibb.co/FXH4kJP',
           'https://ibb.co/WB28DTc', 'https://ibb.co/Pt6HRbT', 'https://ibb.co/CMmqFxx', 'https://ibb.co/mFXrXf6',
           'https://ibb.co/X3zqd4j', 'https://ibb.co/k3bkn5Q', 'https://ibb.co/3zyXv9f', 'https://ibb.co/q5kY9TQ',
           'https://ibb.co/Jn4FqW2']


def send_youtube_video(chat_id, video_url):
    try:
        yt = YouTube(video_url)
        # Выбираем поток с более низким разрешением
        video = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').asc().first()
        if video:
            video_path = video.download()
            video_file = open(video_path, 'rb')
            bot.send_video(chat_id, video_file, supports_streaming=True)
            video_file.close()
            os.remove(video_path)
    except Exception as e:
        bot.send_message(chat_id, f"Ошибка при отправке видео: {e}")


@bot.message_handler(content_types=['text'])
def bot_message(message):
    if message.chat.type == 'private':
        if message.text == 'Наши соцсети и сайт':
            keyboard = types.InlineKeyboardMarkup()
            url_btn = types.InlineKeyboardButton(text='Наш сайт', url='https://bezvreda.shop/')
            url_btn1 = types.InlineKeyboardButton(text='Ozon',
                                                  url='https://www.ozon.ru/category/varene-31561/bezvreda-101005855/')
            url_btn2 = types.InlineKeyboardButton(text='Wildberries',
                                                  url='https://www.wildberries.ru/brands/310609804-bezvreda')
            url_btn3 = types.InlineKeyboardButton(text='Instagram',
                                                  url='https://www.instagram.com/bezvreda.shop?igsh=OHhmYzFlbm5uMHp1')
            url_btn4 = types.InlineKeyboardButton(text='Яндекс Маркет',
                                                  url='https://market.yandex.ru/business--otel-park-krestovskii-restoran/110479582')
            url_btn5 = types.InlineKeyboardButton(text='ВКонтакте', url='https://vk.com/bezvreda.shop')
            keyboard.row(url_btn)
            keyboard.row(url_btn1)
            keyboard.row(url_btn2)
            keyboard.row(url_btn3)
            keyboard.row(url_btn4)
            keyboard.row(url_btn5)

            bot.send_message(message.chat.id, 'Пожалуйста, мы много где есть', reply_markup=keyboard)

        elif message.text == 'Написать в поддержку':
            keyboard = types.InlineKeyboardMarkup()
            whatsapp_url = f"https://wa.me/+79623456710"
            whatsapp_button = types.InlineKeyboardButton(text='Написать в WhatsApp', url=whatsapp_url)
            keyboard.add(whatsapp_button)
            bot.send_message(message.chat.id, 'Если у вас есть вопросы, вы можете написать нам в WhatsApp.',
                             reply_markup=keyboard)

        elif message.text == "Получить скидку":
            bot.send_message(message.chat.id, 'Введите промокод ILYA и получите скидку в размере 100 рублей')

        elif message.text == 'Назад':
            markup = main_menu_markup()  # Используем функцию для создания разметки
            bot.send_message(message.chat.id, 'Вы вернулись в главное меню. Выберите опцию:', reply_markup=markup)

        # Добавляем обработку для 'Получить тренировки'
        elif message.text == 'Получить тренировки':
            ask_gender(message)


def markup_days():
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.add('1 день', '2 день', '3 день')
    return markup


def send_training_videos(chat_id, gender, day):
    videos = {
        'женщин': {
            '1 день': ['https://youtu.be/zB7DVYSltGM?si=8sC2aIW98ASacmy2',
                       'https://youtu.be/cYmmA3UOCnk?si=KxPeXoA4PDrRigw5',
                       'https://youtu.be/8BS9MPIEn_o?si=J5z8CT4uJPVU0BbG',
                       'https://youtu.be/gif2xzzGcT0?si=knAe_dGa-xwKNj4S',
                       'https://youtu.be/nNG4zOgOLCw?si=adyH28PfDZ53vAf-',
                       'https://youtu.be/D53V5HF9JRc?si=MYTo1xl3jjSwTnUi',
                       'https://youtu.be/Fp4FxZiDvLI?si=q8KutbSC3rpJyZdf'],  # Замените на реальные URL видео
            '2 день': ['https://youtu.be/eeMV_OMKm8Y?si=blDpvAOFoE50hsMJ',
                       'https://youtu.be/Hh0XdqNWPPY?si=CX9unZ9jX-5eVDcP',
                       'https://youtu.be/7cyRSkiOBTM?si=K8adcSEQ48Y6H96v',
                       'https://youtu.be/H3dTGZyF6Rg?si=rIBpgyLGKcy8Re06',
                       'https://youtu.be/rar8LZx-qQ8?si=1HzBiBrF_b929L-K',
                       'https://youtu.be/E2gzxNek918?si=Fb8QYy1v1qXlEHjT',
                       'https://youtu.be/wMKigF6ravQ?si=t3E_Zw4LK82LH-oA'],
            '3 день': ['https://youtu.be/zB7DVYSltGM?si=VIO8OcIKy_rm2__t',
                       'https://youtu.be/cYmmA3UOCnk?si=d2eHKo2IsMvEVfT5',
                       'https://youtu.be/8BS9MPIEn_o?si=EjiGSW8a0zNJTPbU',
                       'https://youtu.be/7q93t7Ev4j8?si=LIgTSc9EvGChJT3R',
                       'https://youtu.be/JDx-Ggm3oWk?si=hQ5w_8xgyPQgNr6o']
        },
        'мужчин': {
            '1 день': ['https://youtu.be/rBnsfJQm3hI?si=eJvMd7u6MmzsxzpE',
                       'https://youtu.be/rI2K0aIcevY?si=HIDbO9RjvNeSA2xG',
                       'https://youtu.be/bN7MHzqL7qM?si=w5n1hYwEA6bFJXA_',
                       'https://youtu.be/Im5zP08xkd8?si=wjwrksvqbCWgyFbP',
                       'https://youtu.be/qPM5Ce7fzRI?si=IBL5WxYZL_faifJi',
                       'https://youtu.be/Ts9HaWcCBx8?si=ot5GwPanqvzvYOS0'],
            '2 день': ['https://youtu.be/zB7DVYSltGM?si=fCPkJK_v4RAHcIOc',
                       'https://youtu.be/cYmmA3UOCnk?si=Td0SUhO3wj8jLK9K',
                       'https://youtu.be/TxwfsYfjUjQ?si=Z7VS0vKKuSgpZHe5',
                       'https://youtu.be/Wds8doK8TAs?si=5-mGjhWYbSXQZF86',
                       'https://youtu.be/nNG4zOgOLCw?si=zzupI0momLk2xYUw',
                       'https://youtu.be/4-7MtP1LzDc?si=hUJWz1Z9JosWRhXP',
                       'https://youtu.be/C9sde0W-ccc?si=fTz0dqDOGSQ3w51z'],
            '3 день': ['https://youtu.be/rZQbiLKjX0Q?si=LMlHHOg4H51xfXS8',
                       'https://youtu.be/Hh0XdqNWPPY?si=tOYFrn5UInQ78QFR',
                       'https://youtu.be/7cyRSkiOBTM?si=Jltwp3Gtrh2jDtxW',
                       'https://youtu.be/MvGMzovqTvc?si=JykJBNZR3--IBjAh',
                       'https://youtu.be/srgu9Slf5Oc?si=fW9QKo3LAMqce7Nd',
                       'https://youtu.be/E2gzxNek918?si=y8V4mNSFOeSAvR2c',
                       'https://youtu.be/wMKigF6ravQ?si=L-QbkxLIASmIV6MS']            # Замените на реальные URL видео
        }
    }
    video_urls = videos[gender][day]
    for video_url in video_urls:
        send_youtube_video(chat_id, video_url)


def ask_gender(message):
    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
    button_male = types.KeyboardButton('Мужчина')
    button_female = types.KeyboardButton('Женщина')
    markup.add(button_male, button_female)
    bot.send_message(message.chat.id, 'Пожалуйста, выберите ваш пол:', reply_markup=markup)


@bot.message_handler(func=lambda message: message.text in ['Мужчина', 'Женщина'])
def gender_selected(message):
    user_id = message.from_user.id
    gender = 'мужчин' if message.text == 'Мужчина' else 'женщин'
    user_gender[user_id] = gender
    logger.info(f"Пол пользователя {user_id} выбран: {gender}")
    ask_training_day(message)


def ask_training_day(message):
    logger.info("Функция ask_training_day вызвана")
    markup = markup_days()
    bot.send_message(message.chat.id, 'Выберите день тренировки:', reply_markup=markup)


@bot.message_handler(func=lambda message: message.text in ['1 день', '2 день', '3 день'])
def training_day_selected(message):
    user_id = message.from_user.id
    if user_id in user_gender:
        gender = user_gender[user_id]
        send_training_videos(message.chat.id, gender, message.text)
    else:
        ask_gender(message)


bot.polling(none_stop=True)

При нажатии пользователем кнопки: получить тренировки у пользователя запрашивается его пол, но после выбора пола больше ничего не выводится, ни дни тренировок, ни видео. Как это решить?
  • Вопрос задан
  • 67 просмотров
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы