Как сделать несколько ветвлений для телеграмм-бота?

Всем привет. Пока что я только учусь писать ботов для тг, поэтому у меня могут возникать глупые ошибки, извиняюсь за это)) Так вот, бот не работает так, как должен, по задумке, он должен после слов ИТМО или СПБГУ отправлять фотку и сообщение, но он этого не делает. Проблемная часть кода выделена. Памагити

@bot.message_handler(content_types=['text'])
def ra(message):
    if message.chat.type == 'private':
        mark = types.ReplyKeyboardMarkup(resize_keyboard=True)
        A = types.KeyboardButton('Питер')
        B = types.KeyboardButton('Москва')
        C = types.KeyboardButton('Казань')

        mark.row(A, B, C)

        if message.text == 'Питер':
            bot.send_photo(message.chat.id, 'ссылка', 'Прекрасно!')

            mar = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
            buttonE = types.KeyboardButton('ИТМО')
            buttonF = types.KeyboardButton('СПбГУ')

            mar.row(buttonE, buttonF)

            bot.send_message(message.chat.id, 'Ну а теперь вузы!', reply_markup=mar)

            *if message.text == 'ИТМО':
                bot.send_photo(message.chat.id, 'ссылка', 'Уууу')
                
            elif message.text == 'СПбГУ':
                bot.send_photo(message.chat.id, 'ссылка', 'Ясненько')*

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

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

Во-первых хватит делать хендлеры которые ловят в себя все, а потом извращаться с ифами внутри функции. Делайте фильтры, внутри декоратора. Это и красивее и меньше мусора.
Вот примерный код, но в зависимости от того как вы будете обрабатывать ответ, можно сделать лучше

from telebot import TeleBot, types
from telebot.types import ReplyKeyboardMarkup

import config

bot = TeleBot(config.BOT_TOKEN)


@bot.message_handler(commands=["start"])
def start(message: types.Message):
    markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
    markup.row("Питер", "Москва", "Казань")
    bot.send_message(message.chat.id, "Выбери город", reply_markup=markup)


@bot.message_handler(chat_types=["private"], func=lambda msg: msg.text == "Питер")
def if_sp(message: types.Message):
    # bot.send_photo(message.chat.id, 'ссылка', 'Прекрасно!')

    markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
    markup.row('ИТМО', 'СПбГУ')
    bot.send_message(message.chat.id, 'Ну а теперь ВУЗ!', reply_markup=markup)


@bot.message_handler(chat_types=["private"], func=lambda msg: msg.text == "ИТМО")
def if_itmo(message: types.Message):
    # bot.send_photo(message.chat.id, 'ссылка', 'Уууу')
    pass


@bot.message_handler(chat_types=["private"], func=lambda msg: msg.text == "СПбГУ")
def if_spbgu(message: types.Message):
    # bot.send_photo(message.chat.id, 'ссылка', 'Ясненько')
    pass


bot.infinity_polling(skip_pending=True)
→ Ссылка