Кнопки и состояния в aiogram

меня волнует вопрос как можно сделать что бы кнопки выполняли свои функции?

class reg(StatesGroup):
    login = State()
    password = State()
@dp.callback_query_handler(lambda call: call.data == 'logpass')
async def start(callback: types.CallbackQuery):
    key = InlineKeyboardMarkup()
    key.add(InlineKeyboardButton(text = 'Назад', callback_data = 'back'), InlineKeyboardButton(text = 'Главное меню', callback_data = 'main_menu'))
    text = str('Введите логин')
    await bot.send_message(callback.from_user.id, text, reply_markup = key)
    await reg.first()
@dp.message_handler(state = reg.login)
async def login(message: types.Message, state: FSMContext):
    answer = message.text
    async with state.proxy() as data:
        data['login'] = answer
    key = InlineKeyboardMarkup()
    key.add(InlineKeyboardButton(text = 'Назад', callback_data = 'back'), InlineKeyboardButton(text = 'Главное меню', callback_data = 'main_menu'))
    text = str('Введите пароль')
    await bot.send_message(message.from_user.id, text, reply_markup = key)
    await reg.next()
@dp.message_handler(state = reg.password)
async def password(message: types.Message, state: FSMContext):
    answer = message.text
    async with state.proxy() as data:
        data['password'] = answer
    key = InlineKeyboardMarkup()
    key.add(InlineKeyboardButton(text = 'Назад', callback_data = 'back'), InlineKeyboardButton(text = 'Главное меню', callback_data = 'main_menu'))
    async with state.proxy() as data:
        login = data['login']
        password = data['password']
    text = str(f'Ваш логин: {login}\nВаш пароль {password}')
    await bot.send_message(message.from_user.id, text, reply_markup = key)
    await state.finish()

Я пытался делать паузу для состояний между блоками такого типа

#class reg(StatesGroup):
#   login = State()
#   pause = State()
#   password = State()

@dp.callback_query_handler(lambda call: call.data, state = reg.pause)
async def pause(callback: types.CallbackQuery, state: FSMContext):
    if callback.data == 'back' or callback.data == 'main_menu':
        if callback.data == 'main_menu':
            await state.finish()
            #И тут срабатывает обработчик с callback.data == 'main_menu' которого в коде нет и не нужен
        if callback.data == 'back':
            await reg.last()
    else:
        reg.next()

Но тогда message.text не срабатывает. Что делать?


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