Задать вопрос
@chernykhy

Меню многоуровневое тг бота telebot почему не работает?

почему не работает продолжение СНИЛС т.е. кнопки и текст в def SNILS не выводятся

@bot.message_handler(func=lambda message: True)
def handle_message(message):
    if message.text == "Основные документы гражданина Российской Федерации":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        item1 = types.KeyboardButton(text="Паспорт РФ")
        item2 = types.KeyboardButton(text="Регистрация")
        item3 = types.KeyboardButton(text="Загранпаспорт")
        item4 = types.KeyboardButton(text="ИНН")
        item5 = types.KeyboardButton(text="Полис ОМС")
        item6 = types.KeyboardButton(text="СНИЛС")
        item7 = types.KeyboardButton(text="Водительское удостоверение")
        back_button = types.KeyboardButton(text="Назад")
        markup.add(item1, item2, item3, item4, item5, item6, item7, back_button)
        bot.send_message(
            message.chat.id,
            "Выберите интересующий вас тип документа:",
            reply_markup=markup,
        )

    elif message.text == "Паспорт РФ":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        item1 = types.KeyboardButton(text="Кто может получить?")
        item2 = types.KeyboardButton(text="Порядок получения Паспорта")
        back_button = types.KeyboardButton(text="Назад")
        markup.add(item1, item2, back_button)
        bot.send_message(
            message.chat.id,
            "Паспорт гражданина РФ - это основной документ, удостоверяющий личность гражданина России на ее территории, паспорт должны иметь все граждане РФ достигшие 14 лет",
            reply_markup=markup,
        )

    elif message.text == "Регистрация":
        bot.send_message(
            message.chat.id,
            "Регистрация: по месту жительства - постоянная регистрация, не имеющая срока; по месту пребывания - временная регистрация на определенный срок",
        )

    elif message.text == "Загранпаспорт":
        bot.send_message(
            message.chat.id,
            "Заграничный паспорт удостоверяет личность гражданина России в других странах, его можно получить в своем регионе",
        )

    elif message.text == "ИНН":
        bot.send_message(
            message.chat.id,
            "ИНН - индивидуальный номер налогоплательщика. Необходим для оплаты налогов, после получения паспорта РФ запрос на ИНН отправляется в налоговый орган автоматически",
        )

    elif message.text == "Полис ОМС":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        item1 = types.KeyboardButton(text="Кто может получить Полис ОМС?")
        item2 = types.KeyboardButton(text="Что оформить для получения?")
        item3 = types.KeyboardButton(text="С полисом можно")
        back_button = types.KeyboardButton(text="Назад")
        markup.add(item1, item2, item3, back_button)
        bot.send_message(
            message.chat.id,
            "Полис обязательного медицинского страхования (ОМС) — документ, подтверждающий право на бесплатную медицинскую помощь.\n"
            "С 2025 года получить бесплатную медицинскую помощь на территории Херсонской области смогут только застрахованные граждане,\n"
            "предъявив полис или документ, удостоверяющий личность",
            reply_markup=markup,
        )

    elif message.text == "СНИЛС":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        item1 = types.KeyboardButton(text="Кто может получить СНИЛС?")
        item2 = types.KeyboardButton(text="Зачем нужен СНИЛС?")
        item3 = types.KeyboardButton(text="Порядок получения СНИЛС")
        back_button = types.KeyboardButton(text="Назад")
        markup.add(item1, item2, item3, back_button)
        bot.send_message(
            message.chat.id,
            "Снилс - страховой номер индивидуального лицевого счета, необходим для оценки пенсионных прав,\n"
            "оформления соцвыплат, регистрации на госуслугах и получения госуслуг ПОЛУЧЕНИЕ СНИЛС В России Социальный фонд (СФР)\n"
            "открывает индивидуальный лицевой счёт (ИЛС) один раз каждому гражданину, иностранцу и лицу без гражданства, в том числе детям до 14 лет \n"
            "Страховой номер ИЛС (СНИЛС) состоит из 11 цифр и не меняется даже при замене документов или смене ФИО. Однако об изменении данных вы должны уведомить СФР",
            reply_markup=markup,
        )
        bot.register_next_step_handler(message, SNILS)

    elif message.text == "Водительское удостоверение":
        bot.send_message(
            message.chat.id,
            "это документ, подтверждающий право гражданина на управление транспортными средствами определенных категорий",
        )

    elif message.text == "Назад":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
        item1 = types.KeyboardButton(text="Паспорт РФ")
        item2 = types.KeyboardButton(text="Регистрация")
        item3 = types.KeyboardButton(text="Загранпаспорт")
        item4 = types.KeyboardButton(text="ИНН")
        item5 = types.KeyboardButton(text="Полис ОМС")
        item6 = types.KeyboardButton(text="СНИЛС")
        item7 = types.KeyboardButton(text="Водительское удостоверение")
        back_button = types.KeyboardButton(text="Назад")
        markup.add(item1, item2, item3, item4, item5, item6, item7, back_button)
        bot.send_message(
            message.chat.id,
            "Выберите интересующий вас тип документа:",
            reply_markup=markup,
        )
    

def SNILS(message):
    if message.text == "Кто может получить?":
        new_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        item1 = types.KeyboardButton(text="Кто может получить?")
        back_button = types.KeyboardButton(text="Назад")
        new_markup.add(item1, back_button)
        bot.send_message(
            message.chat.id,
            "• Гражданин РФ \n"
            "• Иностранец или лицо без гражданства \n"
            "• Представитель по доверенности",
            reply_markup=new_markup,
        )
    elif message.text == "Зачем нужен СНИЛС?":
        new_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        back_button = types.KeyboardButton(text="Назад")
        new_markup.add(back_button)
        bot.send_message(
            message.chat.id,
            "СНИЛС нужен при трудоустройстве для пенсионных отчислений, оформления социальных выплат и пособий, \n"
            "а также регистрации на Госуслугах и сайтах ведомств. Он может потребоваться при подаче заявлений \n"
            "и получении государственных и муниципальных услуг"
        )

    elif message.text == "Порядок получения СНИЛС":
        new_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        item1 = types.KeyboardButton(text="Что оформить заранее?")
        item2 = types.KeyboardButton(text="Получение")
        new_markup.add(item1, item2)
        reply_keyboard=new_markup
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@twistfire92
Python backend developer
Все у вас работает.
Возможно вы тестировали работу только первой кнопки в меню СНИЛС. В ней ошибка. Сама кнопка содержит сообщение "Кто может получить СНИЛС?", а в функции SNILS проверка на строку "Кто может получить?".

Чтобы избежать таких ошибок, советую либо использовать константы, где будут содержаться значения кнопок, либо использовать Inline клавиатуру. Она даст больше маневров для построения многоуровнего меню.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы