Кнопки и состояния в 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 не срабатывает. Что делать?