Обновлены обработчики в main.py для упрощения взаимодействия с пользователем:

- Удалены кнопки "Get detailed info" и соответствующий обработчик, заменены на кнопку "Pay 10 ️ for detailed info".
- Оптимизирована логика отображения кнопок в зависимости от наличия записей о повреждениях.
Эти изменения улучшают пользовательский интерфейс и делают процесс получения информации более интуитивным.
This commit is contained in:
Vlad 2025-06-01 12:21:37 +03:00
parent bec2b2d838
commit fb3615e71c

51
main.py
View File

@ -199,12 +199,11 @@ async def process_check_vin(message: Message, state: FSMContext, db: OracleDatab
builder = InlineKeyboardBuilder()
if salvage_count > 0:
# Есть записи - показываем кнопки: Get detailed info, Pay 10⭐, Try another VIN, Back to main menu
builder.button(text="Get detailed info", callback_data=f"get_detailed_info:{vin}")
builder.button(text="Pay 10 ⭐️", callback_data=f"pay_check_detailed:{vin}", pay=True)
# Есть записи - показываем кнопки: Pay 10⭐ for detailed info, Try another VIN, Back to main menu
builder.button(text="Pay 10 ⭐️ for detailed info", callback_data=f"pay_check_detailed:{vin}", pay=True)
builder.button(text="Try another VIN", callback_data="check_vin")
builder.button(text="Back to Main Menu", callback_data="main_menu")
builder.adjust(1, 1, 1, 1) # Each button on separate row
builder.adjust(1, 1, 1) # Each button on separate row
else:
# Нет записей - показываем кнопки: Try another VIN, Back to main menu
response_text += " **No salvage records found for this VIN**"
@ -222,50 +221,6 @@ async def process_check_vin(message: Message, state: FSMContext, db: OracleDatab
await message.answer("Invalid VIN. Please enter a valid 17-character VIN (letters and numbers, no I, O, Q).")
@dp.callback_query(lambda c: c.data and c.data.startswith("get_detailed_info:"))
async def get_detailed_info_callback(callback: CallbackQuery, db: OracleDatabase = None):
# Используем переданный db или глобальный oracle_db
database = db or oracle_db
# Сохраняем данные пользователя
await database.save_user(callback.from_user, "get_detailed_info_button")
# Извлекаем VIN из callback data
vin = callback.data.split(":")[1]
try:
# Получаем детальную информацию из таблицы salvagedb.salvagedb
salvage_count = await database.count_salvage_records(vin)
if salvage_count > 0:
response_text = f"🔍 **Detailed Salvage Information for VIN:** {vin}\n\n"
response_text += f"📊 **Total salvage records found:** {salvage_count}\n\n"
response_text += "💡 **This vehicle has salvage records in our database.**\n"
response_text += "For complete detailed analysis including damage history, "
response_text += "accident reports, and comprehensive vehicle information, "
response_text += "please use our paid detailed report service.\n\n"
response_text += "💰 **Price:** 10 ⭐️ (Telegram Stars)"
else:
response_text = f"✅ **Good news!** No salvage records found for VIN: {vin}\n\n"
response_text += "This vehicle appears to have no salvage history in our database."
# Создаем клавиатуру
builder = InlineKeyboardBuilder()
if salvage_count > 0:
builder.button(text="Pay 10 ⭐️ for Full Report", callback_data=f"pay_check_detailed:{vin}", pay=True)
builder.button(text="Try another VIN", callback_data="check_vin")
builder.button(text="Back to Main Menu", callback_data="main_menu")
builder.adjust(1, 1, 1) if salvage_count > 0 else builder.adjust(1, 1)
await callback.message.answer(response_text, reply_markup=builder.as_markup(), parse_mode="Markdown")
except Exception as e:
logging.error(f"Error getting detailed info for VIN {vin}: {e}")
await callback.message.answer("Error retrieving detailed information. Please try again later.")
await callback.answer()
@dp.callback_query(lambda c: c.data and c.data.startswith("pay_check_detailed:"))
async def pay_check_detailed_callback(callback: CallbackQuery, db: OracleDatabase = None):
# Используем переданный db или глобальный oracle_db