Как обработать данные в telegram bot (python)
Подскажите зеленому в данной сфере, делаю ТГ бота
Вопрос следующий: Не могу додуматься как сделать, чтобы пользователь начал вводить свои параметры и они записывались. Пробывал с хендлером не выходит ибо данная функция уже в хендлере )))
Хочу сделать так, чтобы пользователь после получения сообщения начал присылать свои параметры тела, а потом бот все собранные параметры отправил обратно пользователю для подтверждения правильности ввода данных. Буду рад любым подсказкам и наставлениям.
elif message.text == "Корсет":
keyboard_korset = types.ReplyKeyboardMarkup(resize_keyboard=True)
key_3_1 = types.KeyboardButton('Вернуться в главное меню')
keyboard_korset.add(key_3_1)
bot.send_message(message.chat.id, 'Введите ваши параметры', reply_markup=keyboard_korset)
Ответы (1 шт):
Автор решения: Рустам Рысаев
→ Ссылка
делал подобное с FSMContext и Aiogram, на вашем примере кода:
class CorsetForm(StatesGroup):
param1 = State()
param2 = State()
param3 = State()
@dp.message(lambda message: message.text == "Корсет")
async def ask_param1(message: types.Message, state: FSMContext):
await state.set_state(CorsetForm.param1) # Устанавливаем состояние
await message.answer("Введите ваш **первый параметр**:")
# Принимаем первый параметр и запрашиваем следующий
@dp.message(CorsetForm.param1)
async def ask_param2(message: types.Message, state: FSMContext):
await state.update_data(param1=message.text) # Сохраняем первый параметр
await state.set_state(CorsetForm.param2) # Переключаем состояние
await message.answer("Введите ваш **второй параметр**:")
@dp.message(CorsetForm.param2)
async def ask_param3(message: types.Message, state: FSMContext):
await state.update_data(param2=message.text)
await state.set_state(CorsetForm.param3)
await message.answer("Введите ваш **третий параметр**:")
@dp.message(CorsetForm.param3)
async def confirm_data(message: types.Message, state: FSMContext):
await state.update_data(param3=message.text)
data = await state.get_data()
await state.clear() # Очищаем состояние
await message.answer(f"Вы ввели:\n"
f"Первый параметр: {data['param1']}\n"
f"Второй параметр: {data['param2']}\n"
f"Третий параметр: {data['param3']}\n\n"
"Если всё верно, то продолжите свою логику")
вообще FSMContext хороший инструмент. но если данные надо записывать в базу данных, то советвую попробовать SQlite