Ожидание ввода пользователя с присвоением введённого переменной
import telebot
from telebot import types
from telebot.types import ReplyKeyboardMarkup
from youtubesearchpython import Search
bot = telebot.TeleBot('Your_Token')
@bot.message_handler(commands=['start'])
def Startbot(message):# Название функции не играет никакой роли, в принципе
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton('Запуск')
button2 = types.KeyboardButton('Поиск техники')
markup.add(button1,button2)
bot.send_message(message.chat.id, "Привет {} {}! С помощь меня ты сможешь быстро и лекго найти нужную тебе технику айкидо".format(message.chat.first_name,message.chat.last_name),reply_markup=markup)
@bot.message_handler(content_types=['text'])
def search(message):
allSearch = Search(message, limit=1)
allSearch = allSearch.result()
allSearch = str(allSearch['result'])
allSearch = allSearch.split(', ')
allSearch = allSearch[-2]
allSearch = allSearch.split()
allSearch = allSearch[-1][1:-1]
bot.send_message(message.chat.id, allSearch)
def start(message):
markup: ReplyKeyboardMarkup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton('Запуск')
button2 = types.KeyboardButton('Поиск техники')
markup.add(button1, button2)
if message.chat.type == 'private':
if message.text == 'Поиск техники':
search()
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: Violet
→ Ссылка
В Вашем коде функция search будет выполнятся при отправке боту любого сообщения, т.к. указан обработчик с типом text.
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton('Запуск')
button2 = types.KeyboardButton('Поиск техники')
markup.add(button1, button2)
bot.send_message(message.chat.id,
"Привет {} {}! С помощь меня ты сможешь быстро и лекго найти нужную тебе технику айкидо".format(
message.chat.first_name, message.chat.last_name), reply_markup=markup)
# функция some будет выполнятся при отправке боту любого сообщения, т.к. указан обработчик с типом text, if message.text важен
@bot.message_handler(content_types=['text'])
def some(message):
if message.chat.type == 'private':
if message.text == 'Поиск техники':
msg = bot.send_message(message.chat.id, 'Что будем искать?')
bot.register_next_step_handler(msg, some_1)
def some_1(message):
print(f'на предыдущем шаге введено {message.text}')
bot.send_message(message.chat.id, Search(message.text, limit=1).result()['result'][0]['link'])
Если я всё правильно понял, то нужно отправлять пользователю ссылку на видео исходя из того что он введёт.
В приведённом примере:
- в ответ на
/startбот пришлётReplyкнопки: Запуск и Поиск техники - нажатие на Поиск техники запустит ожидание ввода от пользователя (
bot.register_next_step_handler) - после получения сообщения от пользователя выполнится функция
Search(from youtubesearchpython import Search) - после выполнения пользователю отправится ссылка на видео