F1展位工作流机器人
这个项目实现了一个Telegram机器人,它可以获取当前的F1车手排名,用数据创建一个谷歌表格,并将表格的链接通过电子邮件发送到指定的地址。整个工作流程经过精心编排,并通过服务器发送事件(SSE)提供实时进度更新。
特性
- 电报机器人:用一条简单的消息触发工作流。
- F1数据提取器:从Ergast API获取数据。
- Google表格集成:创建并填充Google表格。
- Gmail集成:发送一封电子邮件,其中包含指向工作表的链接。
- SSE进度更新:提供工作流状态的实时更新。
- Docker化:附带一个
Dockerfile和docker-compose.yml为了便于设置。
项目结构
.
├── ARCHITECTURE.md
├── Dockerfile
├── README.md
├── REPO_ANALYSIS.md
├── agent.py
├── config
│ └── profiles.yaml
├── config.py
├── core
│ ├── __pycache__
│ ├── context.py
│ ├── loop.py
│ ├── session.py
│ └── strategy.py
├── credentials.json
├── docker-compose.yml
├── faiss_index
│ ├── __pycache__
│ ├── doc_index_cache.json
│ └── metadata.json
├── main.py
├── mcp_server_1.py
├── mcp_server_2.py
├── mcp_server_3.py
├── models.py
├── modules
│ ├── __pycache__
│ ├── action.py
│ ├── decision.py
│ ├── memory.py
│ ├── model_manager.py
│ ├── perception.py
│ └── tools.py
├── pyproject.toml
├── requirements.txt
├── servers
│ ├── __pycache__
│ ├── gmail_server.py
│ ├── gdrive_sheets_server.py
│ ├── sse_server.py
│ └── telegram_server.py
├── static
│ └── progress.html
├── tests
│ ├── __pycache__
│ ├── test_f1_fetcher.py
│ ├── test_gdrive_sheets_server.py
│ └── test_gmail_server.py
├── uv.lock
└── workers
├── __pycache__
└── f1_fetcher.py设置
1.创建和激活虚拟环境
Mac/Linux:
python3 -m venv venv
source venv/bin/activate窗户:
python -m venv venv
venv\Scripts\activate.bat或者使用安装脚本:
# Mac/Linux
./setup.sh
# Windows
setup.bat2.安装依赖项
pip install -r requirements.txt3.配置环境变量
创建一个 .env 项目根目录中的文件:
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
GOOGLE_SERVICE_ACCOUNT_FILE=credentials.json
GMAIL_TARGET_ADDRESS=
FASTAPI_PORT=80004.设置谷歌云
- 在中创建项目 谷歌云控制台
- 启用以下API:
- Google Drive API - 谷歌网页API - Gmail API
- 创建服务帐户并下载密钥
credentials.json - 地方
credentials.json在项目根目录中(或更新GOOGLE_SERVICE_ACCOUNT_FILE在.env)
5.设置Telegram Bot
- 打开Telegram并搜索 @植物学家
- 发送
/newbot并遵循指示 - 复制机器人令牌并将其添加到
.env作为TELEGRAM_BOT_TOKEN
运行应用程序
- 运行应用程序:
python main.py - 向机器人发送任何消息 以触发工作流。
- 您将收到:“正在处理——完成后我会通知你的。”
- 等待1-3分钟 -机器人正在后台处理
- 您将收到:
- 带有Google Sheet链接的最终电报消息 - 带有表格链接的电子邮件
- 可选的:打开
http://localhost:8000/static/progress.html在浏览器中查看实时进度
看 工作流_GUIDE.md 详细解释接下来会发生什么。
使用Docker运行
- 构建并运行容器:
docker-compose up --build
这将启动应用程序并在端口8000上公开SSE服务器。
