| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- """入口:启动 Web 管理面板(含 Bot 子进程管理)。
- 运行:
- python main.py
- python main.py --config /path/to/config.yaml
- 环境变量:
- LARK_PANEL_PASSWORD 面板登录密码(推荐,优先于配置文件)
- """
- from __future__ import annotations
- import argparse
- import logging
- import sys
- from pathlib import Path
- # 确保项目根在 sys.path
- sys.path.insert(0, str(Path(__file__).resolve().parent))
- from config import load_config # noqa: E402
- def parse_args() -> argparse.Namespace:
- p = argparse.ArgumentParser(description="飞书群聊自动转发机器人 - 管理面板")
- p.add_argument("--config", "-c", default=None, help="配置文件路径")
- return p.parse_args()
- def main() -> None:
- args = parse_args()
- cfg = load_config(args.config)
- logging.basicConfig(
- level=logging.INFO,
- format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
- datefmt="%Y-%m-%d %H:%M:%S",
- )
- if not cfg.panel_password:
- print("=" * 60, file=sys.stderr)
- print("警告:面板未设置密码!", file=sys.stderr)
- print("请设置环境变量 LARK_PANEL_PASSWORD 或在 config.yaml 的", file=sys.stderr)
- print("panel.password 字段配置密码后再启动。", file=sys.stderr)
- print("=" * 60, file=sys.stderr)
- import uvicorn
- from web.supervisor import app
- print(f"面板启动:http://{cfg.panel.host}:{cfg.panel.port}", flush=True)
- uvicorn.run(
- app,
- host=cfg.panel.host,
- port=cfg.panel.port,
- log_level="warning", # 减少 uvicorn 自己的日志噪音
- )
- if __name__ == "__main__":
- main()
|