Сделать многоуровневое меню ТГ бота на python (reply кнопки)
Нужно чтобы было последовательное дерево: пользователь выбирает тип мусора и после выбирает район нужно чтобы если пользователь выбрал допустим металл то вся та часть кода которая до металла не использовалась тк сейчас код работает не корректно
import telebot
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
# переменные
# Вывод всех кнопок
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("♻️Пластик")
btn2 = types.KeyboardButton("♻️Стекло")
btn3 = types.KeyboardButton("♻️Металл")
btn4 = types.KeyboardButton("♻️Бумага")
btn5 = types.KeyboardButton("♻️Пищевые отходы")
markup.add(btn1, btn2, btn3, btn4, btn5) # Добавление сущности кнопок
bot.send_message(message.chat.id,
"Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, созданный чтобы помогать сортировать мусор жителям Питера ✅".format(
message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)
bot.send_message(message.chat.id,
"Пожалуйста, для начала, выберите категорию вашего мусора из предложенных (для управления ботом использвуте кнопки)") # Самые первые сообщения
# Вывод действий на кнопки
@bot.message_handler(content_types=['text'])
def func(message):
if message.chat.type == 'private':
vvod = message.text
if (message.text == "♻️Пластик"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Адмиралтейский")
btn2 = types.KeyboardButton("Василеостровский")
btn3 = types.KeyboardButton("Выборгский")
btn4 = types.KeyboardButton("Калининский")
btn5 = types.KeyboardButton("Кировский")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пластик", reply_markup=markup)
bot.send_message(message.chat.id, text="Выберите ваш район Питера", reply_markup=markup)
if (message.text == "Адмиралтейский"):
bot.send_message(message.chat.id, text="Вы выбрали Адмиралтейский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пластик")
elif (message.text == "Василеостровский"):
bot.send_message(message.chat.id, text="Вы выбрали Василеостровский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пластик")
elif (message.text == "Выборгский"):
bot.send_message(message.chat.id, text="Вы выбрали Выборгский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пластик")
elif (message.text == "Калининский"):
bot.send_message(message.chat.id, text="Вы выбрали Калининский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пластик")
elif (message.text == "Кировский"):
bot.send_message(message.chat.id, text="Вы выбрали Кировский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пластик")
elif (message.text == "♻️Стекло"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Адмиралтейский")
btn2 = types.KeyboardButton("Василеостровский")
btn3 = types.KeyboardButton("Выборгский")
btn4 = types.KeyboardButton("Калининский")
btn5 = types.KeyboardButton("Кировский")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, text="Вы выбрали ♻️Стекло", reply_markup=markup)
bot.send_message(message.chat.id, text="Выберите ваш район Питера", reply_markup=markup)
if (message.text == "Адмиралтейский"):
bot.send_message(message.chat.id, text="Вы выбрали Адмиралтейский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Стекло")
elif (message.text == "Василеостровский"):
bot.send_message(message.chat.id, text="Вы выбрали Василеостровский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Стекло")
elif (message.text == "Выборгский"):
bot.send_message(message.chat.id, text="Вы выбрали Выборгский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Стекло")
elif (message.text == "Калининский"):
bot.send_message(message.chat.id, text="Вы выбрали Калининский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Стекло")
elif (message.text == "Кировский"):
bot.send_message(message.chat.id, text="Вы выбрали Кировский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Стекло")
elif (message.text == "♻️Металл"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Адмиралтейский")
btn2 = types.KeyboardButton("Василеостровский")
btn3 = types.KeyboardButton("Выборгский")
btn4 = types.KeyboardButton("Калининский")
btn5 = types.KeyboardButton("Кировский")
markup.add(btn1, btn2, btn3, btn4, btn5)
if (message.text == "Адмиралтейский"):
bot.send_message(message.chat.id, text="Вы выбрали Адмиралтейский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Металл")
elif (message.text == "Василеостровский"):
bot.send_message(message.chat.id, text="Вы выбрали Василеостровский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Металл")
elif (message.text == "Выборгский"):
bot.send_message(message.chat.id, text="Вы выбрали Выборгский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Металл")
elif (message.text == "Калининский"):
bot.send_message(message.chat.id, text="Вы выбрали Калининский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Металл")
elif (message.text == "Кировский"):
bot.send_message(message.chat.id, text="Вы выбрали Кировский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Металл")
elif (message.text == "♻️Бумага"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Адмиралтейский")
btn2 = types.KeyboardButton("Василеостровский")
btn3 = types.KeyboardButton("Выборгский")
btn4 = types.KeyboardButton("Калининский")
btn5 = types.KeyboardButton("Кировский")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, text="Вы выбрали ♻️Бумага", reply_markup=markup)
bot.send_message(message.chat.id, text="Выберите ваш район Питера", reply_markup=markup)
if (message.text == "Адмиралтейский"):
bot.send_message(message.chat.id, text="Вы выбрали Адмиралтейский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Бумага")
elif (message.text == "Василеостровский"):
bot.send_message(message.chat.id, text="Вы выбрали Василеостровский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Бумага")
elif (message.text == "Выборгский"):
bot.send_message(message.chat.id, text="Вы выбрали Выборгский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Бумага")
elif (message.text == "Калининский"):
bot.send_message(message.chat.id, text="Вы выбрали Калининский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Бумага")
elif (message.text == "Кировский"):
bot.send_message(message.chat.id, text="Вы выбрали Кировский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Бумага")
elif (message.text == "♻️Пищевые отходы"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Адмиралтейский")
btn2 = types.KeyboardButton("Василеостровский")
btn3 = types.KeyboardButton("Выборгский")
btn4 = types.KeyboardButton("Калининский")
btn5 = types.KeyboardButton("Кировский")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пищевые отходы", reply_markup=markup)
bot.send_message(message.chat.id, text="Выберите ваш район Питера", reply_markup=markup)
if (message.text == "Адмиралтейский"):
bot.send_message(message.chat.id, text="Вы выбрали Адмиралтейский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пищевые отходы")
elif (message.text == "Василеостровский"):
bot.send_message(message.chat.id, text="Вы выбрали Василеостровский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пищевые отходы")
elif (message.text == "Выборгский"):
bot.send_message(message.chat.id, text="Вы выбрали Выборгский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пищевые отходы")
elif (message.text == "Калининский"):
bot.send_message(message.chat.id, text="Вы выбрали Калининский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пищевые отходы")
elif (message.text == "Кировский"):
bot.send_message(message.chat.id, text="Вы выбрали Кировский район")
bot.send_message(message.chat.id, text="Вы выбрали ♻️Пищевые отходы")
bot.polling(none_stop=True)