#!/usr/bin/env python3 # 如果系统中 python 命令不存在,请使用: python3 start_feishu_bot.py # -*- coding: utf-8 -*- """ 启动飞书长连接客户端 使用官方 SDK 的事件订阅 2.0 模式,无需公网域名 """ import sys import os import logging from pathlib import Path # 添加项目根目录到 Python 路径 project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) # 配置日志 import os # 从环境变量获取日志级别,默认为 INFO log_level = os.getenv('LOG_LEVEL', 'INFO').upper() # 配置日志格式 logging.basicConfig( level=getattr(logging, log_level, logging.INFO), format='%(asctime)s [%(levelname)s] [%(name)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) logger = logging.getLogger(__name__) def main(): """主函数""" # 加载配置 from src.config.unified_config import get_config config = get_config() logger.info("=" * 80) logger.info("🚀 TSP Assistant - 飞书长连接客户端") logger.info("=" * 80) logger.info("") logger.info("📋 配置信息:") logger.info(f" - App ID: {config.feishu.app_id}") logger.info(f" - 数据库: {config.database.url}") logger.info(f" - LLM: {config.llm.provider}/{config.llm.model}") logger.info(f" - 日志级别: {log_level}") logger.info("") logger.info("🔌 启动模式: 事件订阅 2.0(长连接)") logger.info(" 优势:") logger.info(" - 无需公网域名") logger.info(" - 无需配置 webhook") logger.info(" - 自动重连") logger.info(" - 实时接收消息") logger.info("") logger.info("💡 提示: 按 Ctrl+C 停止服务") logger.info("=" * 80) logger.info("") # 导入并启动长连接服务 from src.integrations.feishu_longconn_service import get_feishu_longconn_service try: service = get_feishu_longconn_service() service.start() # 这里会阻塞,持续监听飞书事件 except KeyboardInterrupt: logger.info("") logger.info("⏹️ 用户中断,正在停止服务...") logger.info("👋 再见!") except Exception as e: logger.error(f"服务异常退出: {e}", exc_info=True) sys.exit(1) if __name__ == "__main__": main()