Не получается написать код в Python для телеграмм бота (библиотека aiogram) - по типу input

@dp.message_handler(commands=['FNS_legal_entity_012022']) # База ФНС по Юр.лицам от 01.2022, информация за 2021 год
async def FNS_legal_entity_012022(message: types.Message):
    connect = sqlite3.connect('F:\\Python\\Bot\\Base\\FNS.db')
    cursor = connect.cursor()
    cursor.execute("""CREATE TABLE IF NOT EXISTS ZY_01_2022(   
        ID STRING,
        calculated_tax STRING,
        presented for payment STRING,
        benefit_amount STRING,
        Benefits STRING,
        KS STRING,
        Share_in_the_right STRING,
        OKTMO STRING,
        Bet STRING,
        KAT_ZY STRING,
        Kad_num STRING,
        Segment STRING,
        Num_District STRING,
        Doubles_1_Yes_2_No STRING
        )""")
        # ID STRING,                        Связующее поле
        # calculated_tax STRING,            Расчетная сумма исчисленного налога
        # presented for payment STRING,     Расчетная сумма налога предъявленного к уплате
        # benefit_amount STRING,            Расчётная сумма льготы
        # Benefits STRING,                  Льготы, участвующие в расчёте налога
        # KS STRING,                        Кадастровая стоимость
        # Share_in_the_right STRING,        Доля в праве
        # OKTMO STRING,                     ОКТМО
        # Bet STRING,                       Ставка
        # KAT_ZY STRING,                    Категория земли
        # Kad_num STRING,                   Кадастровый номер
        # Segment STRING,                   Сегмент
        # Num_District STRING,              Номер района
        # Doubles_1_Yes_2_No STRING         Дубли (желтый/красный - 1/2)
    connect.commit()
    input_kad_num = input("Введите пожалуйста кадастровый номер:")
    cursor.execute(f"SELECT * FROM ZY_01_2022 WHERE Kad_num = '{input_kad_num}'") #Поиск по формату (F в начале, синий цвет), если будет выдавать ошибку, то в WHERE Kad_num = '{input_kad_num}'" необходимо обернуть {input_kad_num} в одинарные кавычки или в двойные кавычки
    records = cursor.fetchall()
    for result in records:
        await message.answer('Расчетная сумма исчисленного налога, в руб.:\n'+str(result[1]) + "\n\n" + 'Расчетная сумма налога предъявленного к уплате, в руб.:\n'+str(result[2])+ "\n\n" +'Расчётная сумма льготы, в руб.:\n'+str(result[3]) + "\n\n" + 'Льготы, участвующие в расчёте налога:\n'+result[4] + "\n\n" + 'Кадастровая стоимость, в руб.:\n'+str(result[5]) + "\n\n" + 'Доля в праве:\n'+str(result[6])+ "\n\n" +'ОКТМО:\n'+str(result[7])+ "\n\n" +'Ставка:\n'+str(result[8])+ "\n\n" +'Категория земли:\n'+str(result[9])+ "\n\n" +'Кадастровый номер:\n'+result[10]+ "\n\n" +'Сегмент:\n'+str(result[11])+ "\n\n" +'Номер района:\n'+str(result[12]))

Здравствуйте! В Python и SQLite ранее не работал. Задача в следующем - при вводе в телеграмм-бот сообщения (к примеру 52:50:0020012:926), начинался поиск по БД и выдавал все результаты поиска. Как я понимаю, у меня все получилось, кроме одного - как мне написать код, что бы при вводе 52:50:0020012:926, искалась информация в БД?


Ответы (1 шт):

Автор решения: oleksandrigo

Эхх...
Штош.
Вот пример как это должно выглядеть.

storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

class InputWhatever(StatesGroup):
    input_numba = State()

@dp.message_handler(commands=["start"])
async def start(msg: types.Message):
    await msg.answer("Введите пожалуйста кадастровый номер")
    await InputWhatever.input_numba .set()

@dp.message_handler(state=InputWhatever.input_numba)
async def input_numba(msg: types.Message):
    print(msg.text)
    ...

Если кратко, то мы сделали некое состояние при котором буду срабатывать определенные хендлеры, и благодаря этому фильтруем сообщения.

→ Ссылка