Проблема с кнопками в телеграмм боте на telebot. Я ожидал простого решения, но не тут то было

Я пытался сделать это все через обычные операторы if/elif/else, на самом деле все не так просто.

#import modules
import telebot
from telebot import types
#import function for delete btns
import del_btn
#token
token = 'YOUR_TOKEN'
#create connect for telegramm bot
bot = telebot.TeleBot(token)
#process command /start  and add 1st btns
@bot.message_handler(commands=['start'])
def menu(m, res=False):
    menu = types.ReplyKeyboardMarkup(row_width=1) #importart thing for new btn
    #create 7 new btn
    btn1 = types.KeyboardButton('Программирование?')
    btn2 = types.KeyboardButton('Менеджмент?‍?')
    btn3 = types.KeyboardButton('Кибербезопасность?‍?')
    btn4 = types.KeyboardButton('Дизайн?')
    btn5 = types.KeyboardButton('Сетевые технологии?')
    btn6 = types.KeyboardButton('Искусственный Интелект?')
    btn7 = types.KeyboardButton('Большие данные?')
    menu.add(btn1, btn2, btn3, btn4, btn5, btn6, btn7)
    bot.send_message(m.from_user.id, 'Привет, я твой бот-помощник в мире ИТ?Какие направления тебя интересуют❔', reply_markup=menu)
@bot.message_handler(content_types=['text'])
def act(msg):
    if msg.text == 'Del btn':
        del_btn()
    if msg.text == "Программирование?":
        markup = types.ReplyKeyboardMarkup(row_width=1)
        btn1 = types.KeyboardButton('Что это вообще такое❔')
        btn2 = types.KeyboardButton('Какие бывают направления❔')
        btn3 = types.KeyboardButton('Как стать программистом❔')
        markup.add(btn1, btn2, btn3)
        bot.send_message(msg.from_user.id, 'Какие вопросы тебя интересуют❔', reply_markup=markup)
        if msg.text == 'Что это вообще такое❔':
            bot.reply_to(msg, 'Программирование - это процесс создания инструкций, которые компьютер может выполнить.?\nЧеловек использует специальные языки программирования, чтобы написать код, который сообщает компьютеру, что конкретно нужно делать.?\nРезультатом программирования становится создание различных приложений, сайтов, игр и других компьютерных программ?')
            bot.send_photo(msg.chat.id, 'https://twcdn.ru/uploads/images/large/content/articles/R3hxZxc4.jpg', reply_markup=markup)
        if msg.text == 'Какие бывают направления❔':
            bot.reply_to(msg, 'Программирование')
        if msg.text == 'Как стать программистом❔':
            bot.reply_to(msg, '?')


#turn on bot 
bot.polling(none_stop=True,interval=0)

Сама проблема кроется в функции act(msg) т.к. код, после добавления 3х кнопок "Что это вообще такое❔", "Какие бывают направления❔", "Как стать программистом❔", ведь после нажатия на них ничего не происходит. Я также пытался сделать обработку "этих" кнопок через цикл while и, используя после выполнения условия break, он должен был работать.

while True:
   if msg.text == 'Что это вообще такое❔':
      bot.reply_to(msg, 'Программирование - это процесс создания инструкций, которые компьютер может выполнить.?\nЧеловек использует специальные языки программирования, чтобы написать код, который сообщает компьютеру, что конкретно нужно делать.?\nРезультатом программирования становится создание различных приложений, сайтов, игр и других компьютерных программ?')
      bot.send_photo(msg.chat.id, 'https://twcdn.ru/uploads/images/large/content/articles/R3hxZxc4.jpg', reply_markup=markup)
      break
   if msg.text == 'Какие бывают направления❔':
       bot.reply_to(msg, 'Программирование')
       break
   if msg.text == 'Как стать программистом❔':
       bot.reply_to(msg, '?')
       break

Я пытался добавлять это как лесенку, но результат один и тот же... Help pls


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

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

Задумка была бы не плохой если бы не одно но, чтобы те проверки работали нужно сделать, что то типа кабинета, т.е при нажатии на какую ту кнопку пользователь переходит на другую комнату у которой другое название, сделайте на время переменную с типа данных str(можно и int)и при нажатии на кнопку если переменная равна "newc" то переменная меняла название и названия кнопок, и так с остальными, и допустим нужно назад, то переменная меняет название на предыдущее название, и советую не делать так проверки, можно сделать так

if msg.text == "text1":
   #код
elif msg.text == "text2":
   #код
elif msg.text == "text3":
   #код

После теста сделайте базу данных где будет храниться вся инфа о пользователе (в том числе и кабинет), переходите на aiogram:) Надеюсь мой помысл ясен.

→ Ссылка
Автор решения: flexyyy
room = "None"

@bot.message_handler(commands=['start'])
def start(message):
   markup = types.ReplyKeyboardMarkup()
   markup.add("Кнопка1", "Кнопка2")
   
   bot.send_message("Текст", reply_markup=markup)

@bot.message_handler(content_types=['text'])
def text(message):
   global room
   if message.text == "Кнопка1":
      room = "NewRoom"
      #...
   elif room == "NewRoom":
      #...
→ Ссылка