Задать вопрос
@alwaystried

Почему фрагмент кода не выполняется?

Добрый день! Прошу подсказать, почему данный код отказывается срабатывать. Его суть такова - пользователь вводит данные, бот ему показывает сообщение, и по факту должен обрабатывать данные в другом хендлере. Но вместо этого, бот просто показывает сообщение, но не приступает к выполнению кода в другом хендлере

Код:

@dp.callback_query_handler(text_startswith="buyvip")
async def checkname(query: CallbackQuery):
    keyboard = InlineKeyboardMarkup(row_width=1).add(
        InlineKeyboardButton(text="Назад", callback_data="Купить билет")
    )
    await query.message.edit_text("Введите ваше ФИО. Будьте внимательны - оно будет проверятся на входе")
    await Form.name.set()



@dp.callback_query_handler(state=Form.name)
async def process_name(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
                 data['name'] = message.text
    conn = aiomysql.connect(host='localhost', port=3306, user='root', password='',
                            db='aiodb',
                            loop=loop)
    # variable = int(query.data.split(":")[1])
    cur = await conn.cursor()
    teled = message.from_user.id
    sql = "SELECT name FROM users WHERE teleid=(%s)"
    await cur.execute(sql, (teled))
    row = await cur.fetchone()
    name = data['name']
    print(row)
    if row is not None:
        print("ok")
        row = row[0]
        await message.answer("✅ Ваши данные имеются в базе данных.")
    else:
        print("olk")
        await message.answer("Введите ваше ФИО")
        mes = message.text
        teled = message.from_user.id
        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()
        mesg = message.text
        await cur.execute(start_sql, (name, teled))
        await conn.commit()
        await message.answer(
            "✅ Ваше ФИО добавлено. Для изменения вам будет необходимо переидти в специальный раздел (soon)")
    Form.next()
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
callback_query_handler
Используется для клавиатуры, как видно из названия. Вам же нужен обычный message_handler
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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