Добавлена функция справки в main.py, которая предоставляет пользователям информацию о доступных услугах и ценах. Обновлены обработчики для динамического отображения цен на услуги. Эти изменения улучшают взаимодействие с пользователем и делают информацию более доступной.

This commit is contained in:
Vlad 2025-06-02 23:46:07 +03:00
parent fe0aaefbec
commit f2fe946244

57
main.py
View File

@ -426,6 +426,53 @@ async def main_menu_callback(callback: CallbackQuery, state: FSMContext, db: Ora
await callback.answer()
@dp.callback_query(lambda c: c.data == "help")
async def help_callback(callback: CallbackQuery, db: OracleDatabase = None):
# Используем переданный db или глобальный oracle_db
database = db or oracle_db
# Сохраняем данные пользователя при просмотре справки
await database.save_user(callback.from_user, "help_button")
help_text = (
" **Help - Our Services**\n\n"
"🔍 **1. Decode VIN**\n"
f"• Free basic vehicle information (make, model, year)\n"
f"• Detailed specifications for {DECODE_PRICE} ⭐ (engine, transmission, safety features, etc.)\n"
f"• Comprehensive technical data from NHTSA database\n\n"
"🚨 **2. Check VIN**\n"
f"• Free salvage records count\n"
f"• Detailed damage history for {CHECK_PRICE} ⭐ (auction data, damage types, repair costs)\n"
f"• Sale dates and locations from insurance auctions\n\n"
"📸 **3. Search Car Photos**\n"
f"• Check availability of damage photos\n"
f"• Access to actual auction photos for {IMG_PRICE}\n"
f"• High-quality images showing vehicle condition and damage\n\n"
"💡 **How to use:**\n"
"• Enter any 17-character VIN number\n"
"• VIN must contain only letters and numbers (no I, O, Q)\n"
"• All payments are made with Telegram Stars ⭐\n\n"
"⚠️ **Important:** Our reports show historical data for informed decision-making. "
"Always consult automotive experts for professional vehicle evaluation."
)
builder = InlineKeyboardBuilder()
builder.button(text="🔍 Try Decode VIN", callback_data="decode_vin")
builder.button(text="🚨 Try Check VIN", callback_data="check_vin")
builder.button(text="📸 Try Search Photos", callback_data="search_car_photo")
builder.adjust(3)
builder.button(text="🏠 Back to Main Menu", callback_data="main_menu")
builder.adjust(3, 1)
await callback.message.answer(help_text, reply_markup=builder.as_markup(), parse_mode="Markdown")
await callback.answer()
@dp.callback_query(lambda c: c.data and c.data.startswith("pay_detailed_info:"))
async def pay_detailed_info_callback(callback: CallbackQuery, db: OracleDatabase = None):
# Используем переданный db или глобальный oracle_db
@ -436,12 +483,12 @@ async def pay_detailed_info_callback(callback: CallbackQuery, db: OracleDatabase
# Extract VIN from callback data
vin = callback.data.split(":")[1]
prices = [LabeledPrice(label="Detailed VIN Report", amount=1)]
prices = [LabeledPrice(label="Detailed VIN Report", amount=DECODE_PRICE)]
logging.info(f"Sending invoice for VIN: {vin}")
await callback.bot.send_invoice(
chat_id=callback.message.chat.id,
title="Detailed VIN Information",
description="Get comprehensive vehicle detailed information for 1 Telegram Star",
description=f"Get comprehensive vehicle detailed information for {DECODE_PRICE} Telegram Star",
payload=f"detailed_vin_info:{vin}", # Include VIN in payload
provider_token="", # Empty for Telegram Stars
currency="XTR", # Telegram Stars currency
@ -537,7 +584,7 @@ async def process_check_vin(message: Message, state: FSMContext, db: OracleDatab
if salvage_count > 0:
# Есть записи - показываем кнопки: 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=f"Pay {CHECK_PRICE} ⭐️ 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) # Each button on separate row
@ -570,13 +617,13 @@ async def pay_check_detailed_callback(callback: CallbackQuery, db: OracleDatabas
# Извлекаем VIN из callback data
vin = callback.data.split(":")[1]
prices = [LabeledPrice(label="Detailed Salvage Report", amount=10)]
prices = [LabeledPrice(label="Detailed Salvage Report", amount=CHECK_PRICE)]
logging.info(f"Sending invoice for salvage check VIN: {vin}")
await callback.bot.send_invoice(
chat_id=callback.message.chat.id,
title="Detailed Salvage Report",
description="Get comprehensive salvage history and damage information for 10 Telegram Stars",
description=f"Get comprehensive salvage history and damage information for {CHECK_PRICE} Telegram Stars",
payload=f"detailed_salvage_check:{vin}", # Уникальный payload для этого типа платежа
provider_token="", # Empty for Telegram Stars
currency="XTR", # Telegram Stars currency