/
memoto
/
pingAllBot
Обзор
Документация
Войти
/
memoto
/
pingAllBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
web/app.py
63 строки
2 KB
memoto
initial upload
17 дек 2025, 22:52
17 дек 2025, 22:52
16e4052
Код
Авторство
О чём код?
from fastapi import FastAPI, Form from fastapi.responses import HTMLResponse from pathlib import Path import json import subprocess app = FastAPI() CONFIG_PATH = Path("data/config.json") def load_config(): return json.loads(CONFIG_PATH.read_text(encoding="utf-8")) def save_config(cfg: dict): CONFIG_PATH.write_text( json.dumps(cfg, ensure_ascii=False, indent=2), encoding="utf-8" ) def parse_users(text: str) -> list[str]: return list(dict.fromkeys( line.strip() for line in text.splitlines() if line.strip().startswith("@") )) @app.get("/", response_class=HTMLResponse) def index(): cfg = load_config() return open("web/templates/index.html", encoding="utf-8").read() \ .replace("{{TOKEN}}", cfg.get("bot_token", "")) \ .replace("{{RUS}}", "\n".join(cfg["groups"].get("rus", []))) \ .replace("{{SINS}}", "\n".join(cfg["groups"].get("sins", []))) \ .replace("{{BLOCK}}", "\n".join(cfg["groups"].get("block", []))) @app.post("/save") def save( token: str = Form(...), rus: str = Form(""), sins: str = Form(""), block: str = Form("") ): cfg = load_config() cfg["bot_token"] = token.strip() cfg["groups"] = { "rus": parse_users(rus), "sins": parse_users(sins), "block": parse_users(block) } save_config(cfg) return {"status": "saved"} @app.post("/restart") def restart(): subprocess.Popen(["docker", "compose", "restart", "bot"]) return {"status": "restarting"}