Не получается написать код в 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)
...
Если кратко, то мы сделали некое состояние при котором буду срабатывать определенные хендлеры, и благодаря этому фильтруем сообщения.