From 3893f385323da6ea873df272f7082bef6532256c Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 30 Apr 2026 10:56:34 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20=D0=B2=D0=BE=D1=81=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20=D1=8D=D0=BD?= =?UTF-8?q?=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD=D1=82=D1=8B=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D1=83=D0=B2?= =?UTF-8?q?=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B6?= =?UTF-8?q?=D0=B8=D0=BB=D1=8C=D1=86=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/app.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/web/app.py b/web/app.py index f312f69..68f6f6f 100644 --- a/web/app.py +++ b/web/app.py @@ -249,6 +249,24 @@ async def api_approve_verification(req_id: int, username: str = Depends(get_curr req.reviewed_at = datetime.utcnow() await session.execute(update(User).where(User.user_id == req.user_id).values(verified=True, apartment=req.apartment, verification_date=datetime.utcnow())) await session.commit() + + # Уведомляем пользователя + try: + proxy_url = config.get_proxy_url() + async with aiohttp.ClientSession() as http_session: + await http_session.post( + f"https://api.telegram.org/bot{config.BOT_TOKEN}/sendMessage", + json={ + "chat_id": req.user_id, + "text": f"✅ Ваша заявка на верификацию одобрена!\n\nКвартира: {req.apartment}\nТеперь вам доступны все функции бота.", + "parse_mode": "HTML" + }, + proxy=proxy_url, + timeout=10 + ) + except Exception as e: + logger.error(f"Error notifying user {req.user_id}: {e}") + return JSONResponse({"success": True}) @app.post("/api/verification/{req_id}/reject") @@ -261,6 +279,49 @@ async def api_reject_verification(req_id: int, username: str = Depends(get_curre await session.commit() return JSONResponse({"success": True}) +@app.post("/api/user/{user_id}/verify") +async def api_verify_user(user_id: int, username: str = Depends(get_current_admin)): + async with AsyncSessionLocal() as session: + user = (await session.execute(select(User).where(User.user_id == user_id))).scalar_one_or_none() + if not user: + return JSONResponse({"success": False, "error": "Пользователь не найден"}) + + user.verified = True + user.verification_date = datetime.utcnow() + await session.commit() + + # Уведомляем пользователя через бот + try: + proxy_url = config.get_proxy_url() + async with aiohttp.ClientSession() as http_session: + await http_session.post( + f"https://api.telegram.org/bot{config.BOT_TOKEN}/sendMessage", + json={ + "chat_id": user_id, + "text": "✅ Верификация подтверждена!\n\nТеперь у вас есть полный доступ ко всем функциям бота LKM37.", + "parse_mode": "HTML" + }, + proxy=proxy_url, + timeout=10 + ) + except Exception as e: + logger.error(f"Error notifying user {user_id}: {e}") + + return JSONResponse({"success": True}) + +@app.post("/api/user/{user_id}/unverify") +async def api_unverify_user(user_id: int, username: str = Depends(get_current_admin)): + async with AsyncSessionLocal() as session: + user = (await session.execute(select(User).where(User.user_id == user_id))).scalar_one_or_none() + if not user: + return JSONResponse({"success": False, "error": "Пользователь не найден"}) + + user.verified = False + user.verification_date = None + await session.commit() + + return JSONResponse({"success": True}) + # ============================================================================ # ТЕЛЕФОНЫ / ОБЪЯВЛЕНИЯ / ОПРОСЫ / СОБЫТИЯ / ГРАФИКИ # ============================================================================