Fix Telegram sendMessage: switch to HTML parse mode, escape user data
This commit is contained in:
+14
-11
@@ -985,20 +985,23 @@ async def request_access(request: Request, db: Session = Depends(get_db)):
|
|||||||
if not _re.match(r'^[\+\d][\d\s\-\(\)]{6,18}$', phone):
|
if not _re.match(r'^[\+\d][\d\s\-\(\)]{6,18}$', phone):
|
||||||
raise HTTPException(status_code=422, detail="Некорректный номер телефона")
|
raise HTTPException(status_code=422, detail="Некорректный номер телефона")
|
||||||
|
|
||||||
|
import html as _html
|
||||||
|
def _e(s): return _html.escape(str(s))
|
||||||
|
|
||||||
products_text = ""
|
products_text = ""
|
||||||
if products:
|
if products:
|
||||||
items = "\n".join(f" • {p}" for p in products)
|
items = "\n".join(f" • {_e(p)}" for p in products)
|
||||||
products_text = f"\n\n🖥 *Интересующие продукты:*\n{items}"
|
products_text = f"\n\n🖥 <b>Интересующие продукты:</b>\n{items}"
|
||||||
|
|
||||||
divider = "━━━━━━━━━━━━━━━━━━━━━━"
|
divider = "━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
manager_text = f"\n🤝 *Менеджер MONT:* {manager}" if manager else ""
|
manager_text = f"\n🤝 <b>Менеджер MONT:</b> {_e(manager)}" if manager else ""
|
||||||
text = (
|
text = (
|
||||||
f"🔔 *Новый запрос доступа к полигону MONT*\n"
|
f"🔔 <b>Новый запрос доступа к полигону MONT</b>\n"
|
||||||
f"{divider}\n\n"
|
f"{divider}\n\n"
|
||||||
f"👤 *Имя:* {name}\n"
|
f"👤 <b>Имя:</b> {_e(name)}\n"
|
||||||
f"🏢 *Компания:* {company}\n"
|
f"🏢 <b>Компания:</b> {_e(company)}\n"
|
||||||
f"📧 *Email:* {email}\n"
|
f"📧 <b>Email:</b> {_e(email)}\n"
|
||||||
f"📱 *Телефон:* {phone}"
|
f"📱 <b>Телефон:</b> {_e(phone)}"
|
||||||
f"{manager_text}"
|
f"{manager_text}"
|
||||||
f"{products_text}"
|
f"{products_text}"
|
||||||
)
|
)
|
||||||
@@ -1008,8 +1011,8 @@ async def request_access(request: Request, db: Session = Depends(get_db)):
|
|||||||
geo = _get_geo(ip)
|
geo = _get_geo(ip)
|
||||||
geo_text = ""
|
geo_text = ""
|
||||||
if geo:
|
if geo:
|
||||||
geo_text += "\n📍 *Местоположение:* " + geo
|
geo_text += "\n📍 <b>Местоположение:</b> " + _e(geo)
|
||||||
geo_text += "\n🖥 *IP:* " + ip
|
geo_text += "\n🖥 <b>IP:</b> " + _e(ip)
|
||||||
text += geo_text
|
text += geo_text
|
||||||
|
|
||||||
if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID:
|
if not TELEGRAM_BOT_TOKEN or not TELEGRAM_CHAT_ID:
|
||||||
@@ -1037,7 +1040,7 @@ async def request_access(request: Request, db: Session = Depends(get_db)):
|
|||||||
_tg_api("sendMessage", {
|
_tg_api("sendMessage", {
|
||||||
"chat_id": TELEGRAM_CHAT_ID,
|
"chat_id": TELEGRAM_CHAT_ID,
|
||||||
"text": text,
|
"text": text,
|
||||||
"parse_mode": "Markdown",
|
"parse_mode": "HTML",
|
||||||
"reply_markup": _make_approval_keyboard(req_id),
|
"reply_markup": _make_approval_keyboard(req_id),
|
||||||
})
|
})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user