Советую начать с выбора модели велика. Это видимо единственный пункт, который выбирается Inline кнопками.
Да и если у пользователя велосипед не из предложенного набора, тут же соскочит и не будет вводить лишнее.
возьму ваш же код за основу и чуть видоизменю
...
elif message.text == ' Регистрация велосипеда ':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
btn1 = types.KeyboardButton(' Где наша мастерская? ')
btn2 = types.KeyboardButton(' Посмотреть прайс на ремонт ')
btn3 = types.KeyboardButton(' Наши контакты ')
btn4 = types.KeyboardButton('⏭ Далее ⏭')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(message.chat.id, 'Давайте запишем Ваш байк в базу данных.', reply_markup=markup)
markup_inline = types.InlineKeyboardMarkup()
# Обратите внимание на callback_data при создании кнопки
bk1 = types.InlineKeyboardButton(text='Stels', callback_data='bike_model|Stels')
bk2 = types.InlineKeyboardButton(text='Forvard', callback_data='bike_model|Forvard')
bk3 = types.InlineKeyboardButton(text='Кама', callback_data='bike_model|Кама')
bk4 = types.InlineKeyboardButton(text='Урал', callback_data='bike_model|Урал')
markup_inline.add(bk1, bk2, bk3, bk4)
bot.send_message(message.chat.id, 'Выберите модель', reply_markup=markup_inline)
# На случай, если у вас будут еще какие-либо инлайн кнопки,
# этот хендлер сработает только на тех, у которых callback_data начинается с bike_model
@bot.callback_query_handler(func=lambda call: call.data.startswith('bike_model'))
def reg(call):
# получаем модель велика
bike_model = call.data.split('|')[1]
chat_id = call.message.chat.id
conn = sqlite3.connect('db.db')
cursor = conn.cursor()
cursor.execute(f"UPDATE users SET brand = {bike_model} WHERE chat_id = {chat_id}")
conn.commit()
conn.close()
bot.send_message(chat_id, f'Записали!\nИдем дальше.')
mes = bot.send_message(chat_id, 'Введите серийный номер')
bot.register_next_step_handler(mes, serial_number)
def serial_number(message):
...
Дальше идет стандартная череда функций с
register_next_step_handler