У меня есть 2 хэндлера:
1) записывает message.text в state и передаёт ReplyKeyboards
2) реагирует на эти кнопки и записывает в переменные данные из state, но походу нельзя передать таким образом state, подскажите, я пожалуйста, как можно передать state во 2 хэндлер
Код:
class Cold_conductivity(StatesGroup):
cold_conductivity = State()
@dp.message_handler(state=Cold_conductivity.cold_conductivity)
async def process_model(message: types.Message, state: FSMContext):
try:
async with state.proxy() as data:
how_many_compressors = data['how_many_compressors']
spiral_and_piston = data['spiral_and_piston']
manufacturer = data['manufacturer']
hull = data['hull']
condensed = data['condensed']
cold = data['cold']
cold_conductivity = data['cold_conductivity'] = message.text
if int(cold_conductivity) < 1:
await bot.send_message(message.chat.id, "❌ Вы вводите слишком маленькое число кВт!")
elif int(cold_conductivity) > 200:
await bot.send_message(message.chat.id, "❌ Вы вводите слишком большое число кВт!")
else:
lst = [16.74, 21.24, 26.28, 28.62, 34.44, 38.85, 40.77, 44.70, 55.23]
b = min(lst, key=lambda x: abs(int(cold_conductivity) - x))
await bot.send_message(message.chat.id,
f"Кол-во комперссоров: {how_many_compressors}\nСо спиралью или с поршнем: {spiral_and_piston}"
f"\nПроизводитель: {manufacturer}\nВ корпусе или без: {hull}"
f"\nС коненсатором: {condensed}\nТип холода: {cold}\nХолодопроводность: {b}")
async with state.proxy() as data:
data['min_conductivity'] = b
await state.finish()
await bot.send_message(message.chat.id, "Доп функции?", reply_markup=additional_functions)
except ValueError:
await bot.send_message(message.chat.id, "❌ Введите число!")
# Доп функции #
@dp.message_handler(text='Не добавлять')
async def panel(message: types.Message, state: FSMContext):
async with state.proxy() as data:
how_many_compressors = data['how_many_compressors']
spiral_and_piston = data['spiral_and_piston']
manufacturer = data['manufacturer']
hull = data['hull']
condensed = data['condensed']
cold = data['cold']
min_conductivity = data['min_conductivity']
await bot.send_message(message.chat.id, f"{how_many_compressors}\n{spiral_and_piston}\n{manufacturer}\n{hull}\n{condensed}\n{min_conductivity}")
await bot.send_message(message.chat.id, f"Напишите холодопроводность (от 1кВт до 200 Квт):")
await Cold_conductivity.cold_conductivity.set()