@aleksegolubev

Telebot — Как реализовать приём сообщений с callback_data?

Сделал inline кнопки в боте-телеграмм:
@bot.callback_query_handler(func = lambda call: True)
def print_all_commands(call): 
    if call.data == 'print_all_commands':
        markup = types.InlineKeyboardMarkup()
        btn_command = types.InlineKeyboardButton("❗Как тебя зовут?", callback_data="commands")
        markup.add(btn_command)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Выберите действие:", reply_markup=markup)


Но bot.callback_query_handle не может обрабатывать какой-либо отправленный текст, как реализовать, что при нажатие на кнопку - Как тебя зовут? , бот ждал одну строку текста, а после делал какие-либо действия. Но без нажатия на кнопку - он нечего не ждал. При нажатие на другую кнопку - так же ждал текст.
(Будет много разных кнопок, которые должны после принимать какой-то текст)

Пытался сделать так, но не работает:
elif call.data == "kick":
        @bot.message_handler(content_types = ["text"])
        def kick_text(message):
            bot.send_message(message.chat.id, "Введите, то, что вам надо:")


Объясню, почему не хочу использовать клавиатуру - обычная клавиатура что-то выводит в чат, то есть будет его хорошо засорять, а через callback - можно просто менять сообщение и кнопочки.

Как такое реализовать?

Если плохо объяснил - дайте мне знать.
  • Вопрос задан
  • 5411 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Изучите работу с register_next_step_handler

Пример

По сути это реализация ожидания ввода от пользователя.
Через callback_query_handler отлавливаете нажатие на кнопку, и потом делаете обработку этого нажатия с register_next_step_handler
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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