返回提交历史
Modified
docs/message/private_msg.md
+35
-28
Modified
docs/message/private_msg_content.md
+6
-6
XFEstudio/bilibili-API-collect
update docs
9b80590
代码差异
2 个文件
+41
-34
@@ -51,13 +51,13 @@
51
51
| receiver_type | num | 接收者类型 | 1:用户<br />2:粉丝团 |
52
52
| receiver_id | num | 接收者id | `receiver_type` 为 `1` 时表示用户 mid,为 `2` 时表示粉丝团 id |
53
53
| msg_type | num | 消息类型 | 详见[私信消息类型、内容说明](private_msg_content.md) |
54
| content | str | 消息内容 | [私信内容对象](private_msg_content.md)经过 JSON 序列化后的文本 |
54
| content | str | 消息内容 | [私信内容对象](private_msg_content.md)**经过 JSON 序列化后的文本** |
55
55
| msg_seqno | num | 消息序列号 | 按照时间顺序从小到大 |
56
56
| timestamp | num | 消息发送时间 | 秒级时间戳 |
57
57
| at_uids | 有效时:array<br />无效时:null | at的成员mid | 在粉丝团时有效;此项为 `null` 或 `[0]` 均表示没有 at 成员 |
58
58
| msg_key | num | 消息唯一id | 部分库在解析JSON对象中的大数时存在数值的精度丢失问题,因此在处理私信时可能会出现问题,建议使用修复了这一问题的库(如将大数转换成文本) |
59
| msg_status | num | 消息状态 | 0:正常<br />1:被撤回(接口仍能返回被撤回的私信内容)<br />2:被系统撤回(私信将不会显示在前端,B站接口也不会返回被系统撤回的私信)<br />50:图片已失效(私信内容为一张提示“图片出现问题”的图片) |
60
| sys_cancel | bool | 是否为系统撤回 | 仅当消息类型为 `5` 且此项值为 `true` 时有此项;若此项值为 `true`,表示目标消息是被系统撤回的,此时前端将不显示该私信且没有提示 |
59
| msg_status | num | 消息状态 | 0:正常<br />1:被撤回(接口仍能返回被撤回的私信内容)<br />2:被系统撤回(如:消息被举报;私信将不会显示在前端,B站接口也不会返回被系统撤回的私信的信息)<br />50:图片已失效(私信内容为一张提示“图片出现问题”的图片) |
60
| sys_cancel | bool | 是否为系统撤回 | 仅当 `msg_type` 为 `5` 且此项值为 `true` 时有此项;若此项值为 `true`,表示目标消息是被系统撤回的,此时前端将不显示该私信且没有提示 |
61
61
| notify_code | str | 通知代码 | 发送通知时使用,以下划线 `_` 分割,第 1 项表示主业务 id,第 2 项表示子业务 id;若这条私信非通知则为空文本;详细信息有待补充 |
62
62
| new_face_version | num | 表情包版本 | 为 `0` 或无此项表示旧版表情包,此时 B 站会自动转换成新版表情包,例如 `[doge]` -> `[tv_doge]`;`1` 为新版 |
63
63
| msg_source | num | 消息来源 | 见[消息来源列表](#消息来源列表) |
@@ -79,8 +79,8 @@
79
79
| 2 | Android | |
80
80
| 3 | H5 | |
81
81
| 4 | PC客户端 | |
82
| 5 | 官方自动推送 | 包括:官方向大多数用户发送的私信等 |
83
| 6 | 自动推送/发送 | 包括:特别关注时稿件的自动推送、因成为契约者而自动发送的私信、包月充电回馈私信、官方发送的特定于自己的消息等 |
82
| 5 | 官方自动推送 | 包括:官方向大多数用户自动发送的私信(如:UP主小助手的推广)等 |
83
| 6 | 自动推送/发送 | 包括:特别关注时稿件的自动推送、因成为契约者而自动发送的私信、包月充电回馈私信、官方发送的特定于自己的消息(如:UP主小助手的稿件审核状态通知)等 |
84
84
| 7 | Web | |
85
85
| 8 | 自动回复 - 被关注回复 | B站前端会显示“此条消息为自动回复” |
86
86
| 9 | 自动回复 - 收到消息回复 | B站前端会显示“此条消息为自动回复” |
@@ -88,7 +88,7 @@
88
88
| 11 | 自动回复 - 大航海上船回复 | B站前端会显示“此条消息为自动回复” |
89
89
| 12 | 自动推送 - UP 主赠言 | 在以前稿件的自动推送与其附带的 UP 主赠言是 2 条不同的私信(其中 UP 主赠言的消息来源代码为 12),现在 UP 主赠言已被合并成为稿件自动推送消息的一部分(`attach_msg`) |
90
90
| 13 | 粉丝团系统提示 | 如:粉丝团中的提示信息“欢迎xxx入群” |
91
| 16 | (?) | **作用尚不明确** |
91
| 16 | 系统 | 目前仅在 `msg_type` 为 `51` 时使用该代码 |
92
92
| 17 | 互相关注 | 互相关注时自动发送的私信“我们已互相关注,开始聊天吧~” |
93
93
| 18 | 系统提示 | 如:“对方主动回复或关注你前,最多发送1条消息” |
94
94
| 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' \
401
401
| msg | str | 错误信息 | 默认为0 |
402
402
| message | str | 错误信息 | 默认为0 |
403
403
| ttl | num | 1 | |
404
| data | obj | 数据本体 | 详见[会话对象](#会话对象) |
404
| data | 有效时:obj<br />无效时:null | 数据本体 | 详见[会话对象](#会话对象) |
405
405
406
406
**示例:**
407
407
@@ -482,7 +482,7 @@ curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/session_detail'
482
482
483
483
仅调用该接口不会设置私信为已读,详见[设置私信为已读](#设置私信为已读)
484
484
485
此接口有设计缺陷,可以获取已经撤回的私信内容
485
此接口有设计缺陷,可以获取已经撤回(`msg_status` 为 `1`)的私信内容
486
486
487
487
**url参数:**
488
488
@@ -503,7 +503,7 @@ curl -G 'https://api.vc.bilibili.com/session_svr/v1/session_svr/session_detail'
503
503
504
504
| 字段 | 类型 | 内容 | 备注 |
505
505
| ------- | ---- | -------- | ------------------------------------------------- |
506
| code | num | 返回值 | 0:成功<br />2:非法参数<br />-101:账号未登录<br />-400:请求错误 |
506
| code | num | 返回值 | 0:成功<br />2:非法参数<br />-101:账号未登录<br />-400:请求错误<br />700013:已解散QAQ,无法执行此操作<br />700014:你已不在此同萌中QAQ,无法执行此操作 |
507
507
| msg | str | 错误信息 | 默认为0 |
508
508
| message | str | 错误信息 | 默认为0 |
509
509
| ttl | num | 1 | |
@@ -707,7 +707,7 @@ curl 'https://api.vc.bilibili.com/session_svr/v1/session_svr/update_ack' \
707
707
| msg[receiver_type] | num | 接收者类型 | 必要 | 1:用户<br />2:粉丝团 |
708
708
| msg[msg_type] | num | 消息类型 | 必要 | 详见[私信消息类型、内容说明](private_msg_content.md)<br />**此接口仅支持传入 `1`、`2` 或 `5`** |
709
709
| msg[msg_status] | num | 消息状态 | 非必要 | 恒为 `0` |
710
| msg[dev_id] | str | dev_id | 必要 | 实质上即 UUID(版本 4),**生成方式在下面** |
710
| msg[dev_id] | str | 设备id | 必要 | 实质上即 UUID(版本 4),**生成方式见下** |
711
711
| msg[timestamp] | num | 当前时间戳(秒) | 必要 | |
712
712
| msg[new_face_version] | num | 表情包版本 | 非必要 | 提供 `0` 或者未提供本参数表示旧版表情包,此时 B 站会自动转换成新版表情包,例如 `[doge]` -> `[tv_doge]`;`1` 为新版 |
713
713
| msg[content] | str | 消息内容 | 必要 | 详见[私信消息类型、内容说明](private_msg_content.md) |
@@ -725,7 +725,7 @@ dev_id 实质上就是 UUID(版本 4)
725
725
<details>
726
726
<summary>查看生成 UUID 的代码</summary>
727
727
728
**以 Python 为例:**
728
### Python
729
729
730
730
```python
731
731
import uuid
@@ -733,7 +733,7 @@ import uuid
733
733
dev_id = str(uuid.uuid4())
734
734
```
735
735
736
**以 JS 为例:**
736
### JavaScript
737
737
738
738
以下代码适用于较新版的 JS 引擎(Chrome≥92,Firefox≥95,Safari≥15.4,Node.js≥19.0.0):
739
739
@@ -745,12 +745,12 @@ const dev_id = crypto.randomUUID();
745
745
746
746
```js
747
747
const dev_id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function (name) {
748
let randomInt = 16 * Math.random() | 0;
749
return ("x" === name ? randomInt : 3 & randomInt | 8).toString(16).toUpperCase()
748
const randomInt = 16 * Math.random() | 0;
749
return ("x" === name ? randomInt : 3 & randomInt | 8).toString(16).toUpperCase();
750
750
}));
751
751
```
752
752
753
**以 Java 为例:**
753
### Java
754
754
755
755
```java
756
756
import java.util.UUID;
@@ -773,7 +773,7 @@ public class Main {
773
773
774
774
| 字段 | 类型 | 内容 | 备注 |
775
775
| ------- | ---- | -------- | ------------------------------------------------- |
776
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />10005:msgkey不存在<br />21007:消息过长,无法发送<br />21020:你发送消息频率过快,请稍后再发~<br />21026:不能给自己发送消息哦~<br />21028:由于系统升级,暂无法发送,敬请谅解<br />21035:该类消息暂时无法发送<br />21037:图片格式不合法,不要调戏接口啦<br />21041:消息已超期,不能撤回了哦<br />21042:消息已经撤回了哦<br />21046:你发消息的频率太高了,请在24小时后再发吧~<br />21047:对方主动回复或关注你前,最多发送1条消息~<br />25003:因对方隐私设置,暂无法给他发送聊天消息<br />25005:你已拉黑了对方,请先将对方移出黑名单后才能聊天 |
776
| code | num | 返回值 | 0:成功<br />-3:系统错误<br />-101:账号未登录<br />-400:请求错误<br />10005:msgkey不存在<br />21007:消息过长,无法发送<br />21020:你发送消息频率过快,请稍后再发~<br />21026:不能给自己发送消息哦~<br />21028:由于系统升级,暂无法发送,敬请谅解<br />21035:该类消息暂时无法发送<br />21037:图片格式不合法,不要调戏接口啦<br />21041:消息已超期,不能撤回了哦<br />21042:消息已经撤回了哦<br />21046:你发消息的频率太高了,请在24小时后再发吧~<br />21047:对方主动回复或关注你前,最多发送1条消息~<br />25003:因对方隐私设置,暂无法给他发送聊天消息<br />25005:你已拉黑了对方,请先将对方移出黑名单后才能聊天<br />700013:已解散QAQ,无法执行此操作<br />700014:你已不在此同萌中QAQ,无法执行此操作 |
777
777
| message | str | 错误信息 | 成功时为0 |
778
778
| ttl | num | | 默认为1 |
779
779
| data | 有效时:obj<br />无效时:null | 信息本体 | |
@@ -783,9 +783,9 @@ public class Main {
783
783
| 字段 | 类型 | 内容 | 备注 |
784
784
| ------------- | ----- | ---------- | --------------------------------------------------------------------- |
785
785
| msg_key | num | 消息唯一id | |
786
| e_infos | array | 表情列表 | 仅当请求参数`msg[msg_type]`为`1`,且私信内容中有表情时有此项 |
787
| msg_content | str | 发送的私信内容 | 一般同请求参数`msg[content]`的值,仅当请求参数`msg[msg_type]`为`1`时有此项 |
788
| key_hit_infos | obj | 触发的提示 | 仅当请求参数`msg[msg_type]`为`1`且`msg[receiver_type]`为`1`时有此项 |
786
| e_infos | array | 表情列表 | 仅当请求参数 `msg[msg_type]` 为 `1`,且私信内容中有表情时有此项 |
787
| msg_content | str | 发送的私信内容 | 一般同请求参数 `msg[content]` 的值,仅当请求参数 `msg[msg_type]` 为 `1` 时有此项 |
788
| key_hit_infos | obj | 触发的提示 | 仅当请求参数 `msg[msg_type]` 为 `1` 且 `msg[receiver_type]` 为 `1` 时有此项 |
789
789
790
790
`data`对象中的`e_infos`数组:
791
791
@@ -799,10 +799,10 @@ public class Main {
799
799
800
800
| 字段 | 类型 | 内容 | 备注 |
801
801
| ------- | ---- | ----------- | ----------------------------------- |
802
| text | str | 表情名称 | 包括左右两侧的中括号,如`[tv_doge]` |
802
| text | str | 表情名称 | 包括左右两侧的中括号,如 `[tv_doge]` |
803
803
| uri | str | 表情链接 | |
804
804
| size | num | 表情尺寸 | 1:小<br />2:大 |
805
| gif_url | str | 表情GIF链接 | 仅部分表情存在此项 |
805
| gif_url | str | 表情GIF链接 | 仅部分表情存在此项,如小电视表情 |
806
806
807
807
`data`对象中的`key_hit_infos`对象:
808
808
@@ -831,7 +831,7 @@ public class Main {
831
831
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
832
832
--data-urlencode 'msg[sender_uid]=293793435' \
833
833
--data-urlencode 'msg[receiver_id]=1' \
834
--data-urlencode 'msg[receiver_type]=1' \
834
835
--data-urlencode 'msg[msg_type]=1' \
835
836
--data-urlencode 'msg[msg_status]=0' \
836
837
--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' \
853
853
"ttl": 1,
854
854
"data": {
855
855
"msg_key": 6984393491767669026,
856
"msg_content": "{\"content\":\"up主你好,\n催更[doge]\"}",
856
"e_infos": [
857
{
858
"text": "[doge]",
859
"url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png",
860
"size": 1
861
}
862
],
863
"msg_content": "{\"content\":\"up主你好,\\n催更[doge]\"}",
857
864
"key_hit_infos": {}
858
865
}
859
866
}
@@ -863,18 +870,18 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
863
870
864
871
给目标用户`mid=1`发一条图片私信:
865
872
866
> <img src="https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" style="zoom:50%;">
873
> <img src="https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" style="zoom: 50%;">
867
874
868
875
```shell
869
876
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
870
877
--data-urlencode 'msg[sender_uid]=293793435' \
871
878
--data-urlencode 'msg[receiver_id]=1' \
879
--data-urlencode 'msg[receiver_type]=1' \
872
880
--data-urlencode 'msg[msg_type]=2' \
873
881
--data-urlencode 'msg[msg_status]=0' \
874
882
--data-urlencode 'msg[dev_id]=372778FD-E359-461D-86A3-EA2BCC6FF52A' \
875
883
--data-urlencode 'msg[timestamp]=1626181379' \
884
--data-urlencode 'msg[content]={"url":"https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg","height":300,"width":300,"imageType":"jpeg","original":1,"size":54.144}' \
876
885
--data-urlencode 'csrf=xxx' \
877
886
--data-urlencode 'csrf_token=xxx' \
878
887
-b 'SESSDATA=xxx'
@@ -903,7 +910,7 @@ curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
903
910
curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \
904
911
--data-urlencode 'msg[sender_uid]=293793435' \
905
912
--data-urlencode 'msg[receiver_id]=1' \
913
--data-urlencode 'msg[receiver_type]=1' \
906
914
--data-urlencode 'msg[msg_type]=1' \
907
915
--data-urlencode 'msg[msg_status]=0' \
908
916
--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' \
928
935
"key_hit_infos": {
929
936
"toast": "【温馨提示】为保障消费者权益,根据平台规则,如创作者在与消费者沟通中进行发布要求非法转账、欺诈转账等违规行为,平台有权对此进行处罚,感谢您的理解。",
930
937
"rule_id": 2,
931
"high_text": [ {} ]
938
"high_text": [{}]
932
939
}
933
940
}
934
941
}
@@ -34,11 +34,11 @@
34
34
35
35
| 字段 | 类型 | 内容 | 备注 |
36
36
| -------- | ---- | ---------- | ------------------------- |
37
| url | str | 图片url | 一般为B站图床url |
37
| url | str | 图片url | 一般为 B 站图床 url |
38
38
| height | num | 图片高度 | 单位:像素(非必要) |
39
39
| width | num | 图片宽度 | 单位:像素(非必要) |
40
40
| type | str | 图片格式 | (非必要) |
41
| original | num | 是否为原图 | 当本参数值为`1`时,APP上会出现“下载原图”按钮(非必要) |
41
| original | num | 是否为原图 | 当本参数值为 `1` 时,APP上会出现“下载原图”按钮(非必要) |
42
42
| size | num | 文件大小 | 单位:千字节(非必要) |
43
43
44
44
**示例:**
@@ -96,7 +96,7 @@
96
96
97
97
**示例:**
98
98
99
分享 UP 主 “社会易姐QwQ” 的视频 av246551172
99
分享 UP 主 “社会易姐QwQ” 的视频 av246551172/BV16v411e7CW
100
100
101
101
```json
102
102
{
@@ -140,7 +140,7 @@
140
140
| id | str | 小程序id | |
141
141
| jump_uri | str | 小程序链接 | |
142
142
| label_cover | str | 标签图标 | |
143
| label_name | str | 标签文字内容 | |
143
| label_name | str | 标签文字内容 | 一般为 `小程序` |
144
144
| name | str | 小程序名称 | |
145
145
| title | str | 小程序标题 | |
146
146
@@ -284,7 +284,7 @@
284
284
285
285
### 视频推送消息(`msg_type=11`)
286
286
287
此类型消息仅可接收,**不可直接发送**;有小概率会出现即使视频存在,也只会出现 `rid`、`type`(值为 `11`,注意其名称后面没有下划线)和 `attach_msg` 三项的现象
287
此类型消息仅可接收,**不可直接发送**;有小概率会出现即使视频存在,也只会出现 `rid`、`type`(值为 `11` 或 `8`,注意其名称后面没有下划线)和 `attach_msg` 三项的现象
288
288
289
289
根对象:
290
290
@@ -517,7 +517,7 @@
517
517
518
518
| 字段 | 类型 | 内容 | 备注 |
519
519
| ------- | ---- | -------- | ---------------------- |
520
| content | str | 提示列表 | 经过序列化后的JSON数组 |
520
| content | str | 提示列表 | **经过序列化后**的JSON数组 |
521
521
522
522
`content`文本经JSON解析后的数组:
523
523