Хочу создать бота на aiogram для скачивания видео с ютуб, но что очень важно, надо сделать так, чтоб после отправки ссылки от пользователя, бот спрашивал, скачать ему видео, аудио из видео, или всё вместе, но как только дохожу до момента вопроса, почему то не работают мои функции для скачки видео, хотя если убрать вопрос, и сделать так чтоб они оба вызывались вместо вопроса сразу, как только будет отправлена ссылка, всё работает идеально, но именно так поставить вопрос, чтоб после нажатия на инлайн кнопку он отправлял то что нужно не получается, хотя это важное условие
вот отрывок кода, куда маркап я впихнул основного файла
@dp.message_handler()
async def method(message: types.Message):
try:
if message.text.startswith == 'https://www.youtube.com/' or 'https://youtu.be/':
chat_id = message.chat.id
url = message.text
yt = YouTube(url)
option_text1 = f'*Начинаю загрузку видео:* *{yt.title} **c канала: *[{yt.author}]({yt.channel_url})'
option_text2 = f'*Ещё чуть чуть, и я скину вам видео:* *{yt.title} **c канала: *[{yt.author}]({yt.channel_url})'
option_text3 = f'*Идёт скачивание видео:* *{yt.title} **c канала: *[{yt.author}]({yt.channel_url})'
option_text4 = f'*Подождите немного, скачиваю видео:* *{yt.title} **c канала: *[{yt.author}]({yt.channel_url})'
option_text5 = f'*Почти готово, погодите минутку, скачиваю видео:* *{yt.title} **c канала: *[{yt.author}]({yt.channel_url})'
option_text6 = f'*Секунду, почти скачал видео:* *{yt.title} **c канала: *[{yt.author}]({yt.channel_url})'
random_chat_video_dowload = [
option_text1, option_text2, option_text3, option_text4, option_text5, option_text6]
await bot.send_message(chat_id, text=random.choice(random_chat_video_dowload), parse_mode='Markdown')
await message.answer(text=f'Выберите то, что хотите скачать', reply_markup=video_or_audio)
except:
await message.answer(text=f'Единственное что умеет этот бот, это скачивать видео из YouTube, что бы скачать видео, отправьте ссылку на него. \n'
f'Обычные сообщения не принимаются')
@dp.callback_query_handler()
async def callback_download(callback: types.CallbackQuery):
if callback.data == 'btn_audio':
url = types.Message.text
await download_youtube_audio(url, types.Message, bot)
await bot.send_message(types.Message.chat.id, text=f'*Ваш аудио звук готов к скачиванию.\nСпасибо, что выбираете нас*', parse_mode='Markdown')
elif callback.data == 'btn_video':
await bot.send_message(types.Message.chat.id, text=f'*Загрузка видео может занять более минуты, пожалуйста подождите*', parse_mode='Markdown')
url = types.Message.text
await download_youtube_video(url, types.Message, bot)
await bot.send_message(types.Message.chat.id, text=f'*Ваше видео готово к скачиванию.\nСпасибо, что выбираете нас*', parse_mode='Markdown')
elif callback.data == 'btn_all':
url = types.Message.text
await bot.send_message(types.Message.chat.id, text=f'*Загрузка видео может занять более минуты, пожалуйста подождите*', parse_mode='Markdown')
await download_youtube_audio(url, types.Message, bot)
await download_youtube_video(url, types.Message, bot)
await bot.send_message(types.Message.chat.id, text=f'*Ваше видео готово к скачиванию.\nСпасибо, что выбираете нас*', parse_mode='Markdown')
if __name__ == '__main__':
executor.start_polling(dp)
а вот код маркапов
btn_video = InlineKeyboardButton(
text='Видео', callback_data='video')
btn_audio = InlineKeyboardButton(
text='Аудио', callback_data='audio')
btn_all = InlineKeyboardButton(
text='Скачать всё', callback_data='all')
video_or_audio = InlineKeyboardMarkup(row_width=2)
video_or_audio.add(btn_audio, btn_video, btn_all)