Skip to content

barryblueice/Vanilla-Client

Repository files navigation

Vanilla-Client

onebot12 License

Caution

请不要在 QQ 官方群聊和任何影响力较大的简中互联网平台(包括但不限于: 哔哩哔哩,微博,知乎,抖音等)发布和讨论任何与本Client存在相关性的信息!

简介

wxhelper的OneBot V12客户端实现。

上游依赖

wxhelper:Hook WeChat / 微信逆向。

部分扩展API参考自ComWeChatBotClient

许可证

Vanilla Client 采用 AGPLv3 协议开源,不鼓励、不支持一切商业使用。

关于支持:

Vanilla Client目前支持的微信版本为3.9.8.25可点击此处下载

由于Vanilla Client的上游依赖wxhelper通过逆向微信得到的接口,故Vanilla Client仅支持Windows平台。

由于Vanilla Client的部分语法问题,故Vanilla Client仅支持Python 3.1x版本。

Troubleshooting

如果你在使用过程中发现了bug,或者有好的想法,请速速提交issue,开发者会在第一时间进行处理。

也可进入QQ交流群提交issue/获取最新进展。

如何运行:

由于使用了poetry进行虚拟环境管理,故使用以下命令运行:

poetry install
# poetry install --no-root

poetry run python main.py

.env环境配置详解:

参数名 解释 范例/默认值 备注
connect_url 目标WeChat.exe被hook后的地址 127.0.0.1
PORT 目标WeChat.exe被hook后的端口 19088
HOOK_PORT HookMsg接收端口 8000
onebot_ip onebot链接地址 127.0.0.1 暂时仅支持反向连接和ip连接。
onebot_port onebot链接端口号 8080 暂时仅支持反向连接。
data_path 运行数据路径 C:\\data或C:\data 请使用绝对路径。
wx_data_path 微信数据路径 C:\<路径>\WeChat Files或C:<路径>\WeChat Files 请使用绝对路径。
路径可自行在微信设置中查询,如果为空则部分功能可能受到限制。
ws_max_size websocket文件缓冲大小 4 单位MB,不能为0或空。
wx_version 微信版本号 3.9.8.25 请勿修改!
V_version Vanilla Client版本号 1.3.1 请勿修改!

Onebot V12连接支持情况:

  • HTTP
  • HTTP Webhook
  • 正向 Websocket
  • 反向 Websocket

OneBot V12 Event实现情况:

元事件:

Event 实现情况 备注
meta.connect ✔️
meta.heartbeat 后续可能更新
meta.status_update ✔️

Message事件:

Event 实现情况 备注
message.private ✔️ 某些latest message事件可能会误触发
目前仅支持接收文本和部分notice事件
message.group ✔️ 由于上游端限制,被at会通过文本检测,准确性可能存在误差
目前仅支持接收文本和部分notice事件
message.channel 已知微信并没有类似两级群组的结构,故目前不考虑支持

Notice事件:

Event 实现情况 备注
notice.friend_increase 后续可能更新
notice.friend_decrease 后续可能更新
notice.private_message_delete ✔️
notice.group_member_increase 后续可能更新
notice.group_member_decrease 后续可能更新
notice.group_message_delete ✔️
notice.guild_member_increase 已知微信并没有类似两级群组的结构,故目前不考虑支持
notice.guild_member_decrease 已知微信并没有类似两级群组的结构,故目前不考虑支持
notice.channel_member_increase 已知微信并没有类似两级群组的结构,故目前不考虑支持
notice.channel_member_decrease 已知微信并没有类似两级群组的结构,故目前不考虑支持
notice.channel_message_delete 已知微信并没有类似两级群组的结构,故目前不考虑支持
notice.channel_create 已知微信并没有类似两级群组的结构,故目前不考虑支持
notice.channel_delete 已知微信并没有类似两级群组的结构,故目前不考虑支持

OneBot V12 Action实现情况:

用户Action:

Action 实现情况 备注
get_self_info ✔️
get_user_info ✔️ 由于上游端限制,bot在群聊中会通过监听消息的方式收集群成员的wxid和username并保存为member.db。
在私聊事件中,若被触发wxid不存在于member.db,则username默认返回wxid。
你可以通过修改db文件的方式进行username的自定义。
get_friend_list ✔️

Message Action:

Action 实现情况 备注
send_message ✔️/⭕ 群聊/个人消息均支持。
目前仅支持发送静态图片和文本。
由于上游端支持问题,gif动图默认以静态图片形式发送。
delete_message 因上游端问题无法实现

文件Action:

Action 实现情况 备注
upload_file ✔️
upload_file_fragmented 后续可能更新
get_file 忘记有没有写了
get_file_fragmented 后续可能更新

群组Action:

Action 实现情况 备注
get_group_info 后续可能更新
get_group_list 后续可能更新
get_group_member_info 后续可能更新
get_group_member_list 后续可能更新
set_group_name 后续可能更新
leave_group 后续可能更新
get_guild_info 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_guild_list 已知微信并没有类似两级群组的结构,故目前不考虑支持
set_guild_name 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_guild_member_info 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_guild_member_list 已知微信并没有类似两级群组的结构,故目前不考虑支持
leave_guild 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_channel_info 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_channel_list 已知微信并没有类似两级群组的结构,故目前不考虑支持
set_channel_name 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_channel_member_info 已知微信并没有类似两级群组的结构,故目前不考虑支持
get_channel_member_list 已知微信并没有类似两级群组的结构,故目前不考虑支持
leave_channel 已知微信并没有类似两级群组的结构,故目前不考虑支持

扩展Event:

Event 实现情况 备注
notice.get_private_poke ✔️ 参考自ComWeChatBotClient,用法相同。
notice.wx.get_group_poke ✔️ 参考自ComWeChatBotClient,用法相同。

扩展Action:

Action 实现情况 备注

其他实现情况

名称 实现情况 备注
OneBot V11支持 由于wxid的性质与OneBot V11标准冲突,
(在OneBot V11中,user_id要求为int64),故不提供支持。
多开支持 由于某些特殊原因,不提供支持。
他人被at检测 上游端暂未实现,所以暂不考虑支持