Помогите с ботом для телеграма через pyTelegramBotAPI на Питоне/Python

Делаю тренировочного бота лично для себя, учусь только. Как должно быть: пользователь вписывает /vk, бот просит написать имя человека (из тех имён, что знает), пользователь пишет имя (в примере ниже это Ладислав Ковыч), бот скидывает ему ссылку на страничку в вк. Вот моя попытка это выразить:

@bot.message_handler(commands=['vk'])
def vk(message):
    bot.send_message(message.chat.id, 'Введите имя человека, чью страничку хотите посетить.\n\nИмеются странички следующих людей:\nЛадислав Ковыч')
    if message.text.upper() == 'ЛАДИСЛАВ КОВЫЧ':
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton('Страничка выбранного человека', url='https://vk.com/*страничка*'))
        bot.send_message(message.chat.id, 'Лови: ', reply_markup=markup)

Ошибок не выдаёт, но бот на вписываемое мной имя никак не реагирует. Пишу "Ладислав Ковыч", а он вместо того, чтобы скинуть его страничку, просто игнорит. Последние три строчки (начиная с markup = ...) вне if работают, с ними всё норм. Проблема, как я понимаю, именно в if. Все остальные функции в коде я закомментировал, они не межают. Помогите, пожалуйста! Заранее спасибо!


Ответы (1 шт):

Автор решения: Pigeoncatcher

Проблема в том, что вы просите ввести имя человека и ожидаете, что функция продолжит выполнение с этого места, хотя это не так. Для того, чтобы взаимодействовать с введенным текстом нужно использовать метод register_next_step_handler. Вот как это выглядит:

@bot.message_handler(commands=['vk'])
def vk(message):
    msg = bot.send_message(message.chat.id, 'Введите имя человека, чью страничку хотите посетить.\n\nИмеются странички следующих людей:\nЛадислав Ковыч')
    bot.register_next_step_handler(msg,send_page)
    
def send_page(message):
    if message.text.upper() == 'ЛАДИСЛАВ КОВЫЧ':
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton('Страничка выбранного человека', url='https://vk.com/*страничка*'))
        bot.send_message(message.chat.id, 'Лови: ', reply_markup=markup)
→ Ссылка