@Zero_Soldat

Какие есть ошибки в коде и как исправить?

import telebot
from telebot import types # для указание типов
import config

bot = telebot.TeleBot(config.token)

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("24 маршрут")
    btn2 = types.KeyboardButton("22 маршрут")
    markup.add(btn1, btn2)
    bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот ".format(message.from_user),reply_markup=markup)
    
@bot.message_handler(content_types=['text'])
def func(message):
    if(message.text == "24 маршрут"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Начальный пункт")
        btn2 = types.KeyboardButton("Конечный пункт")
        back = types.KeyboardButton("Вернуться в главное меню")
        markup.add(btn1, btn2, back)
        bot.send_message(message.chat.id, text="Выбери пункт", reply_markup=markup)
    
    elif(message.text == "Начальный пункт"):
        bot.send_message(message.chat.id, text="11:11")
    
    elif message.text == "Конечный пункт":
        bot.send_message(message.chat.id, text="22:22")
    
    elif (message.text == "Вернуться в главное меню"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("24 маршрут")
        button2 = types.KeyboardButton("22 маршрут")
        markup.add(button1, button2)
        bot.send_message(message.chat.id, text="Вы вернулись в главное меню", reply_markup=markup)

@bot.message_handler(content_types=['text'])            
def function(message):
    if(message.text == "22 маршрут"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn3 = types.KeyboardButton("Начальный пункт")
        btn4 = types.KeyboardButton("Конечный пункт")
        back2 = types.KeyboardButton("Вернуться в главное меню")
        markup.add(btn3, btn4, back2)
        bot.send_message(message.chat.id, text="Выберите пункт", reply_markup=markup)
    
    elif(message.text == "Начальный пункт"):
        bot.send_message(message.chat.id, text="33:33")
    
    elif message.text == "Конечный пункт":
        bot.send_message(message.chat.id, text="44:44")
    
    elif (message.text == "Вернуться в главное меню"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("24 маршрут")
        button2 = types.KeyboardButton("22 маршрут")
        markup.add(button1, button2)
        bot.send_message(message.chat.id, text="Вы вернулись в главное меню", reply_markup=markup)

bot.polling(none_stop=True)

Есть данный код, и по идеи после команды /start должны высвечиваться 2 кнопки. "24 маршрут" и "22 маршрут". Когда нажимаешь на кнопку ( и на 22 маршурт, и на 24 маршрут ), то появляются 3 новые кнопки. "Начальный пункт" "Конечный пункт" и "Вернуться в главное меню". И при нажатии на кнопку "24 маршрут" всё работает, а когда нажимаешь на 22 маршрут нечего не происходит.
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
у вас 2 хендлера подряд, настренные на прием текстового сообщения. В таком случае срабатывает первый. В нем как раз и проверяется 24 маршрут.
Либо заносите проверку в хендлер, либо все объединяйте в одну функцию
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект