bilibili-API-collect/message/private_msg.md
7rikka f41151b8e9
添加Java获取dev_id的示例 (#353)
* 添加漫画签到接口

* 添加积分商城相关接口

* 添加基本兑换状态码

* fix format

* 添加新项

* 链接勘误

* 添加Java获取dev_id的示例

* Revert "添加Java获取dev_id的示例"

This reverts commit 125828bb

* 添加Java获取dev_id的示例

* 大会员权益信息更新

* 查询自己收到的充电列表

* 更新视频取流相关参数

* 签到请求地址更正

* 添加查询签到状态接口

* 补充用户信息字段

* 补充粉丝勋章信息字段说明

* 添加系统提示类型

* UPDATE

* UPDATE

* UPDATE

* 添加: 查询我收到的充电留言

* 添加: 查询充电留言详情

* 添加: 回复充电留言

* UPDATE

* UPDATE

Co-authored-by: 社会易姐QwQ <45892418+SocialSisterYi@users.noreply.github.com>
2022-05-14 13:40:01 +08:00

238 lines
7.6 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.

# 私信
- [未读私信数](#未读私信数)
- [发送私信web端](#发送私信web端)
---
## 未读私信数
> http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread
*请求方式GET*
认证方式CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-6账号未登录 |
| message | str | 错误信息 | 默认为ok |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | -------------------- | ---- |
| unfollow_unread | num | 未关注用户未读私信数 | |
| follow_unread | num | 已关注用户未读私信数 | |
| _gt_ | num | 0 | |
**示例:**
以下信息代表了为未关注用户未读私信数为`1`条,已关注用户未读私信数为`6`条
```shell
curl 'http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "ok",
"message": "ok",
"data": {
"unfollow_unread": 1,
"follow_unread": 6,
"_gt_": 0
}
}
```
</details>
## 发送私信web端
> http://api.vc.bilibili.com/web_im/v1/web_im/send_msg
*请求方式POST*
认证方式CookieSESSDATA
**正文参数application/x-www-form-urlencoded**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------------ | ------------------------------------ | ------------------------ | ------ | -------------------------------------- |
| msg[sender_uid] | num | 发送者mid | 必要 | |
| msg[receiver_id] | num | 接收者mid | 必要 | |
| msg[receiver_type] | num | 1 | 必要 | 固定为1 |
| msg[msg_type] | num | 消息类型 | 必要 | 1:发送文字<br>2:发送图片<br>5:撤回消息 |
| msg[msg_status] | num | 0 | 非必要 | |
| msg[dev_id] | string | 372778FD-E359-461D-86A3-EA2BCC6FF52A | 必要 | **获取方式在下面** |
| msg[timestamp] | num | 时间戳(秒) | 必要 | |
| msg[content] | 发送文字时str<br />撤回消息时num | 消息内容 | 必要 | **详见下表** |
| csrf | str | CSRF Token位于cookie | 必要 | |
---
**dev_id的获取**
以JS为例
```javascript
const deviceid = "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()
}));
```
代码来自 [andywang425/BLTH](https://github.com/andywang425/BLTH/blob/45fe93e31754ca8bf07059d46266398e787dbf45/B%E7%AB%99%E7%9B%B4%E6%92%AD%E9%97%B4%E6%8C%82%E6%9C%BA%E5%8A%A9%E6%89%8B.js#L6618)
以Java为例
```java
public class Util{
private String getDevId() {
char[] b = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char[] s = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".toCharArray();
for (int i = 0; i < s.length; i++) {
if ('-' == s[i] || '4' == s[i]) {
continue;
}
int randomInt = (int) (16 * Math.random());
if ('x' == s[i]) {
s[i] = b[randomInt];
} else {
s[i] = b[3 & randomInt | 8];
}
}
return new String(s);
}
}
```
---
`msg[content]`消息内容:
当发送文字时(`msg[msg_type]=1`
该参数为json序列字串
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| content | str | 私信内容 | |
当发送图片时(`msg[msg_type]=2`
该参数为json序列字串
根对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | :-------------------------------------------- |
| url | str | 图片url | 默认为B站相簿图片上传通道<br />也可用三方图床 |
| width | num | 图片的宽 | 单位:像素(非必要) |
| height | num | 图片的高 | 单位:像素(非必要) |
| type | str | 图片格式 | (非必要) |
| original | num | 1 | **作用未知**(非必要) |
| size | num | 文件大小 | 单位:千字节(非必要)<br>__向上取整__ |
当撤回消息时(`msg[msg_type]=5`
该参数为数值,为目标消息的` msg_key `
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------- |
| code | num | 返回值 | 0成功<br> |
| message | str | 错误信息 | 默认为ok |
| ttl | num | | 默认为1 |
| data | obj | 主体 | 出错时为空 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ---------- | ------------ |
| msg_key | num | 消息唯一id | |
| msg_content | str | 发送的消息 | |
| key_hit_infos | obj | | 作用尚不明确 |
**示例:**
给目标用户`mid=1`发一条文字私信:
> up主你好
>
> 催更[doge]
```shell
curl 'http://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[msg_type]=1' \
--data-urlencode 'msg[dev_id] =372778FD-E359-461D-86A3-EA2BCC6FF52A' \
--data-urlencode 'msg[timestamp] =1626181379' \
--data-urlencode 'msg[content]={"content":"up主你好\n催更[doge]"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{"code":0,
"message":"0",
"ttl":1,
"data":{"msg_key":6984393491767669026,
"msg_content":"up主你好\n催更[doge]",
"key_hit_infos":{}}}
```
</details>
给目标用户`mid=1`发一条图片私信:
> <img src="https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" style="zoom:50%;" >
```shell
curl 'http://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[msg_type]=2' \
--data-urlencode 'msg[content]={"url":https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg}' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"msg":"ok",
"message":"ok",
"data":{
"msg_key":6852570013146024354,
"_gt_":0
}
}
```
</details>