@spataphore

Как вызвать функцию ввода текста после обработки callback'a (нажатия на Inline кнопку)?

Всех приветствую. Задача такая: необходимо пользователю заполнить анкету. В ходе анкетирования, пользователь вводит ответы на вопросы текстом, а также отвечает на вопросы нажатием на Inline кнопки. И тут появляется проблема: после нажатия на кнопку, я не могу пробросить в пошаговый обработчик message, т.к. его, логично, нет. Вопрос: как из обработчика callback'ов вызвать функцию по принципу register_next_step_handler?

Пример:

def start_questionnaire(message):
    bot.send_message(message.from_user.id, 'Введите город проживания')
    bot.register_next_step_handler(message, get_town)
    
def get_town(message):
    data_dict = dict
    data_dict['town'] = message.text
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(types.InlineKeyboardButton(text='Мужской', callback_data='m'),
                 types.InlineKeyboardButton(text='Женский', callback_data='f'))
    bot.send_message(message.from_user.id, 'Укажите свой пол', keyboard)
    
@bot.callback_query_handler(func=lambda call: True)
def callbacks_worker(call):
    if call.data in ['m', 'f']:
        # и отсюда должен быть переброс в ф-ю, которая будет принимать значение message.
  • Вопрос задан
  • 205 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Не совсем понятно в чем проблема, ведь объект call содержит в себе объект message

bot.register_next_step_handler(call.message, <Твоя функция>)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы