harden telegram webapp production readiness
This commit is contained in:
11
bot/main.py
11
bot/main.py
@@ -25,7 +25,7 @@ api = ApiClient()
|
||||
def main_keyboard() -> ReplyKeyboardMarkup:
|
||||
return ReplyKeyboardMarkup(
|
||||
keyboard=[
|
||||
[KeyboardButton(text="Открыть гараж", web_app=WebAppInfo(url=settings.webapp_url))],
|
||||
[KeyboardButton(text="Открыть гараж", web_app=WebAppInfo(url=settings.effective_webapp_url))],
|
||||
[KeyboardButton(text="Мои авто"), KeyboardButton(text="Помощь")],
|
||||
],
|
||||
resize_keyboard=True,
|
||||
@@ -50,7 +50,7 @@ async def add_car(message: Message, command: CommandObject) -> None:
|
||||
if not name:
|
||||
await message.answer("Напиши так: /add_car Toyota Camry")
|
||||
return
|
||||
car = await api.create_car(user["id"], name)
|
||||
car = await api.create_car(user["id"], name, message.from_user.id)
|
||||
await message.answer(f"Добавил авто: {car['name']}")
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ async def add_car(message: Message, command: CommandObject) -> None:
|
||||
@dp.message(F.text == "Мои авто")
|
||||
async def cars(message: Message) -> None:
|
||||
user = await api.upsert_user(message.from_user)
|
||||
items = await api.list_cars(user["id"])
|
||||
items = await api.list_cars(user["id"], message.from_user.id)
|
||||
if not items:
|
||||
await message.answer("Автомобилей пока нет. Добавь через mini app или командой /add_car Название.")
|
||||
return
|
||||
@@ -72,7 +72,7 @@ async def cars(message: Message) -> None:
|
||||
@dp.callback_query(F.data.startswith("stats:"))
|
||||
async def show_stats(callback: CallbackQuery) -> None:
|
||||
car_id = int(callback.data.split(":", 1)[1])
|
||||
stats = await api.stats(car_id)
|
||||
stats = await api.stats(car_id, callback.from_user.id)
|
||||
consumption = stats["avg_consumption_l_per_100km"]
|
||||
cost_per_km = stats["cost_per_km"]
|
||||
await callback.message.answer(
|
||||
@@ -106,6 +106,9 @@ async def help_message(message: Message) -> None:
|
||||
async def main() -> None:
|
||||
if not settings.bot_token:
|
||||
raise RuntimeError("BOT_TOKEN is empty")
|
||||
if not settings.internal_api_token:
|
||||
raise RuntimeError("INTERNAL_API_TOKEN is empty")
|
||||
settings.validate_webapp_url_for_telegram()
|
||||
bot = Bot(settings.bot_token)
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user