# Telegram 通知功能使用说明 ## 功能概述 KT财务系统支持通过Telegram Bot向群组或个人发送账目记录通知。每当添加、更新或删除账目时,系统会自动推送消息到配置的Telegram聊天。 ## 功能特性 - ✅ 支持多个Telegram Bot配置 - ✅ 支持发送到群组或个人 - ✅ 自动推送新增账目记录 - ✅ 包含完整的交易信息(类型、金额、分类、账户等) - ✅ 支持启用/禁用通知 - ✅ 提供测试功能验证配置 ## 准备工作 ### 1. 创建Telegram Bot 1. 在Telegram中搜索 `@BotFather` 2. 发送 `/newbot` 命令 3. 按照提示设置Bot名称和用户名 4. 获取Bot Token(格式:`1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`) ### 2. 获取Chat ID #### 获取个人Chat ID: 1. 在Telegram中搜索 `@userinfobot` 2. 发送任意消息 3. Bot会返回你的Chat ID #### 获取群组Chat ID: 1. 将你的Bot添加到群组 2. 在群组中发送任意消息 3. 访问:`https://api.telegram.org/bot/getUpdates` 4. 在返回的JSON中找到 `chat.id` 字段(群组ID通常是负数,如:`-1001234567890`) ## API接口 ### 1. 获取所有通知配置 ```http GET /api/telegram/notifications ``` **响应示例**: ```json { "code": 0, "data": [ { "id": 1, "name": "财务通知群", "botToken": "1234567890:ABCdefGHI...", "chatId": "-1001234567890", "notificationTypes": ["transaction"], "isEnabled": true, "createdAt": "2025-01-01T00:00:00.000Z", "updatedAt": "2025-01-01T00:00:00.000Z" } ] } ``` ### 2. 创建通知配置 ```http POST /api/telegram/notifications Content-Type: application/json { "name": "财务通知群", "botToken": "1234567890:ABCdefGHI...", "chatId": "-1001234567890", "notificationTypes": ["transaction"], "isEnabled": true } ``` **说明**: - `name`: 配置名称(必填) - `botToken`: Telegram Bot Token(必填) - `chatId`: 目标聊天ID(必填) - `notificationTypes`: 通知类型数组,目前支持 `["transaction"]`(可选,默认:`["transaction"]`) - `isEnabled`: 是否启用(可选,默认:`true`) **响应示例**: ```json { "code": 0, "data": { "id": 1, "name": "财务通知群", "botToken": "1234567890:ABCdefGHI...", "chatId": "-1001234567890", "notificationTypes": ["transaction"], "isEnabled": true, "createdAt": "2025-01-01T00:00:00.000Z", "updatedAt": "2025-01-01T00:00:00.000Z" } } ``` **注意**:创建时会自动测试配置,如果Bot Token或Chat ID无效,会返回错误。 ### 3. 更新通知配置 ```http PUT /api/telegram/notifications/:id Content-Type: application/json { "name": "更新后的名称", "isEnabled": false } ``` **说明**:所有字段都是可选的,只更新提供的字段。 ### 4. 删除通知配置 ```http DELETE /api/telegram/notifications/:id ``` ### 5. 测试Telegram配置 ```http POST /api/telegram/test Content-Type: application/json { "botToken": "1234567890:ABCdefGHI...", "chatId": "-1001234567890" } ``` **说明**:发送测试消息验证Bot Token和Chat ID是否有效。 ## 通知消息格式 当添加账目记录时,系统会发送以下格式的消息: ``` 📋 新增账目记录 类型:💸 支出 金额:CNY 100.00 日期:2025-01-15 分类:餐饮 账户:现金账户 状态:✅ 已批准 备注:午餐费用 🕐 记录时间:2025-01-15 14:30:00 ``` ## 通知类型说明 目前支持的通知类型: - `transaction`: 交易记录通知(新增、更新、删除账目) 未来可扩展: - `budget`: 预算提醒 - `report`: 财务报表 - `reimbursement`: 报销审批 ## 常见问题 ### Q: Bot无法发送消息到群组? **A**: 请确保: 1. Bot已被添加到群组 2. Bot在群组中有发送消息的权限 3. Chat ID正确(群组ID通常是负数) ### Q: 如何禁用某个配置的通知? **A**: 调用更新API,设置 `isEnabled: false` ### Q: 可以配置多个Bot吗? **A**: 可以!系统支持多个Bot配置,所有启用的配置都会收到通知。 ### Q: 消息会包含敏感信息吗? **A**: 消息只包含账目的基本信息(类型、金额、分类等),不包含用户身份等敏感信息。建议使用私密群组。 ## 技术实现 ### 数据库表结构 ```sql CREATE TABLE telegram_notification_configs ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, bot_token TEXT NOT NULL, chat_id TEXT NOT NULL, notification_types TEXT NOT NULL, -- JSON数组 is_enabled INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); ``` ### 后端实现 - `apps/backend/utils/telegram-bot.ts`: Telegram Bot核心功能 - `apps/backend/api/telegram/`: 通知配置管理API - `apps/backend/api/finance/transactions.post.ts`: 集成通知发送 ## 示例:使用curl测试 ```bash # 1. 测试Bot配置 curl -X POST http://localhost:3000/api/telegram/test \ -H "Content-Type: application/json" \ -d '{ "botToken": "YOUR_BOT_TOKEN", "chatId": "YOUR_CHAT_ID" }' # 2. 创建通知配置 curl -X POST http://localhost:3000/api/telegram/notifications \ -H "Content-Type: application/json" \ -d '{ "name": "测试配置", "botToken": "YOUR_BOT_TOKEN", "chatId": "YOUR_CHAT_ID", "notificationTypes": ["transaction"] }' # 3. 添加账目记录(触发通知) curl -X POST http://localhost:3000/api/finance/transactions \ -H "Content-Type: application/json" \ -d '{ "type": "expense", "amount": 100, "currency": "CNY", "transactionDate": "2025-01-15", "description": "测试通知功能" }' ``` ## 前端配置界面 Telegram 通知现已集成在 Web 端的系统设置页面: - 入口路径:`财务系统 → ⚙️ 系统设置 → Telegram 通知配置` - 列表内容:展示配置名称、Bot Token(掩码)、Chat ID、通知类型、启用状态以及最近更新时间 - 支持操作:快速启用/禁用、编辑、发送测试通知、删除 ### 新增或编辑配置 1. 点击「➕ 新增配置」或列表中的「编辑」按钮 2. 填写/更新以下字段: - **配置名称**:用于标识通知触达对象(例如“财务通知群”) - **Bot Token**:来自 @BotFather 的完整 Token - **Chat ID**:个人或群组的 ID(群组需将 Bot 加入并通过 `getUpdates` 获取) - **启用状态**:控制是否参与通知投递 3. 可直接在弹窗内点击「发送测试」,验证 Bot Token 与 Chat ID 是否有效 4. 点击「创建配置」或「保存更新」提交,成功后自动刷新列表 ### 使用提示 - 所有启用的配置会在新增账目时同步收到通知 - 「测试」按钮会向对应的聊天发送标准测试消息,方便确认权限 - 删除配置后即刻停止向该聊天推送消息