Python Telebot (PyTelegramBotAPI)

'''Я начинающий'''
Хочу написать бота для анкет (приятная версия гугл формы - идейно).

Есть более или менее работающий код, однако, он считывает данные телеграмм аккаунта (имя, фамилия).
В чем нужна помощь: Как научить его принимать введенное имя, и уже после запускать часть с выбором из меню?

На данный момент, после ввода имени выходит сообщение "Рад знакомству с тобой (введенное имя)". Затем выходит меню, но после выбора пункта бот присылает : "Рад знакомству с тобой (опросник/помощь/итд)". Буду искренне рад любой помощи и подсказкам в целом по изучению написания ботов, спасибо!

from telebot import types

bot = telebot.TeleBot('токен')


@bot.message_handler(commands=['start'])
def start(message):
    send_mess = f"<b>Привет, я твой личный помощник</b>!\n What's your name?"
    bot.send_message(message.chat.id, send_mess, parse_mode='html')


@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    grt = 'Рад знакомству с тобой'
    bot.send_message(message.chat.id, grt + ' ' + message.text)


@bot.message_handler(content_types=['text'])
def mess(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
    btn1 = types.KeyboardButton('Опросники')
    btn2 = types.KeyboardButton('Помощь')
    btn3 = types.KeyboardButton('Плюшки')
    btn4 = types.KeyboardButton('Фидбек')
    btn5 = types.KeyboardButton('FAQ')
    markup.add(btn1, btn2, btn3, btn4, btn5)
    send_mess = f"<b>Выбери подходящий вариант</b>"
    bot.send_message(message.chat.id, send_mess, parse_mode='html', reply_markup=markup)


@bot.message_handler(content_types=['text'])
def mess(message):
    get_message_bot = message.text.strip().lower()

    if get_message_bot == "начать тест заново":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        btn1 = types.KeyboardButton('Опросники')
        btn2 = types.KeyboardButton('Помощь')
        btn3 = types.KeyboardButton('Плюшки')
        btn4 = types.KeyboardButton('Фидбек')
        btn5 = types.KeyboardButton('FAQ')
        markup.add(btn1, btn2, btn3, btn4, btn5)
        final_message = "Решил попробовать что-то ещё? \nВыбери какое направление тебя интересует:"

    elif get_message_bot == "опросники":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        btn1 = types.KeyboardButton('1')
        btn2 = types.KeyboardButton('2')
        markup.add(btn1, btn2)
        final_message = "текст"
    else:
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        btn1 = types.KeyboardButton('Опросники')
        btn2 = types.KeyboardButton('Помощь')
        btn3 = types.KeyboardButton('Плюшки')
        btn4 = types.KeyboardButton('Фидбек')
        btn5 = types.KeyboardButton('FAQ')
        markup.add(btn1, btn2, btn3, btn4, btn5)
        final_message = "Так, так, так\nПостой, лучше нажми на одну из интерактивных кнопок ниже"
    bot.send_message(message.chat.id, final_message, parse_mode='html', reply_markup=markup)


bot.polling(none_stop=True)

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

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

Я бы немного переделал ваш код, таким образом:

import telebot
from telebot import types

bot = telebot.TeleBot('1780012919:AAHPhWajy-Vi7MvQN51RLagd5cXn9QQMD1M')

markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
btn1 = types.KeyboardButton('Опросники')
btn2 = types.KeyboardButton('Помощь')
btn3 = types.KeyboardButton('Плюшки')
btn4 = types.KeyboardButton('Фидбек')
btn5 = types.KeyboardButton('FAQ')
markup.add(btn1, btn2, btn3, btn4, btn5)

markup2 = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
btn1 = types.KeyboardButton('1')
btn2 = types.KeyboardButton('2')
markup2.add(btn1, btn2)

@bot.message_handler(commands=['start'])
def start(message):
    username = message.from_user.username
    bot.send_message(message.chat.id,  "Let`s start!", reply_markup=markup)
    send_mess = f"Привет, {username}! Я твой личный помощник!"
    bot.send_message(message.chat.id, send_mess, reply_markup=markup)



def mess(message):
    send_mess = "Выбери подходящий вариант"
    bot.send_message(message.chat.id, send_mess, reply_markup=markup)


@bot.message_handler(func=lambda message: message.text =='начать тест заново')
def foo(message):
    final_message = "Решил попробовать что-то ещё? \nВыбери какое направление тебя интересует:"
    bot.send_message(message.chat.id, final_message, reply_markup=markup)


@bot.message_handler(func=lambda message: message.text =="Опросники")
def foo(message):
    final_message = "текст"
    bot.send_message(message.chat.id, final_message, parse_mode='html', reply_markup=markup2)


bot.polling(none_stop=True)
→ Ссылка
Автор решения: Am.Per

Предлагаю так:

import telebot
from telebot import types

bot = telebot.TeleBot('TOKEN')

btn = ['Опросники', 'Помощь', 'Плюшки', 'Фидбек', 'FAQ']
btn_list = [types.KeyboardButton(text=x) for x in btn]

name = ''

answer_list = [1, 2, 3]

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id,  "Let`s start!")
    send_mess = bot.send_message(message.chat.id, 'Введите имя:')
    bot.register_next_step_handler(send_mess, name)

def name(message):
    global name
    button = types.ReplyKeyboardMarkup(resize_keyboard=True)
    button.add(*btn_list)
    name = message.text
    send_mess = bot.send_message(message.chat.id, f'Привет {name}\nВыбери раздел:', reply_markup=button)
    bot.register_next_step_handler(send_mess, cat)

def cat(message):
    if message.text in btn:
        bot.send_message(message.chat.id, 'Я понял')
    else:
        send_mess = bot.send_message(message.chat.id, 'Я не понял')
        bot.register_next_step_handler(send_mess, cat)

bot.polling(none_stop=True)
→ Ссылка