Машинное состояние не работает api,tg,aiogram

Nazar</>

Новичок
Пользователь
Фев 3, 2023
2
0
1
Windows 10, в проекте используеться python 3.10.9, aiogram 2.24.
Проблема заключается в том что при запуске бота машинное состаяние не работает, а ошибки не высвечиваються, пишу в модульное системе по примеру с интернета, вот так это всё выглядит:
Python:
from aiogram import types, Dispatcher
from createBot import dp
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup


class FSMkalkulator(StatesGroup):
    gender = State()
    weight = State()
    height = State()
    age = State()


@dp.message_handler(commands="normal_daytime", state=None)
async def command_normal_daytime(message: types.Message):
    await FSMkalkulator.gender.set()
    await message.reply("Enter your gender,\nif you are a man enter 'm',\nif you are a woman enter 'w'")


@dp.message_handler(state=FSMkalkulator.gender)
async def remember_gender(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['gender'] = message.text
    await FSMkalkulator.next()
    await message.reply("Now enter your weight in kg,\nfor example like this: '65', just write in numbers without letters")


@dp.message_handler(state=FSMkalkulator.weight)
async def remember_weight(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['weight'] = float(message.text)
    await FSMkalkulator.next()
    await message.reply("Now enter your height in cm,\nfor example like this: '170', just write in numbers without letters")


@dp.message_handler(state=FSMkalkulator.height)
async def remember_height(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['height'] = float(message.text)
    await FSMkalkulator.next()
    await message.reply("Now enter your age")


@dp.message_handler(state=FSMkalkulator.age)
async def remember_age(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['age'] = float(message.text)

    async with state.proxy() as data:
        await message.reply(str(data))
    await state.finish()


def register_handlers_statkalkulator(dp: Dispatcher):
    dp.register_message_handler(command_normal_daytime, commands=["normal_daytime"], state=None)
    dp.register_message_handler(remember_gender, commands=["gender"], state=FSMkalkulator.gender)
    dp.register_message_handler(remember_weight, commands=["weight"], state=FSMkalkulator.weight)
    dp.register_message_handler(remember_height, commands=["height"], state=FSMkalkulator.height)
    dp.register_message_handler(remember_age, commands=["age"], state=FSMkalkulator.age)

В дальнейшем хочу написать
  • if gender = w : 655,1 + (9,563 × {weight}) + (1,85 × {height}) - (4,676 × {age});
  • else: 66,5 + (13,75 × {weight}) + (5,003 × {height}) - (6,775 × {age}).
  • потом вывесьти результат, если я правильно пишу
  • ну и ещё профицит и дефицит (вопрос к этому зподно их создавать в других питон файлах или можно в этом с другим класом ?)
  • Если это возможно могу скинуть полный файл
 

Nazar</>

Новичок
Пользователь
Фев 3, 2023
2
0
1
Хотел написать что проблема была в регистрах вот как должно было выглядеть:
def register_handlers_statKalkulator(dp: Dispatcher):
dp.register_message_handler(command_normal_daytime, commands=["normal_daytime"], state=None)
dp.register_message_handler(remember_gender, state=FSMkalkulator.gender)
dp.register_message_handler(remember_weight, state=FSMkalkulator.weight)
dp.register_message_handler(remember_height, state=FSMkalkulator.height)
dp.register_message_handler(remember_age, state=FSMkalkulator.age)
 

Форум IT Специалистов