107 lines
4.5 KiB
Markdown
107 lines
4.5 KiB
Markdown
# 微信文本机器人框架
|
||
项目已在linux.do公开声明[https://linux.do/](https://linux.do/t/topic/3029497/51)
|
||
交流群
|
||
<img width="630" height="952" alt="image" src="https://github.com/user-attachments/assets/c718fd35-329f-4267-b125-e7ca3dd842a3" />
|
||
|
||
|
||
|
||
面向 Windows x64、微信 4.1.15.13 的 Python 插件框架。统一入口为 `main.py`,原生桥接负责文本收发,功能以插件加载。
|
||
|
||
|
||
# 本项目仅供学习,请勿用于违法行为
|
||
|
||
## 功能
|
||
|
||
- 文件传输助手、好友和群聊文本收发,以及真正的群艾特。
|
||
- 成语接龙:独立玩家、合并抢答和退出模式。
|
||
- `/绑定 昵称`:只设置当前群的称呼;不同群各自保存。未绑定时使用联系人缓存中的微信名。
|
||
- `/总结 昵称`、`/总结群聊`:通过配置的大模型总结当前群当天的文字记录。
|
||
- `/切换人格 嘴臭|卑微|夸夸|取消`:为当前群的对话、总结和接龙点评设置表达风格。
|
||
- 真正艾特机器人后对话,携带该成员在当前群当天此前最多十条有效发言。
|
||
- 每天北京时间 0 点清理旧日文本;`/清空` 手动清理当前群文本。
|
||
- 按文本长度随机等待后发送。
|
||
- 插件启停、重载与开发模板。
|
||
|
||
## 运行环境
|
||
|
||
Windows 10/11 x64、64 位 Python(已验证 Python 3.13)、`requirements.txt` 中的依赖,以及 Microsoft Visual C++ x64 运行库。
|
||
|
||
## 首次配置
|
||
|
||
在项目目录运行:
|
||
|
||
```powershell
|
||
python -m pip install -r requirements.txt
|
||
python tools/init_config.py
|
||
```
|
||
|
||
1. `bot_config.json`:将 `wechat_account` 改为自己的机器人微信 ID。绑定保存的是账号 ID,重新登录后 PID 改变不影响选择;多开时会等待指定账号,不改用其他账号。
|
||
2. `members_config.json`:在 `groups` 中添加自己要启用的群 ID,成员列表可以为空:
|
||
|
||
```json
|
||
{
|
||
"database_file": ".runtime/member_data.sqlite3",
|
||
"history_enabled": true,
|
||
"daily_clear": true,
|
||
"groups": {
|
||
"12345678@chatroom": []
|
||
}
|
||
}
|
||
```
|
||
|
||
3. `llm_config.json`:填写自己的 `api_key`、`base_url` 和 `model`。模板保留 DeepSeek 接口格式,密钥为空。
|
||
4. 模板默认关闭需要模型的 `idiom_chain`、`chat_summary`、`mention_chat` 插件。填写模型配置后,把它们的 `enabled` 改为 `true`。
|
||
|
||
账号 ID 必须是实际微信 ID;群 ID 以 `@chatroom` 结尾。`test` 消息会由 `id_responder` 插件回复当前会话 ID,`chats` 控制台命令可以列出本次连接收到消息的会话。所有示例 ID 和测试用名称均为虚构数据。
|
||
|
||
## 启动与验证
|
||
|
||
```powershell
|
||
python main.py --check
|
||
python main.py
|
||
```
|
||
|
||
`--check` 只检查配置、插件清单与语法,不注入微信,也不调用模型。正常运行前打开微信并登录配置中的账号。
|
||
|
||
默认 `INFO` 日志级别下,启动后会在控制台实时显示当前连接的微信账号、收到私聊的发送者 ID 和正文,以及收到群消息的群 ID;这些日志也会保存到 `logs/bot.log`:
|
||
|
||
```text
|
||
当前登录微信ID=wxid_example_robot;好友和群聊文本已就绪
|
||
私聊消息 | 发送者微信ID=wxid_example_friend | 内容="你好"
|
||
群消息 | 群ID=12345678@chatroom
|
||
```
|
||
|
||
消息显示在会话白名单过滤之前,因此新群尚未加入白名单时,也可以让群里的人发一条文本,从控制台复制群 ID。自动消息日志不打印群正文或群成员 ID;总结功能使用的群聊天缓存按原有配置保存。私聊中的换行会显示为 `\n`,一条消息占一行。`logs/` 已被 Git 忽略。
|
||
|
||
也可以运行 `start_bot.ps1`:脚本优先使用项目的 `.venv`,其次使用 PATH 中的 Python;可通过 `-Python` 或环境变量 `WXBOT_PYTHON` 指定解释器,不依赖某台电脑的安装路径。
|
||
|
||
控制台命令:
|
||
|
||
```text
|
||
status
|
||
chats
|
||
members [群ID]
|
||
history 称呼 [条数]
|
||
plugins
|
||
enable 插件名
|
||
disable 插件名
|
||
reload [插件名]
|
||
quit
|
||
```
|
||
|
||
增加群、修改账号或成员配置后重启。停止时使用 `quit`,等待正常卸载原生桥接;微信可以保持打开。
|
||
|
||
`wechat_account` 设为 `null` 时,原生收发层可以选择唯一登录账号;启用成员目录和群记录需要明确配置机器人账号,以隔离不同账号的数据。
|
||
|
||
## 目录
|
||
|
||
```text
|
||
main.py 统一入口
|
||
wxbot_framework/ 框架、成员目录、消息缓存、大模型客户端
|
||
plugins/ 各功能插件和开发模板
|
||
native/ 原生桥接源码、两个必要 DLL、版本指纹和 MinHook
|
||
tests/ 本地测试
|
||
tools/ 本地配置初始化和发布前检查
|
||
```
|
||
|