feat: contact form modal with Telegram, enlarge Made by button
This commit is contained in:
@@ -805,6 +805,46 @@ def health():
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@bp.post("/api/contact")
|
||||
def contact():
|
||||
import re as _re
|
||||
data = request.get_json(silent=True) or {}
|
||||
name = str(data.get("name", "")).strip()
|
||||
email = str(data.get("email", "")).strip()
|
||||
phone = str(data.get("phone", "")).strip()
|
||||
text = str(data.get("text", "")).strip()
|
||||
|
||||
if not all([name, email, phone, text]):
|
||||
return jsonify({"detail": "Заполните все обязательные поля"}), 422
|
||||
if not _re.match(r"^[^\s@]+@[^\s@]+\.[^\s@]+$", email):
|
||||
return jsonify({"detail": "Некорректный email"}), 422
|
||||
if not _re.match(r"^[\+\d][\d\s\-\(\)]{6,18}$", phone):
|
||||
return jsonify({"detail": "Некорректный номер телефона"}), 422
|
||||
|
||||
divider = "━" * 22
|
||||
msg = (
|
||||
f"🔔 *Сообщение через форму*\n{divider}\n\n"
|
||||
f"👤 *Имя:* {name}\n"
|
||||
f"📧 *Email:* {email}\n"
|
||||
f"📱 *Телефон:* {phone}\n\n"
|
||||
f"💬 *Сообщение:*\n{text}"
|
||||
)
|
||||
payload = json.dumps({
|
||||
"chat_id": TELEGRAM_CHAT_ID,
|
||||
"text": msg,
|
||||
"parse_mode": "Markdown",
|
||||
}).encode()
|
||||
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
|
||||
try:
|
||||
req = Request(url, data=payload, headers={"Content-Type": "application/json"})
|
||||
with urlopen(req, timeout=10) as resp:
|
||||
resp.read()
|
||||
except Exception as e:
|
||||
return jsonify({"detail": f"Ошибка отправки: {e}"}), 502
|
||||
|
||||
return jsonify({"ok": True})
|
||||
|
||||
|
||||
@bp.get("/assets/mont-logo")
|
||||
def mont_logo():
|
||||
return send_from_directory(BASE_DIR, "mont_logo.png")
|
||||
|
||||
Reference in New Issue
Block a user