@alwaystried

Как с message хендлера перейти в query?

Добрый день! Возник вопрос - как реализовать переход с 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()
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы