botuniverse / onebot

OneBot:统一的聊天机器人应用接口标准

Home Page:https://onebot.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OneBot Web WeChat 端

kecrily opened this issue · comments

  • 状态:关闭
  • 相关 PR:无

摘要

社群曾在 #82 讨论过 WeChat 端的实现,现在已有开源项目绕过 Web WeChat 的账号登录注册时间限制,OneBot WeChat 端已具备技术条件和可行性。

动机

WeChat 是**大陆境内常用的 IM 软件之一,以往因为 WeChat 的风控相较 QQ 更为严格,在 Web WeChat 的账号登录受注册时间限制,开源的 Web WeChat 实现几近报废,导致 WeChat Bot 缺位,仅存在闭源收费的 PC 实现或 hook 注入实现。现已存在可行、持久的实现方式应在 OneBot 各端实现上进行补充。

具体描述

WeChat 与 OneBot 兼容规范进行的修改和描述,其 Web WeChat 端接口参考 wechaty/wechaty 所给文档Urinx/WeixinBot 所示接口和示例数据,OneBot 规范依据 V12 草案

此处将 WeChat Api 中字段与 OneBot 对应,Web WeChat 端中不存在的消息段类型/事件数据字段此处不列,后续可根据其他平台(设备) WeChat 端开源实现进行扩展,而其实际消息段类型/事件数据字段也可能与此不符,因其全凭第三方文档,仍需复核。

消息段类型

消息段类型 WeChat OneBot 备注
未知 Unknown
文件 Attachment
语音 Audio record
推荐好友 Contact contact
QQ 表情 Emoticon 此类型名称应进行去平台中心化更改,并可将 QQ 端与 WeChat 端共存类似或相同表情采用同一 id,拟定类型名「表情」
图片 Image image
纯文本 Text text
短视频 Video video 此类型名称应进行去平台中心化更改,并非所有平台均存在时长限制,拟定类型名「视频」
链接 Url 纯文本链接应作为新的类型,QQ 端纯文本类型可能会被解析成 xml,而 Telegram 端则亦有 Preview 预览实现,拟定类型字段名 preview = bool

图片消息

事件数据字段 WeChat OneBot 备注
长度 length
高度 hdlength

语音消息

事件数据字段 WeChat OneBot 备注
结束标记 endflag 功能未知
取消标记 cancelflag 功能未知
转发标记 forwardflag 功能未知
语音格式 voiceformat
语音长度 voicelength
长度 length 功能未知
bufid bufid 功能未知
客户端消息 id clientmsgid 功能未知

视频消息

事件数据字段 WeChat OneBot 备注
长度 length
高度 hdlength

位置消息

WeChat 的位置消息属于纯文本消息,内容即链接 http://weixin.qq.com/cgi-bin/redirectforward?args=xxx

推荐好友

事件数据字段 WeChat OneBot 备注
被推荐人 UserName id
省份 Province
城市 City
Scene Scene 功能未知
QQ 号 QQNum
内容 Content 功能未知
微信号 Alias
OpCode OpCode 功能未知
签名 Signature
Ticket Ticket 功能未知
性别 Sex
昵称 NickName
AttrStatus AttrStatus 功能未知
验证标识 VerifyFlag 功能未知

音乐分享

事件数据字段 WeChat OneBot 备注
头图 thumburl
音频 lowdataurl/dataurl audio
链接 url url
应用 ID appid

事件数据字段

消息事件

事件数据字段 WeChat OneBot 备注
时间 CreateTime time
接收者 ID FromUserName self_id
发送者 ID ToUserName user_id
类型 MsgType post_type

局限

Web WeChat 端接口/事件并不完整。

替代方案

备注

因我并无对 Web WeChat 的实现进行具体研究,以及对 OneBot 的原理不甚了解。这导致可能出现一些问题,欢迎讨论。

随时非法入侵计算机系统罪伺候

commented

web其实还好 用现成的轮子应该没什么风险

这个 RFC 暂时 pending,等 v12 基本成型之后再考虑,不过同时可以作为 v12 设计时的参考

\ OneBot for LLLLAAARRRKKKKKKKKKK /
我要顺带重构我的机器人的用户系统了,要兼容多平台 √

在最新的 OneBot 12 标准中,已经不再包含平台特定的内容了,但提供了一些扩展规则,允许不同平台的实现按需扩展,本 issue 也许可以为以后微信平台 OneBot 实现提供一些参考,目前先 close 了