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

7.6 KiB
Raw Blame History

私信


未读私信数

http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread

请求方式GET

认证方式CookieSESSDATA

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-6账号未登录
message str 错误信息 默认为ok
ttl num 1
data obj 信息本体

data 对象:

字段 类型 内容 备注
unfollow_unread num 未关注用户未读私信数
follow_unread num 已关注用户未读私信数
gt num 0

示例:

以下信息代表了为未关注用户未读私信数为1条,已关注用户未读私信数为6

curl 'http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread' \
-b 'SESSDATA=xxx'
查看响应示例:
{
	"code": 0,
	"msg": "ok",
	"message": "ok",
	"data": {
		"unfollow_unread": 1,
		"follow_unread": 6,
		"_gt_": 0
	}
}

发送私信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:发送文字
2:发送图片
5:撤回消息
msg[msg_status] num 0 非必要
msg[dev_id] string 372778FD-E359-461D-86A3-EA2BCC6FF52A 必要 获取方式在下面
msg[timestamp] num 时间戳(秒) 必要
msg[content] 发送文字时str
撤回消息时num
消息内容 必要 详见下表
csrf str CSRF Token位于cookie 必要

dev_id的获取

以JS为例

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

以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站相簿图片上传通道
也可用三方图床
width num 图片的宽 单位:像素(非必要)
height num 图片的高 单位:像素(非必要)
type str 图片格式 (非必要)
original num 1 作用未知(非必要)
size num 文件大小 单位:千字节(非必要)
向上取整

当撤回消息时(msg[msg_type]=5

该参数为数值,为目标消息的msg_key

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
message str 错误信息 默认为ok
ttl num 默认为1
data obj 主体 出错时为空

data对象:

字段 类型 内容 备注
msg_key num 消息唯一id
msg_content str 发送的消息
key_hit_infos obj 作用尚不明确

示例:

给目标用户mid=1发一条文字私信:

up主你好

催更[doge]

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'
查看响应示例:
{"code":0,
"message":"0",
"ttl":1,
"data":{"msg_key":6984393491767669026,
	"msg_content":"up主你好\n催更[doge]",
	"key_hit_infos":{}}}

给目标用户mid=1发一条图片私信:

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'
查看响应示例:
{
    "code":0,
    "msg":"ok",
    "message":"ok",
    "data":{
        "msg_key":6852570013146024354,
        "_gt_":0
    }
}