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)
При нажатии пользователем кнопки: получить тренировки у пользователя запрашивается его пол, но после выбора пола больше ничего не выводится, ни дни тренировок, ни видео. Как это решить?