diff --git a/docs/message/private_msg.md b/docs/message/private_msg.md index e173447..4771ec2 100644 --- a/docs/message/private_msg.md +++ b/docs/message/private_msg.md @@ -51,13 +51,13 @@ | receiver_type | num | 接收者类型 | 1:用户
2:粉丝团 | | receiver_id | num | 接收者id | `receiver_type` 为 `1` 时表示用户 mid,为 `2` 时表示粉丝团 id | | msg_type | num | 消息类型 | 详见[私信消息类型、内容说明](private_msg_content.md) | -| content | str | 消息内容 | [私信内容对象](private_msg_content.md)经过 JSON 序列化后的文本 | +| content | str | 消息内容 | [私信内容对象](private_msg_content.md)**经过 JSON 序列化后的文本** | | msg_seqno | num | 消息序列号 | 按照时间顺序从小到大 | | timestamp | num | 消息发送时间 | 秒级时间戳 | | at_uids | 有效时:array
无效时:null | at的成员mid | 在粉丝团时有效;此项为 `null` 或 `[0]` 均表示没有 at 成员 | | msg_key | num | 消息唯一id | 部分库在解析JSON对象中的大数时存在数值的精度丢失问题,因此在处理私信时可能会出现问题,建议使用修复了这一问题的库(如将大数转换成文本) | -| msg_status | num | 消息状态 | 0:正常
1:被撤回(接口仍能返回被撤回的私信内容)
2:被系统撤回(私信将不会显示在前端,B站接口也不会返回被系统撤回的私信)
50:图片已失效(私信内容为一张提示“图片出现问题”的图片) | -| sys_cancel | bool | 是否为系统撤回 | 仅当消息类型为 `5` 且此项值为 `true` 时有此项;若此项值为 `true`,表示目标消息是被系统撤回的,此时前端将不显示该私信且没有提示 | +| msg_status | num | 消息状态 | 0:正常
1:被撤回(接口仍能返回被撤回的私信内容)
2:被系统撤回(如:消息被举报;私信将不会显示在前端,B站接口也不会返回被系统撤回的私信的信息)
50:图片已失效(私信内容为一张提示“图片出现问题”的图片) | +| sys_cancel | bool | 是否为系统撤回 | 仅当 `msg_type` 为 `5` 且此项值为 `true` 时有此项;若此项值为 `true`,表示目标消息是被系统撤回的,此时前端将不显示该私信且没有提示 | | notify_code | str | 通知代码 | 发送通知时使用,以下划线 `_` 分割,第 1 项表示主业务 id,第 2 项表示子业务 id;若这条私信非通知则为空文本;详细信息有待补充 | | new_face_version | num | 表情包版本 | 为 `0` 或无此项表示旧版表情包,此时 B 站会自动转换成新版表情包,例如 `[doge]` -> `[tv_doge]`;`1` 为新版 | | msg_source | num | 消息来源 | 见[消息来源列表](#消息来源列表) | @@ -79,8 +79,8 @@ | 2 | Android | | | 3 | H5 | | | 4 | PC客户端 | | -| 5 | 官方自动推送 | 包括:官方向大多数用户发送的私信等 | -| 6 | 自动推送/发送 | 包括:特别关注时稿件的自动推送、因成为契约者而自动发送的私信、包月充电回馈私信、官方发送的特定于自己的消息等 | +| 5 | 官方自动推送 | 包括:官方向大多数用户自动发送的私信(如:UP主小助手的推广)等 | +| 6 | 自动推送/发送 | 包括:特别关注时稿件的自动推送、因成为契约者而自动发送的私信、包月充电回馈私信、官方发送的特定于自己的消息(如:UP主小助手的稿件审核状态通知)等 | | 7 | Web | | | 8 | 自动回复 - 被关注回复 | B站前端会显示“此条消息为自动回复” | | 9 | 自动回复 - 收到消息回复 | B站前端会显示“此条消息为自动回复” | @@ -88,7 +88,7 @@ | 11 | 自动回复 - 大航海上船回复 | B站前端会显示“此条消息为自动回复” | | 12 | 自动推送 - UP 主赠言 | 在以前稿件的自动推送与其附带的 UP 主赠言是 2 条不同的私信(其中 UP 主赠言的消息来源代码为 12),现在 UP 主赠言已被合并成为稿件自动推送消息的一部分(`attach_msg`) | | 13 | 粉丝团系统提示 | 如:粉丝团中的提示信息“欢迎xxx入群” | -| 16 | (?) | **作用尚不明确** | +| 16 | 系统 | 目前仅在 `msg_type` 为 `51` 时使用该代码 | | 17 | 互相关注 | 互相关注时自动发送的私信“我们已互相关注,开始聊天吧~” | | 18 | 系统提示 | 如:“对方主动回复或关注你前,最多发送1条消息” | | 19 | AI | 如:给[搜索AI助手测试版](https://space.bilibili.com/1400565964/)发送私信时对方的自动回复 | @@ -401,7 +401,7 @@ curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/new_sessions' \ | msg | str | 错误信息 | 默认为0 | | message | str | 错误信息 | 默认为0 | | ttl | num | 1 | | -| data | obj | 数据本体 | 详见[会话对象](#会话对象) | +| data | 有效时:obj
无效时:null | 数据本体 | 详见[会话对象](#会话对象) | **示例:** @@ -482,7 +482,7 @@ curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/session_detail' 仅调用该接口不会设置私信为已读,详见[设置私信为已读](#设置私信为已读) -此接口有设计缺陷,可以获取已经撤回的私信内容 +此接口有设计缺陷,可以获取已经撤回(`msg_status` 为 `1`)的私信内容 **url参数:** @@ -503,7 +503,7 @@ curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/session_detail' | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
2:非法参数
-101:账号未登录
-400:请求错误 | +| code | num | 返回值 | 0:成功
2:非法参数
-101:账号未登录
-400:请求错误
700013:已解散QAQ,无法执行此操作
700014:你已不在此同萌中QAQ,无法执行此操作 | | msg | str | 错误信息 | 默认为0 | | message | str | 错误信息 | 默认为0 | | ttl | num | 1 | | @@ -707,7 +707,7 @@ curl 'https://api.vc.bilibili.com/session_svr/v1/session_svr/update_ack' \ | msg[receiver_type] | num | 接收者类型 | 必要 | 1:用户
2:粉丝团 | | msg[msg_type] | num | 消息类型 | 必要 | 详见[私信消息类型、内容说明](private_msg_content.md)
**此接口仅支持传入 `1`、`2` 或 `5`** | | msg[msg_status] | num | 消息状态 | 非必要 | 恒为 `0` | -| msg[dev_id] | str | dev_id | 必要 | 实质上即 UUID(版本 4),**生成方式在下面** | +| msg[dev_id] | str | 设备id | 必要 | 实质上即 UUID(版本 4),**生成方式见下** | | msg[timestamp] | num | 当前时间戳(秒) | 必要 | | | msg[new_face_version] | num | 表情包版本 | 非必要 | 提供 `0` 或者未提供本参数表示旧版表情包,此时 B 站会自动转换成新版表情包,例如 `[doge]` -> `[tv_doge]`;`1` 为新版 | | msg[content] | str | 消息内容 | 必要 | 详见[私信消息类型、内容说明](private_msg_content.md) | @@ -725,7 +725,7 @@ dev_id 实质上就是 UUID(版本 4)
查看生成 UUID 的代码 -**以 Python 为例:** +### Python ```python import uuid @@ -733,7 +733,7 @@ import uuid dev_id = str(uuid.uuid4()) ``` -**以 JS 为例:** +### JavaScript 以下代码适用于较新版的 JS 引擎(Chrome≥92,Firefox≥95,Safari≥15.4,Node.js≥19.0.0): @@ -745,12 +745,12 @@ const dev_id = crypto.randomUUID(); ```js const dev_id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function (name) { - let randomInt = 16 * Math.random() | 0; - return ("x" === name ? randomInt : 3 & randomInt | 8).toString(16).toUpperCase() + const randomInt = 16 * Math.random() | 0; + return ("x" === name ? randomInt : 3 & randomInt | 8).toString(16).toUpperCase(); })); ``` -**以 Java 为例:** +### Java ```java import java.util.UUID; @@ -773,7 +773,7 @@ public class Main { | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
10005:msgkey不存在
21007:消息过长,无法发送
21020:你发送消息频率过快,请稍后再发~
21026:不能给自己发送消息哦~
21028:由于系统升级,暂无法发送,敬请谅解
21035:该类消息暂时无法发送
21037:图片格式不合法,不要调戏接口啦
21041:消息已超期,不能撤回了哦
21042:消息已经撤回了哦
21046:你发消息的频率太高了,请在24小时后再发吧~
21047:对方主动回复或关注你前,最多发送1条消息~
25003:因对方隐私设置,暂无法给他发送聊天消息
25005:你已拉黑了对方,请先将对方移出黑名单后才能聊天 | +| code | num | 返回值 | 0:成功
-3:系统错误
-101:账号未登录
-400:请求错误
10005:msgkey不存在
21007:消息过长,无法发送
21020:你发送消息频率过快,请稍后再发~
21026:不能给自己发送消息哦~
21028:由于系统升级,暂无法发送,敬请谅解
21035:该类消息暂时无法发送
21037:图片格式不合法,不要调戏接口啦
21041:消息已超期,不能撤回了哦
21042:消息已经撤回了哦
21046:你发消息的频率太高了,请在24小时后再发吧~
21047:对方主动回复或关注你前,最多发送1条消息~
25003:因对方隐私设置,暂无法给他发送聊天消息
25005:你已拉黑了对方,请先将对方移出黑名单后才能聊天
700013:已解散QAQ,无法执行此操作
700014:你已不在此同萌中QAQ,无法执行此操作 | | message | str | 错误信息 | 成功时为0 | | ttl | num | | 默认为1 | | data | 有效时:obj
无效时:null | 信息本体 | | @@ -783,9 +783,9 @@ public class Main { | 字段 | 类型 | 内容 | 备注 | | ------------- | ----- | ---------- | --------------------------------------------------------------------- | | msg_key | num | 消息唯一id | | -| e_infos | array | 表情列表 | 仅当请求参数`msg[msg_type]`为`1`,且私信内容中有表情时有此项 | -| msg_content | str | 发送的私信内容 | 一般同请求参数`msg[content]`的值,仅当请求参数`msg[msg_type]`为`1`时有此项 | -| key_hit_infos | obj | 触发的提示 | 仅当请求参数`msg[msg_type]`为`1`且`msg[receiver_type]`为`1`时有此项 | +| e_infos | array | 表情列表 | 仅当请求参数 `msg[msg_type]` 为 `1`,且私信内容中有表情时有此项 | +| msg_content | str | 发送的私信内容 | 一般同请求参数 `msg[content]` 的值,仅当请求参数 `msg[msg_type]` 为 `1` 时有此项 | +| key_hit_infos | obj | 触发的提示 | 仅当请求参数 `msg[msg_type]` 为 `1` 且 `msg[receiver_type]` 为 `1` 时有此项 | `data`对象中的`e_infos`数组: @@ -799,10 +799,10 @@ public class Main { | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | ----------- | ----------------------------------- | -| text | str | 表情名称 | 包括左右两侧的中括号,如`[tv_doge]` | +| text | str | 表情名称 | 包括左右两侧的中括号,如 `[tv_doge]` | | uri | str | 表情链接 | | | size | num | 表情尺寸 | 1:小
2:大 | -| gif_url | str | 表情GIF链接 | 仅部分表情存在此项 | +| gif_url | str | 表情GIF链接 | 仅部分表情存在此项,如小电视表情 | `data`对象中的`key_hit_infos`对象: @@ -831,7 +831,7 @@ public class Main { curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ --data-urlencode 'msg[sender_uid]=293793435' \ --data-urlencode 'msg[receiver_id]=1' \ ---data-urlencode 'msg[receiver_type] =1' \ +--data-urlencode 'msg[receiver_type]=1' \ --data-urlencode 'msg[msg_type]=1' \ --data-urlencode 'msg[msg_status]=0' \ --data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \ @@ -853,7 +853,14 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ "ttl": 1, "data": { "msg_key": 6984393491767669026, - "msg_content": "{\"content\":\"up主你好,\n催更[doge]\"}", + "e_infos": [ + { + "text": "[doge]", + "url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", + "size": 1 + } + ], + "msg_content": "{\"content\":\"up主你好,\\n催更[doge]\"}", "key_hit_infos": {} } } @@ -863,18 +870,18 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ 给目标用户`mid=1`发一条图片私信: -> +> ```shell curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ --data-urlencode 'msg[sender_uid]=293793435' \ --data-urlencode 'msg[receiver_id]=1' \ ---data-urlencode 'msg[receiver_type] =1' \ +--data-urlencode 'msg[receiver_type]=1' \ --data-urlencode 'msg[msg_type]=2' \ --data-urlencode 'msg[msg_status]=0' \ --data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \ --data-urlencode 'msg[timestamp]=1626181379' \ ---data-urlencode 'msg[content]={"url":"https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg"}' \ +--data-urlencode 'msg[content]={"url":"https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg","height":300,"width":300,"imageType":"jpeg","original":1,"size":54.144}' \ --data-urlencode 'csrf=xxx' \ --data-urlencode 'csrf_token=xxx' \ -b 'SESSDATA=xxx' @@ -903,7 +910,7 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ --data-urlencode 'msg[sender_uid]=293793435' \ --data-urlencode 'msg[receiver_id]=1' \ ---data-urlencode 'msg[receiver_type] =1' \ +--data-urlencode 'msg[receiver_type]=1' \ --data-urlencode 'msg[msg_type]=1' \ --data-urlencode 'msg[msg_status]=0' \ --data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \ @@ -928,7 +935,7 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ "key_hit_infos": { "toast": "【温馨提示】为保障消费者权益,根据平台规则,如创作者在与消费者沟通中进行发布要求非法转账、欺诈转账等违规行为,平台有权对此进行处罚,感谢您的理解。", "rule_id": 2, - "high_text": [ {} ] + "high_text": [{}] } } } diff --git a/docs/message/private_msg_content.md b/docs/message/private_msg_content.md index 4dcbbe3..2da6b01 100644 --- a/docs/message/private_msg_content.md +++ b/docs/message/private_msg_content.md @@ -34,11 +34,11 @@ | 字段 | 类型 | 内容 | 备注 | | -------- | ---- | ---------- | ------------------------- | -| url | str | 图片url | 一般为B站图床url | +| url | str | 图片url | 一般为 B 站图床 url | | height | num | 图片高度 | 单位:像素(非必要) | | width | num | 图片宽度 | 单位:像素(非必要) | | type | str | 图片格式 | (非必要) | -| original | num | 是否为原图 | 当本参数值为`1`时,APP上会出现“下载原图”按钮(非必要) | +| original | num | 是否为原图 | 当本参数值为 `1` 时,APP上会出现“下载原图”按钮(非必要) | | size | num | 文件大小 | 单位:千字节(非必要) | **示例:** @@ -96,7 +96,7 @@ **示例:** -分享 UP 主 “社会易姐QwQ” 的视频 av246551172 +分享 UP 主 “社会易姐QwQ” 的视频 av246551172/BV16v411e7CW ```json { @@ -140,7 +140,7 @@ | id | str | 小程序id | | | jump_uri | str | 小程序链接 | | | label_cover | str | 标签图标 | | -| label_name | str | 标签文字内容 | | +| label_name | str | 标签文字内容 | 一般为 `小程序` | | name | str | 小程序名称 | | | title | str | 小程序标题 | | @@ -284,7 +284,7 @@ ### 视频推送消息(`msg_type=11`) -此类型消息仅可接收,**不可直接发送**;有小概率会出现即使视频存在,也只会出现 `rid`、`type`(值为 `11`,注意其名称后面没有下划线)和 `attach_msg` 三项的现象 +此类型消息仅可接收,**不可直接发送**;有小概率会出现即使视频存在,也只会出现 `rid`、`type`(值为 `11` 或 `8`,注意其名称后面没有下划线)和 `attach_msg` 三项的现象 根对象: @@ -517,7 +517,7 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ---------------------- | -| content | str | 提示列表 | 经过序列化后的JSON数组 | +| content | str | 提示列表 | **经过序列化后**的JSON数组 | `content`文本经JSON解析后的数组: