Не срабатывает state() в aiogram
Проблема: не срабатывает функция в state()
Устанавливаю ServicesList.last_notes_list.set() и дальше должна выполнится async def last_notes_list(message: types.Message):, но этого не происходит. С другими стейтами day_list и month_list все впорядке.
class ServicesList(StatesGroup):
get_var = State()
day_list = State()
month_list = State()
last_notes = State()
async def services_list_start(message: types.Message):
var_list = ['За день', 'За месяц', 'Недавние записи']
keyboard = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=True)
keyboard.add(*var_list)
await ServicesList.get_var.set()
await message.answer('Выбери вариант с клавиатуры', reply_markup=keyboard)
async def get_var_list(message: types.Message, state: FSMContext):
var = message.text
if var == 'За день':
days = ['Сегодня', 'Вчера']
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
keyboard.add(*days)
await ServicesList.day_list.set()
await message.answer('Выбери вариант с клавиатуры.', reply_markup=keyboard)
elif var == 'За месяц':
await ServicesList.month_list.set()
await message.answer('Впиши номер месяца')
elif var == 'Недавние записи':
await ServicesList.last_notes.set()
await message.answer('Секунду')
print(await state.get_state())
async def day_list(message: types.Message):
res = get_services_for_day(
day=message.text,
id_employee=message.from_user.id
)
for row in res:
await message.answer(
f'Id: {row[0]}\n'
f'Услуга: {row[1]}\n'
f'Сумма на руки: {row[2]}\n'
f'Скидка: {row[3]}'
)
async def month_list(message: types.Message):
res = get_services_for_month(
num_month=int(message.text),
id_employee=message.from_user.id
)
for row in res:
await message.answer(
f'Id: {row[0]}\n'
f'Услуга: {row[1]}\n'
f'Сумма на руки: {row[2]}\n'
f'Скидка: {row[3]}'
)
async def last_notes_list(message: types.Message):
print("Стейт сработал")
res = get_last_notes(id_employee=message.from_user.id)
for row in res:
await message.answer(
f'Id: {row[0]}\n'
f'Услуга: {row[1]}\n'
f'Сумма на руки: {row[2]}\n'
f'Скидка: {row[3]}'
)
def register_services_list(dp: Dispatcher):
dp.register_message_handler(services_list_start, commands='services_list', state='*')
dp.register_message_handler(get_var_list, state=ServicesList.get_var)
dp.register_message_handler(day_list, state=ServicesList.day_list)
dp.register_message_handler(month_list, state=ServicesList.month_list)
dp.register_message_handler(last_notes_list, state=ServicesList.last_notes)
async def main(dp):
register_handlers_common(dp)
register_handlers_services(dp)
register_services_list(dp)
register_money_counter(dp)
await set_commands(bot)
if __name__ == '__main__':
executor.start_polling(dp, on_startup=main, skip_updates=True)