FinBot-Plus
FinBot-Plus 是一个 SpringAI 应用程序,旨在作为记账跟踪机器人,它利用大型语言模型 (LLMs) 并与 Telegram 集成。用户可以通过简单的消息或上传图片来记录他们的支出和收入( iOS用户可以使用快捷指令的方式自动将你的每笔消费上传),然后使用自然语言查询他们的财务数据。该应用程序支持多种 AI 模型,如 Claude、DeepSeek 和 Gemini,用于处理和分析财务记录。
未来准备接入飞书,微信(风险比较高)等
功能特性
- 财务记录: 通过 Telegram 消息或图片上传轻松记录收入和支出。机器人会智能地提取关键信息,例如金额、日期、类型(支出/收入)和备注。
- 多模型 AI 集成: 利用 Spring AI 集成不同的主流大型语言模型,包括:
- Claude
- DeepSeek
- Gemini
- 自然语言查询: 用户可以使用自然语言询问有关其财务记录的问题,机器人将提供汇总的答案和见解。
- 每日定时总结: 机器人会在每天上午 9:00 自动发送前一天的支出总结到你在
application.yml中配置的telegram.userId。 - 数据库: 使用 SQLite 作为其数据库来存储财务记录。
如何使用
前置条件
- Java 21 或更高版本
- Maven
- 一个 Telegram Bot Token
- 所需 AI 模型的 API 密钥(Anthropic、DeepSeek、Gemini)
设置
-
克隆仓库:
git clone [https://github.com/your-username/FinBot-Plus.git](https://github.com/your-username/FinBot-Plus.git) cd FinBot-Plus -
配置
application.yml: 打开src/main/resources/application.yml并填写以下详细信息:telegram: userId: YOUR_TELEGRAM_USER_ID # 你的 Telegram 用户ID,用于定时消息 local: /path/to/save # 文件下载本地保存路径,例如 /Users/username/Downloads/finbot-plus-files token: YOUR_TELEGRAM_BOT_TOKEN # 你的 Telegram Bot Token proxyPort: YOUR_PROXY_PORT # 你的 SOCKS5 代理端口,例如 1080 spring: datasource: url: jdbc:sqlite:/path/to/your/record.db # SQLite 数据库文件路径,例如 jdbc:sqlite:/Users/wanglongjun/Downloads/record.db ai: deepseek: base-url: [https://api.deepseek.com](https://api.deepseek.com) # DeepSeek API 基础URL anthropic: base-url: [https://api.gptsapi.net](https://api.gptsapi.net) # Anthropic API 基础URL gemini: base-url: [https://openrouter.ai/api](https://openrouter.ai/api) # Gemini API 基础URL model: google/gemini-2.5-flash-preview # Gemini 模型名称 mcp: # Model Context Protocol (MCP) 相关配置,用于工具调用 client: stdio: connections: sqliteMcp: command: uv args: - --directory - /path/to/your/servers-2025.4.6/src/sqlite # MCP SQLite 服务路径 - run - mcp-server-sqlite - --db-path - /path/to/your/record.db # MCP SQLite 数据库路径,与 datasource.url 保持一致注意:
YOUR_TELEGRAM_USER_ID可以通过向@userinfobot发送消息来获取。YOUR_TELEGRAM_BOT_TOKEN可以通过@BotFather创建机器人后获取。- AI 模型的 API 密钥需要设置为系统环境变量,例如
ANTHROPIC_API_KEY,DEEPSEEK_API_KEY,GEMINI_API_KEY。
-
构建项目:
mvn clean install -
运行应用程序:
java -jar target/FinBot-Plus-0.0.1-SNAPSHOT.jar或者使用 Maven 运行:
mvn spring-boot:run
Telegram 机器人使用
- 启动机器人: 在 Telegram 中找到你的机器人并点击 "Start"。
- 记录收支:
- 直接发送文本消息,例如 "支出 100 晚餐" 或 "收入 500 工资"。
- 上传包含交易信息的图片,机器人会尝试从图片中提取信息。
- 更新记录: 如果需要修改已记录的信息,可以使用
recordNo(记录号)进行更新。例如,发送 `请把ID为RC202505140004的备注更新为麦当劳。 - 查询记录: 向机器人提问,例如 "总结一下昨天的开支" 或 "我上周在麦当劳花了多少钱?"。
- 每日总结: 机器人会在每天上午 9:00 自动发送前一天的支出总结到你在
application.yml中配置的telegram.userId。
数据库结构
项目使用 SQLite 数据库,record 表的结构如下:
create table record
(
record_no TEXT not null
primary key,
date TEXT not null,
amount TEXT not null,
type TEXT not null,
remark TEXT,
sub_remark TEXT,
created_at TIMESTAMP default CURRENT_TIMESTAMP,
updated_at TIMESTAMP default CURRENT_TIMESTAMP
);