Files
helper/README.md
T

107 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 微信文本机器人框架
项目已在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/ 本地配置初始化和发布前检查
```