Как переводить пользователя на следующий шаг без ожидания ввода текста?

Как в пошаговой функции работы бота переводить пользователя напрямую к следующему шагу? У меня один пошаговый цикл в находится в одном файле, а меню Reply клавиатурой в другом. Хочется, чтобы при нажатии клавиши, бот сразу же переходил к выполнению цикла, а не ждал пользовательского ввода через register_next_step_handler.

Приведу пример:

Main.py

def menu_step(message):
    markup = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
    markup.add('Анкета 1', 'Анкета 2')
    markup.add('Обратная связь')
    bot.send_message(message.chat.id, 'Выбери ниже', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def statistics_step(message):
    if message.text.lower() == 'анкета 1': 
        msg = bot.send_message(message.chat.id, 'КАК УБРАТЬ ЭТОТ ТЕКСТ И СРАЗУ ПЕРЕЙТИ К СЛЕДУЮЩЕМУ ШАГУ?')
        bot.register_next_step_handler(msg, Cycle.null_step) 

Cycle.py

def null_step(message):
        msg = bot.send_message(message.chat.id, "Введите данные 1")
        bot.register_next_step_handler(msg, one_step)
        # Ну и далее

Можно, конечно, сместить анкету на один шаг и просить ввести данные сразу в Main.py, но не очень красиво. Хотелось бы другой вариант решения. Хотелось бы именно Reply клавиатуру.


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

Автор решения: 0xmeow

Не нужно использовать bot.register_next_step_handler(msg, Cycle.null_step) (получение, собственно, 'пользовательского ввода'), а необходимо сразу вызвать необходимую вам функцию:

@bot.message_handler(content_types=['text'])
def statistics_step(message):
    if message.text.lower() == 'анкета 1': 
        Cycle.null_step(message)
→ Ссылка