Проблемы с конечным автоматом в айограмме [закрыто]Python

Программы на Python
Гость
Проблемы с конечным автоматом в айограмме [закрыто]

Сообщение Гость »


Делаю бот-телеграм (разбитый на файлы) с конечным автоматом, но при его активации ничего не происходит:

###Импорт###

из типов импорта айограмм, Диспетчер из aiogram.types импортировать InlineKeyboardMarkup, InlineKeyboardButton из aiogram.contrib.fsm_storage.memory импорт MemoryStorage из aiogram.dispatcher.filters импортировать текст из aiogram.dispatcher.filters.state import StatesGroup, State из aiogram.dispatcher.storage импортировать FSMContext из PrimeBot импортировать dp, бот, API, хранилище ###Класс с состояниями###

Class Starter(StatesGroup): Calc_gender = Состояние() Calc_weight = Состояние() Calc_height = Состояние() Calc_age = Состояние() ###Укажите пол###

async defcalc_gender1(сообщение: типы.Сообщение, состояние: FSMContext): печать("начало") глобальный пол пол = message.text.lower() печать (пол) await message.reply(f'Твой вес в кг: ') возвращение ждут Starter.calc_weight.set() ожидайте Starter.next() ###Вес состояния###

async defcalc_weight2(сообщение: типы.Сообщение, состояние: FSMContext): глобальный вес вес = сообщение.текст await message.reply(text=f'Рост см: ') возвращение ждут Starter.calc_height.set() ожидайте Starter.next() ###состояние 3 рост###

async defcalc_height3(сообщение: типы.Сообщение, состояние: FSMContext): глобальная высота высота = сообщение.текст await message.reply(text=f'Возраст: ') возвращение ждут Starter.calc_age.set() ожидайте Starter.next() ###Высота состояния###

async defcalc_age4(сообщение: типы.Сообщение, состояние: FSMContext): глобальный возраст возраст = сообщение.текст await message.reply(text=f'Пол {gender}, рост {рост}, вес {вес}, Возраст: {age}') если пол == "м": result_ccal = (10,0 * float(вес)) + (6,25 * float(высота)) - (5,0 * float(возраст)) + 5,0 ожидайте message.reply(text=result_ccal) ожидайте Starter.finish() элиф пол == "ж": result_ccal = (10,0 * float(вес)) + (6,25 * float(высота)) - (5,0 * float(возраст)) - 161,0 ожидайте message.reply(text=result_ccal) ожидайте Starter.finish() еще: печать('грр') ожидайте Starter.finish() ###Активный диалог###

def dilog(dp: Dispatcher): print("дилог запущен") dp.register_message_handler(calc_gender1,commands="калькулятор", состояние=Starter.calc_gender) печать("1 попытка") dp.register_message_handler(calc_weight2, state=Starter.calc_weight) печать("2 попытка") dp.register_message_handler(calc_height3, состояние=Starter.calc_height) печать("3 попытка") dp.register_message_handler(calc_age4, state=Starter.calc_age) печать("4 попытка") После активации какого-то состояния я пытался напечатать «1 попытка», «2 попытка», они пишутся, но сама машина не отвечает. Я вызываю его в другом файле, не в основном, может это как-то влияет

Вернуться в «Python»