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