Добрый день! Возник вопрос - как реализовать переход с message хендлера на квери? Концепт следующий - пользователь вводит ФИО, далее message хендлер это обрабатывает, и должен дать сигнал другому хендлеру, что пользователь правильно ввел свое фио, и функция в этом хендлере заносит человека в бд. Если неправильное ФИО - то код возвращается в начало
Код:
@dp.callback_query_handler(text="vipcount")
async def checkname(query: CallbackQuery):
keyboard = InlineKeyboardMarkup(row_width=1).add(
InlineKeyboardButton(text="Назад", callback_data="Купить билет")
)
await query.message.answer("Введите свое ФИО")
await InputData.input_fio.set()
@dp.message_handler(state=InputData.input_fio)
async def process_name(message: types.Message, state: FSMContext):
print("od")
keyboard = InlineKeyboardMarkup(row_width=1).add(
InlineKeyboardButton(text="Продолжить оплату", callback_data="vipfinally"),
InlineKeyboardButton(text="Назад", callback_data="vipcount")
)
global teleid
global xd
teleid = message.from_user.id
xd = message.text
if xd == "/start":
return
print("od")
await bot.send_message(
message.chat.id,
md.text(
md.text("Проверьте данные"),
md.text("Ваше имя -", md.bold(xd))
),
parse_mode = ParseMode.MARKDOWN, reply_markup=keyboard
)
await InputData.next()
@dp.callback_query_handler(text="Продолжить оплату")
async def vipfin(query: CallbackQuery):
print("okkkk")
conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='',
db='aiodb',
loop=loop)
cur = await conn.cursor()
sql = "SELECT name FROM users WHERE teleid=(%s)"
await cur.execute(sql, (teleid))
row = await cur.fetchone()
name = xd
print(row)
row = row[0]
print("olk")
teled = teleid
start_sql = "UPDATE users set name = (%s) where teleid=(%s)"
conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='',
db='aiodb',
loop=loop)
cur = await conn.cursor()
await cur.execute(start_sql, (name, teled))
await conn.commit()