Skip to content

Repository files navigation

WechatBot

项目简介

WechatBot 是一个个人自用的微信机器人项目,核心目标是把本地微信消息接入、AI 对话、生活记录和简单的 HTTP 接口整合到一套轻量脚本里。

项目当前的运行方式比较直接:

  • 通过本地微信侧车程序提供的 WebSocket / HTTP 接口收发消息
  • 通过大模型接口生成私聊或群聊回复
  • 通过 SQLite 保存生活记录
  • 通过 FastAPI 暴露查询、记录和请求捕获接口

它不是面向团队协作的大型框架,更适合个人长期自用、二次改造,或者作为微信自动化脚手架继续扩展。

核心功能

  • 微信私聊自动回复
  • 群聊 @ 机器人后触发上下文对话
  • 多轮上下文管理,支持会话超时重置
  • 通过 #类型 内容 时长 的格式记录生活/工作日志
  • 基于 SQLite 的生活记录查询与删除
  • 提供日历数据接口,便于前端或其他脚本读取
  • 提供若干请求捕获接口,可用于记录访问内容和请求特征

技术栈

  • Python
  • FastAPI
  • Uvicorn
  • websockets
  • aiohttp
  • aiosqlite
  • SQLite

项目结构

WechatBot/
├─ main.py                # 微信消息监听入口,连接本地 WebSocket
├─ function.py            # 机器人消息处理、AI 调用、消息发送、日志记录
├─ life.py                # SQLite 生活记录读写封装
├─ server.py              # FastAPI 服务,提供记录查询和请求捕获接口
├─ test.py                # 简单网络连通性测试
├─ bin/
│  └─ wxbot-sidecar.exe   # 本地微信侧车程序
├─ Data/
│  ├─ *.db                # 本地 SQLite 数据库
│  ├─ user.json           # 用户上下文或相关数据
│  └─ room.json           # 群聊上下文或相关数据
└─ request_logs/          # 捕获到的请求日志

适用场景

  • 个人微信助手
  • 个人知识问答或闲聊机器人
  • 自己的生活记录/打卡系统
  • 简单接口抓包与请求留档
  • 本地自动化实验项目

快速开始

1. 环境要求

  • Windows 环境更合适,当前目录中已经包含 wxbot-sidecar.exe
  • Python 3.10 及以上
  • 本地可用的微信侧车服务,默认监听 127.0.0.1:8080

2. 安装依赖

项目里目前没有现成的 requirements.txt,可以先按实际 import 安装:

pip install fastapi uvicorn websockets aiohttp aiosqlite aiofiles requests pydantic

3. 准备本地数据目录

项目依赖以下本地文件或目录:

  • Data/
  • request_logs/
  • 生活记录数据库文件
  • 用户/群聊上下文 JSON 文件

仓库里已经带有部分样例数据,但正式使用前建议自行清理或替换成自己的数据。

4. 启动微信消息机器人

先确保本地微信侧车服务已经运行,再启动机器人监听:

python main.py

main.py 会连接:

ws://127.0.0.1:8080/ws/generalMsg

5. 启动 HTTP 服务

如果需要查询生活记录或记录请求,再启动接口服务:

python server.py

默认监听:

http://0.0.0.0:9655

使用说明

私聊机器人

用户给机器人发送文本消息后,程序会读取上下文并调用大模型接口生成回复。

群聊机器人

群内消息满足指定 @ 前缀时,会触发群聊上下文回复。当前代码里已经写死了几种称呼匹配方式。

生活记录

给指定账号发送以下格式的消息即可记一条记录:

#类型 内容 时长

例如:

#运动 跑步 30
#学习 阅读《深入理解计算机系统》 45

删除最近一条记录:

#删除

API 接口

生活记录相关

  • GET /calendar/data/?name=fdx
  • GET /calendar/today_data/?timestamp=时间戳&name=fdx
  • POST /calendar/new_record?name=fdx

请求体示例:

{
  "type": "学习",
  "content": "整理项目文档",
  "status": true,
  "password": "your-password"
}

请求捕获相关

项目还提供了一组用于记录请求内容的接口:

  • /wallet_check_in/info
  • /wallet_check_in/upload
  • /track
  • 以及兜底的 /{path:path}

所有请求会被写入 request_logs/ 目录,便于后续排查和分析。

当前实现特点

  • 代码结构简单,适合快速改
  • 本地文件存储为主,没有引入复杂中间件
  • 状态数据直接落地 JSON / SQLite,调试成本低
  • 部分账号、接口地址、口令和模型参数是直接写在代码里的,偏个人使用风格

使用前建议

如果你准备把这个项目公开到 GitHub,建议先处理下面几项:

  • 把代码中的 API Key、密码、固定账号 ID 改成环境变量或本地配置文件
  • 清理 Data/、request_logs/、bin/logs/ 等包含个人数据或运行痕迹的文件
  • 统一 Data / data、room.json 路径等本地大小写和目录问题,避免迁移到 Linux 后出错
  • 补一个 requirements.txt,方便别人复现环境

后续可扩展方向

  • 接入 .env 配置管理
  • 增加命令系统和权限控制
  • 增加定时任务能力
  • 接入更多模型或多模型切换
  • 增加 Docker 化部署
  • 给生活记录接口补前端页面

免责声明

本项目更适合作为个人研究、自动化实践和二次开发示例。请在了解微信自动化、账号安全和第三方模型调用风险的前提下自行使用。

Environment Variables

Configure these variables before starting the bot or API server:

  • REALRPG_API_KEY
  • REALRPG_BASE_URL (optional, defaults to https://api.deepseek.com)
  • REALRPG_MODEL (optional, defaults to deepseek-chat)
  • REALRPG_CALENDAR_API_PASSWORD
  • REALRPG_WECHAT_BASE_URL (optional, defaults to https://ilinkai.weixin.qq.com)
  • REALRPG_DATA_DIR (optional, defaults to Data)

PowerShell example:

$env:REALRPG_API_KEY="your-api-key"
$env:REALRPG_CALENDAR_API_PASSWORD="your-calendar-password"

WeChat Official Connection

The old local sidecar WebSocket integration has been replaced with the official WeChat ilink API flow.

  1. Run python setup_wechat.py
  2. Scan the printed QR content with WeChat and confirm login
  3. Run python main.py

Credentials and sync state are stored under Data/wechat/ by default and are ignored by git.

About

Your life is the game. A WoW-inspired quest system that turns real-world goals into quest chains with XP, levels, and an AI advisor.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors