Bbili-open-mcpMCP
★

长连CMD说明

protocol#47直播间数据

[TOC]

[TOC]

获取弹幕信息#

  • 当该直播间有人发送弹幕时触发

CMD:OPEN_LIVEROOM_DM

返回字段:

字段名类型描述
unamestring用户昵称
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
ufacestring用户头像
timestampint64弹幕发送时间秒级时间戳
room_idint64弹幕接收的直播间
msgstring弹幕内容
msg_idstring消息唯一id
guard_levelint64对应房间大航海等级
fans_medal_wearing_statusbool该房间粉丝勋章佩戴情况
fans_medal_namestring粉丝勋章名
fans_medal_levelint64对应房间勋章信息
emoji_img_urlstring表情包图片地址
dm_typeint64弹幕类型 0:普通弹幕 1:表情包弹幕
glory_levelint直播荣耀等级
reply_open_idstring被at用户唯一标识
reply_unamestring被at的用户昵称
is_adminint发送弹幕的用户是否是房管,取值范围0或1,取值为1时是房管

参考json

json
{
    "cmd":"OPEN_LIVEROOM_DM",
    "data":{
        "room_id":1,//弹幕接收的直播间
		"open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//用户唯一标识
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "uname":"",//用户昵称
        "msg":"",//弹幕内容
        "msg_id":"",//消息唯一id
        "fans_medal_level":0,//对应房间勋章信息
        "fans_medal_name":"粉丝勋章名",
        "fans_medal_wearing_status": true,//该房间粉丝勋章佩戴情况
        "guard_level":0,//对应房间大航海 1总督 2提督 3舰长
        "timestamp":0,//弹幕发送时间秒级时间戳
        "uface":"",//用户头像   
        "emoji_img_url": "", //表情包图片地址
        "dm_type": 0,//弹幕类型 0:普通弹幕 1:表情包弹幕
		"glory_level": 39,//直播荣耀等级
		"reply_open_id": "39b8fedb-60a5-4e29-ac75-b16955f7e632",//被at用户唯一标识
		"reply_uname": "",//被at的用户昵称
		"is_admin":1//发送弹幕的用户是否为房管
    }
}

跨房弹幕信息#

  • 当该直播间为支持跨房弹幕的直播间模式,其他直播间有人发送弹幕时触发

请注意:除下面列出来的字段外,该cmd推送消息中的其他信息不保证可用性,并且推荐和直播间观众观看内容表现一致:【不显示发送人信息】

CMD:OPEN_LIVEROOM_DM_MIRROR

返回字段:

字段名类型描述
timestampint64弹幕发送时间秒级时间戳
room_idint64当前收到这条弹幕的直播间
msgstring弹幕内容
msg_idstring消息唯一id
emoji_img_urlstring表情包图片地址
dm_typeint64弹幕类型 0:普通弹幕 1:表情包弹幕

参考json

json
{
  "cmd": "OPEN_LIVEROOM_DM_MIRROR",
  "data": {
    "room_id": 1, //当前收到这条弹幕的直播间
    "msg": "", //弹幕内容
    "msg_id": "", //消息唯一id
    "timestamp": 0, //弹幕发送时间秒级时间戳
    "emoji_img_url": "", //表情包图片地址
    "dm_type": 0, //弹幕类型 0:普通弹幕 1:表情包弹幕
  }
}

获取礼物信息#

  • 当该直播间有人赠送礼物时触发

CMD:OPEN_LIVEROOM_SEND_GIFT

返回字段:

字段名类型描述
room_idint64房间号
open_idstring送礼用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
unamestring送礼用户昵称
ufacestring送礼用户头像
gift_idint64道具id(盲盒:爆出道具id)
gift_namestring道具名(盲盒:爆出道具名)
gift_numint64赠送道具数量
priceint64礼物爆出单价,(1000 = 1元 = 10电池),盲盒:爆出道具的价值
r_priceint64实际价值(1000 = 1元 = 10电池),盲盒:爆出道具的价值
paidbool是否是付费道具
fans_medal_levelint64实际送礼人的勋章信息
fans_medal_namestring粉丝勋章名
fans_medal_wearing_statusbool该房间粉丝勋章佩戴情况
guard_levelint64大航海等级
timestampint64收礼时间秒级时间戳
anchor_infoanchor_info结构体主播信息
msg_idstring消息唯一id
gift_iconstring道具icon
combo_giftbool是否是combo道具
combo_infocombo_info结构体连击信息
blind_giftblind_gift结构体盲盒信息
anchor_info结构体类型描述
uidint64收礼主播uid
unamestring收礼主播昵称
ufacestring收礼主播头像
combo_info类型描述
combo_base_numint64每次连击赠送的道具数量
combo_countint64连击次数
combo_idstring连击id
combo_timeoutint64连击有效期秒
blind_gift类型描述
blind_gift_idint64盲盒id
statusbool是否是盲盒

参考json

json
{
    "cmd":"OPEN_LIVEROOM_SEND_GIFT",
    "data":{
        "room_id":1,//直播间(演播厅模式则为演播厅直播间,非演播厅模式则为收礼直播间)
		"open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//用户唯一标识
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "uname":"",//送礼用户昵称
        "uface":"",//送礼用户头像
        "gift_id":0,//道具id(盲盒:爆出道具id)
        "gift_name":"",//道具名(盲盒:爆出道具名)
        "gift_num":0,//赠送道具数量
        "price":0,//礼物单价(1000 = 1元 = 10电池),盲盒:爆出道具的价值
        "paid":false,//是否是付费道具
        "fans_medal_level":0,//对应房间勋章信息
        "fans_medal_name":"粉丝勋章名", //粉丝勋章名
        "fans_medal_wearing_status": true,//该房间粉丝勋章佩戴情况
        "guard_level":0,//room_id对应的大航海等级
        "timestamp":0,//收礼时间秒级时间戳
        "msg_id":"",//消息唯一id
        "anchor_info":{
        	"uid":0,//收礼主播UID(废弃)
            "open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//主播唯一标识            
            "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识
            "uname":"",//收礼主播昵称
            "uface":"http://i0.hdslb.com/bfs/face/4add3acfc930fcd07d06ea5e10a3a377314141c2.jpg"//收礼主播头像
        },
        "gift_icon":"http://i1.hdslb.com/dksldksldksld.jpg", //道具icon  (新增)
        "combo_gift":true,//是否是combo道具
        "combo_info":{ //ex:连击次数100,每个连击是批量送5个 既  5 * 100
            "combo_base_num": 5,//每次连击赠送的道具数量
            "combo_count":100,//连击次数
            "combo_id":"xxxxxx",//连击id
            "combo_timeout": 3,//连击有效期秒
        },
        "blind_gift": 
        {
            "blind_gift_id": 10086,//盲盒id
            "status": true,//是否是盲盒
        }
    }

:::

获取付费留言#

  • 当该直播间有人发送付费留言时触发

CMD:OPEN_LIVEROOM_SUPER_CHAT

返回字段:

字段名类型描述
room_idint64直播间id
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
unamestring购买的用户昵称
ufacestring购买用户头像
message_idint64留言id(风控场景下撤回留言需要)
messagestring留言内容
rmbint64支付金额(元)
timestampint64赠送时间秒级
start_timeint64生效开始时间
end_timeint64生效结束时间
guard_levelint64对应房间大航海等级
fans_medal_levelint64对应房间勋章信息
fans_medal_namestring对应房间勋章名字
fans_medal_wearing_statusbool该房间粉丝勋章佩戴情况
msg_idstring消息唯一id

参考json

json
{
    "cmd":"OPEN_LIVEROOM_SUPER_CHAT",
    "data":{
        "room_id":1,//直播间id
		"open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//购买用户唯一标识
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "uname":"",//购买的用户昵称
        "uface":"",//购买用户头像
        "message_id":0,//留言id(风控场景下撤回留言需要)
        "message":"",//留言内容
        "msg_id":"",//消息唯一id
        "rmb":0,//支付金额(元)
        "timestamp":0,//赠送时间秒级
        "start_time":0,//生效开始时间
        "end_time":0,//生效结束时间
        "guard_level": 2, //对应房间大航海登记    (新增) 
        "fans_medal_level": 26, //对应房间勋章信息  (新增) 
        "fans_medal_name": "aw4ifC", //对应房间勋章名字  (新增) 
        "fans_medal_wearing_status": true //该房间粉丝勋章佩戴情况   (新增)
    }
}

付费留言下线#

  • 当该直播间有付费留言被下线时触发

CMD:OPEN_LIVEROOM_SUPER_CHAT_DEL

返回字段:

字段名类型描述
room_idint64直播间id
message_ids[]int64留言id
msg_idstring消息唯一id

参考json

json
{
    "cmd":"OPEN_LIVEROOM_SUPER_CHAT_DEL",
    "data":{
        "room_id":1,//直播间id
        "message_ids":[1,2],// 留言id
        "msg_id":""//消息唯一id
    }
}

付费大航海#

  • 当该直播间有人上舰时触发

CMD:OPEN_LIVEROOM_GUARD

返回字段:

字段名类型描述
user_infouser_info结构体用户信息
guard_levelint64大航海等级
guard_numint64大航海数量
guard_unitstring大航海单位(正常单位为“月”,如为其他内容,无视guard_num以本字段内容为准,例如*3天)
priceint64大航海金瓜子
fans_medal_levelint64粉丝勋章等级
fans_medal_namestring粉丝勋章名
fans_medal_wearing_statusbool该房间粉丝勋章佩戴情况
room_idint64房间号
msg_idstring消息唯一id
timestampint64上舰时间秒级时间戳
user_info结构体类型描述
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
unamestring用户昵称
ufacestring用户头像

参考json

json
{
    "cmd": "OPEN_LIVEROOM_GUARD",
    "data": {
        "user_info": {
			"open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//用户唯一标识
            "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
            "uname":"",//用户昵称
            "uface": "http://i0.hdslb.com/bfs/face/4add3acfc930fcd07d06ea5e10a3a377314141c2.jpg" //用户头像
        },
        "guard_level": 3, //对应的大航海等级 1总督 2提督 3舰长
        "guard_num": 1,
        "guard_unit": "月", // 正常单位为“月”,如为其他内容,无视`guard_num`以本字段内容为准,例如`*3天`
		"price":198000,
        "fans_medal_level": 24, //粉丝勋章等级
        "fans_medal_name": "aw4ifC", //粉丝勋章名
        "fans_medal_wearing_status": false, //该房间粉丝勋章佩戴情况
        "timestamp": 1653555128,
        "room_id": 460695,
        "msg_id":""//消息唯一id
    }
}

点赞信息#

  • 该直播间有用户在移动端双击直播画面点赞时触发

<font color=Red>请注意: </font>

  • 只有房间处于开播中,才会触发点赞事件。
  • 对单一用户最近2秒聚合发送一次点赞次数。

CMD:OPEN_LIVEROOM_LIKE

返回字段:

字段名类型描述
unamestring用户昵称
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
ufacestring用户头像
timestampint64时间秒级时间戳
room_idint64发生的直播间
like_textstring点赞文案( "xxx点赞了")
like_countint64对单个用户最近2秒的点赞次数聚合
fans_medal_wearing_statusbool该房间粉丝勋章佩戴情况
fans_medal_namestring粉丝勋章名
fans_medal_levelint64对应房间勋章信息

参考json

json
{
    "data": {
        "uname": "哔哩哔哩直播",
		"open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//用户唯一标识
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "uface": "https://i0.hdslb.com/bfs/face/8f6a614a48a3813d90da7a11894ae56a59396fcd.jpg",
        "timestamp": 1685946262,
        "like_text": "为主播点赞了",
		"like_count":114,
        "fans_medal_wearing_status": false,
        "fans_medal_name": "",
        "fans_medal_level": 0,
        "msg_id": "57a7c676-ff00-4967-bb09-03e800ab0f4d",
        "room_id": 1
    },
    "cmd": "OPEN_LIVEROOM_LIKE"
}

进入房间#

  • 该直播间有观众进入直播间时触发

请注意:如果单个直播间每秒进入人数超过R个人,那么会被限制每秒推送数量,其中R由当前服务的负载动态决定(最低不会低于10 QPS)

CMD:OPEN_LIVEROOM_LIVE_ROOM_ENTER

字段名类型描述
room_idint64发生的直播间
ufacestring用户头像
unamestring用户昵称
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
timestampint64发生的时间戳
json
{
    "cmd":"OPEN_PLATFORM_LIVE_ROOM_ENTER",
    "data":{
        "room_id":1,
        "uface":"", // 头像
        "uname":"",// 昵称
        "open_id":"39b8fedb-60a5-4e29-ac75-b16955f7e632",//用户唯一标识
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "timestamp":0, //时间戳
    }
}

关于退出房间#

由于没有明确的退出事件触发和标志,在包括但不限于以下情况都下可能会触发“退出房间”事件:

  • 标签页后台挂起,被浏览器冻结或终止。
  • 直播间检测到无响应(确认弹窗超时)后主动断开连接。
  • 网络不良导致的断续重连。
  • 关闭直播间后服务器推送消息超时。
  • 其他未列出的情况

以上这些情况通常在服务器异步调用情况下被发现是连接不可达,系统会猜测用户已退出房间。因此,在数据不可信且存在大量重复无意义数据的情况下,未提供明确的退出房间事件。

开始直播#

  • 该直播间开始直播时触发

CMD:OPEN_LIVEROOM_LIVE_START

字段名类型描述
room_idint64发生的直播间
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
timestampint64发生的时间戳
area_namestring开播二级分区名称
titlestring开播时刻,直播间的标题
json
{
    "cmd": "OPEN_PLATFORM_LIVE_START",
    "data": {
        "area_name": "户外",
        "open_id": "useropenidabcdefghigklmnopqrstuvwxyz",
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "room_id": 22018648,
        "timestamp": 1732175513,
        "title": "标题"
    }
}

结束直播#

  • 该直播间停止直播时触发

CMD:OPEN_LIVEROOM_LIVE_END

字段名类型描述
room_idint64发生的直播间
open_idstring用户唯一标识
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
timestampint64发生的时间戳
area_namestring开播二级分区名称
titlestring开播时刻,直播间的标题
json
{
    "cmd": "OPEN_PLATFORM_LIVE_END",
    "data": {
        "area_name": "户外",
        "open_id": "useropenidabcdefghigklmnopqrstuvwxyz",
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
        "room_id": 22018648,
        "timestamp": 1732175513,
        "title": "标题"
    }
}

直播间基础信息变化#

  • 当直播间修改标题或开播分区等基本信息时触发

CMD:OPEN_LIVEROOM_ROOM_CHANGE

字段名类型描述
area_namestring开播二级分区名称
msg_idstring推送消息的唯一ID
parent_area_namestring开播一级分区名称
room_idint64发生的直播间
timestampint64发生的时间戳
titlestring直播间的标题
json
{
	"cmd": "OPEN_LIVEROOM_ROOM_CHANGE",
	"data": {
		"area_name": "虚拟日常",
		"msg_id": "834c7954-4c10-411d-99e8-92bd639716cb",
		"parent_area_name": "虚拟主播",
		"room_id": 9617619,
		"timestamp": 1734674745,
		"title": "直播间标题"
	}
}

用户禁言通知#

  • 当自己的直播间中有用户被禁言时触发

CMD:OPEN_LIVEROOM_ROOM_BLOCK_MSG

字段名类型描述
block_expiredint64禁言结束时间戳(UTC+8,秒)
msg_idstring推送消息的唯一ID
open_idstring被禁言的用户open_id
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
room_idint64发生的直播间
unamestring被禁言的用户昵称
json
{
	"cmd": "OPEN_LIVEROOM_ROOM_BLOCK_MSG",
	"data": {
		"block_expired": 1734682380,
		"msg_id": "319a642a-cbbf-4e00-890a-593d03f7e7a6",
		"open_id": "693778416f9243cc97738b59a744d256",
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
		"room_id": 9617619,
		"uname": "哔哩哔哩开放平台"
	}
}

用户关注通知#

  • 当在直播间中有用户关注主播后触发

CMD:OPEN_LIVEROOM_INTERACT_WORD

字段名类型描述
msg_idstring推送消息的唯一ID
open_idstring进行关注操作的用户open_id
union_idstring用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
room_idint64发生的直播间
timestampint64发生的时间戳
unamestring进行关注操作的用户昵称
json
{
	"cmd": "OPEN_LIVEROOM_INTERACT_WORD",
	"data": {
		"msg_id": "663a231e-eea4-4e96-846e-07f0272fa4c4",
		"open_id": "a8417dc6988440abba38b7284d80fc4c",
        "union_id":"U_05ad57b6655a44528cb95a892c491232",//用户在同一个开发者下的唯一标识(默认为空,根据业务需求单独申请开通)
		"room_id": 9617619,
		"timestamp": 1734675235,
		"uname": "哔哩哔哩开放平台"
	}
}

直播间警告信息#

  • 当主播自己的直播间触发直播警告信息时触发

CMD:OPEN_LIVEROOM_WARNING

字段名类型描述
msgstring警告信息内容
msg_idstring推送消息的唯一ID
room_idint64发生的直播间
timestampint64发生的时间戳
json
{
	"cmd": "OPEN_LIVEROOM_WARNING",
	"data": {
		"msg": "禁止挂机直播",
		"msg_id": "7574114c-6e60-43bc-a6aa-4be8733e1ee7",
		"room_id": 9617619,
		"timestamp": 1734675337
	}
}

消息推送结束通知#

  • 当对应长连由于任何原因停止推送时触发

<font color=Red>当收到该cmd消息后则代表对应的conn_id已失效,不会再收到消息推送。失效的原因一般是由于心跳过期或者主动调用END,具体错误请开发者监听API和心跳返回信息。</font>

CMD:OPEN_LIVEROOM_INTERACTION_END

字段名类型描述
conn_idstring结束消息推送的conn_id
timestampint64发生的时间戳
json
{
    "cmd": "OPEN_LIVEROOM_INTERACTION_END",
    "data": {
        "conn_id": "f0423922-60e9-4f8c-b5f3-6ad2cb888a22",
        "timestamp": 1714113037
    }
}

原始文档:047_长连CMD说明.md(21120 字节)。用 bili_docs_get { "ref": "47" } 读全文,用 bili_docs_search { "query": "…" } 检索。