Почему обработчик сообщений в telebot для состояния не срабатывает, несмотря на то что в другой функции все работает отлично?

У меня есть обработчик сообщений, который должен срабатывать, когда состояние пользователя в переменной user_data равно 'settings_'. Вот его код:

@bot.message_handler(func=lambda message: user_data.get(message.chat.id) == 'settings_')
def settings_(message):
    print(1)
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1 = types.InlineKeyboardButton("?Создать событие", callback_data='create_event')
    item2 = types.InlineKeyboardButton("?Создать команду", callback_data='create_command')
    markup.add(item1, item2)
    bot.send_message(message.chat.id, "Создайте события а также команды для изменения данных в таблице", reply_markup=markup)

Другие обработчики сообщений и обработчики callback-запросов работают корректно, но этот конкретный обработчик для состояния 'settings_' не срабатывает.

Убедился, что состояние правильно устанавливается:

user_data[call.message.chat.id] = 'settings_'

При вызове callback-запроса данные сохраняются в user_data, и это видно из отладочных сообщений.

Проверил порядок определения обработчиков — универсальный обработчик сообщений стоит последним. Вот весь код, связанный с настройкой состояния и обработчиками сообщений и callback-запросов:

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.message:
        if call.data == "create":
            user_data[call.message.chat.id] = "create_start"
            #Тут бот отправляет сообщение   

  
        elif call.data == "settings":
            user_data[call.message.chat.id] = 'settings_'
            bot.send_message(call.message.chat.id, "Настройки открыты")

@bot.message_handler(func=lambda message: user_data.get(message.chat.id) == 'settings_')
def settings_(message):
    print(1)
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1 = types.InlineKeyboardButton("?Создать событие", callback_data='create_event')
    item2 = types.InlineKeyboardButton("?Создать команду", callback_data='create_command')
    markup.add(item1, item2)
    bot.send_message(message.chat.id, "Создайте события а также команды для изменения данных в таблице", reply_markup=markup)

# Универсальный обработчик
@bot.message_handler(func=lambda message: True)
def messages(message):
    # обработка сообщений

Вот фрагмент рабочего обработчика.

@bot.message_handler(func=lambda message: user_data.get(message.chat.id) == 'create_start')
def create(message):
    # …

При нажатии на in-line кнопку «создать» в телеграмм боте вызывается callback_inline отправляет сообщение и дальше выполняет функцию create,а что касаемо in-line кнопки “Настройки” отправляется смс про то что настройки открыты,а дальше по какой-то причине обработчик @bot.message_handler(func=lambda message: user_data.get(message.chat.id) == 'settings_') не срабатывает функция settings_ не выполняется


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