Upload app.py with huggingface_hub
Browse files
app.py
CHANGED
|
@@ -8,7 +8,7 @@ import sys
|
|
| 8 |
import os
|
| 9 |
|
| 10 |
from fastapi import FastAPI, Request
|
| 11 |
-
from fastapi.responses import Response
|
| 12 |
from aiogram import Bot, Dispatcher
|
| 13 |
from aiogram.fsm.storage.memory import MemoryStorage
|
| 14 |
from aiogram.client.default import DefaultBotProperties
|
|
@@ -23,7 +23,7 @@ from config import BOT_TOKEN
|
|
| 23 |
from services.db import init_db
|
| 24 |
|
| 25 |
# Handlerlar
|
| 26 |
-
from handlers import start, generate, read_qr, settings, batch, history, inline, admin
|
| 27 |
|
| 28 |
# Logging
|
| 29 |
logging.basicConfig(
|
|
@@ -54,6 +54,7 @@ dp.include_router(batch.router)
|
|
| 54 |
dp.include_router(history.router)
|
| 55 |
dp.include_router(inline.router)
|
| 56 |
dp.include_router(read_qr.router)
|
|
|
|
| 57 |
|
| 58 |
# FastAPI
|
| 59 |
app = FastAPI(title="QR Bot Webhook Service")
|
|
@@ -104,6 +105,24 @@ async def root():
|
|
| 104 |
return {"status": "running", "mode": "webhook"}
|
| 105 |
|
| 106 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
@app.get("/api/qr")
|
| 108 |
async def api_qr(data: str = ""):
|
| 109 |
"""Inline rejim uchun QR kod rasmini qaytaruvchi endpoint"""
|
|
|
|
| 8 |
import os
|
| 9 |
|
| 10 |
from fastapi import FastAPI, Request
|
| 11 |
+
from fastapi.responses import Response, RedirectResponse, HTMLResponse
|
| 12 |
from aiogram import Bot, Dispatcher
|
| 13 |
from aiogram.fsm.storage.memory import MemoryStorage
|
| 14 |
from aiogram.client.default import DefaultBotProperties
|
|
|
|
| 23 |
from services.db import init_db
|
| 24 |
|
| 25 |
# Handlerlar
|
| 26 |
+
from handlers import start, generate, read_qr, settings, batch, history, inline, admin, dynamic
|
| 27 |
|
| 28 |
# Logging
|
| 29 |
logging.basicConfig(
|
|
|
|
| 54 |
dp.include_router(history.router)
|
| 55 |
dp.include_router(inline.router)
|
| 56 |
dp.include_router(read_qr.router)
|
| 57 |
+
dp.include_router(dynamic.router)
|
| 58 |
|
| 59 |
# FastAPI
|
| 60 |
app = FastAPI(title="QR Bot Webhook Service")
|
|
|
|
| 105 |
return {"status": "running", "mode": "webhook"}
|
| 106 |
|
| 107 |
|
| 108 |
+
@app.get("/r/{code}")
|
| 109 |
+
async def redirect_dynamic_qr(code: str, request: Request):
|
| 110 |
+
"""Dinamik QR kod skanerlaganda — skanerni yozib, maqsad URL ga yo'naltirish"""
|
| 111 |
+
from services.db import get_link_by_code, log_scan
|
| 112 |
+
link = await get_link_by_code(code)
|
| 113 |
+
if not link:
|
| 114 |
+
return HTMLResponse(
|
| 115 |
+
"<h2>QR kod topilmadi yoki muddati tugagan</h2><p>Bu havola mavjud emas.</p>",
|
| 116 |
+
status_code=404
|
| 117 |
+
)
|
| 118 |
+
# Skanerni qayd qilish
|
| 119 |
+
ip = request.client.host if request.client else ""
|
| 120 |
+
ua = request.headers.get("user-agent", "")
|
| 121 |
+
await log_scan(code, ip=ip, user_agent=ua)
|
| 122 |
+
|
| 123 |
+
return RedirectResponse(url=link["target_url"], status_code=302)
|
| 124 |
+
|
| 125 |
+
|
| 126 |
@app.get("/api/qr")
|
| 127 |
async def api_qr(data: str = ""):
|
| 128 |
"""Inline rejim uchun QR kod rasmini qaytaruvchi endpoint"""
|