@alexto13

Как сделать кнопки по очереди?

пытаюсь сделать ,чтобы после нажатия на кнопку и вводе текста,появлялась вторая и действия продолжадись,но кроме time.sleep ничего в голову не лезет.Подскажите пожалуйста как лучше сделать это?

def family_buttons(message):

    email(message)
    time.sleep(10)

    phone_code(message)


def email(message):
    markup = types.InlineKeyboardMarkup(row_width=1)
    email = types.InlineKeyboardButton('Введите почту', callback_data='email')
    markup.add(email)
    bot.send_message(message.chat.id, 'Время заполнения поля 30 секунд', reply_markup=markup)
def phone_code(message):
    markup = types.InlineKeyboardMarkup(row_width=1)
    phone_code = types.InlineKeyboardButton('Введите код телефона', callback_data='phone_code')
    markup.add(phone_code)
    bot.send_message(message.chat.id, 'Нажмите для заполнения поля!', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    if call.message:
        if call.data == 'email':
            text_email = bot.send_message(chat_id=call.message.chat.id, text='Введите почту')
            bot.register_next_step_handler(text_email, next)

        elif call.data == 'phone_code':
            text_phone_code = bot.send_message(chat_id=call.message.chat.id, text='Введите код телефона')
            bot.register_next_step_handler(text_phone_code, next)
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
i229194964
@i229194964
Веб разработчик
import time
from telebot import types

current_step = None

def family_buttons(message):
    global current_step

    email(message)
    current_step = 'email'

def email(message):
    markup = types.InlineKeyboardMarkup(row_width=1)
    email_button = types.InlineKeyboardButton('Введите почту', callback_data='email')
    markup.add(email_button)
    bot.send_message(message.chat.id, 'Время заполнения поля 30 секунд', reply_markup=markup)

def phone_code(message):
    markup = types.InlineKeyboardMarkup(row_width=1)
    phone_code_button = types.InlineKeyboardButton('Введите код телефона', callback_data='phone_code')
    markup.add(phone_code_button)
    bot.send_message(message.chat.id, 'Нажмите для заполнения поля!', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    global current_step

    if call.message:
        if call.data == 'email':
            text_email = bot.send_message(chat_id=call.message.chat.id, text='Введите почту')
            bot.register_next_step_handler(text_email, next)

        elif call.data == 'phone_code':
            text_phone_code = bot.send_message(chat_id=call.message.chat.id, text='Введите код телефона')
            bot.register_next_step_handler(text_phone_code, next)

def next(message):
    global current_step

    if current_step == 'email':
        # Обработка введенной почты
        current_step = 'phone_code'
        phone_code(message)

    elif current_step == 'phone_code':
        # Обработка введенного кода телефона
        current_step = None
        # Здесь можете выполнить какие-то действия после завершения обоих шагов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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