星河避难所

返回

Bilibili直播信息流:连接方法与数据解析Blur image

如今,市面上已经有不少开源项目可以用于连接 B 站直播 WebSocket 获取信息流。

但在实际使用中,常常发现它们并不能完全满足个性化需求。

为了更好地适配自己的业务场景,我决定自己动手实现一套连接方案。

因此,我整理了整个实现过程的一些关键步骤和注意事项,希望能够对有相似需求的朋友们有所帮助

接入前准备#

获取直播间真实 ID#

网页版 直播间 URL 携带的房间号可能是短号,并不保证一定为真实地址,因此建议调用该接口以确保房间号无误


请求方式:GET

请求地址:https://api.live.bilibili.com/room/v1/Room/get_info

参数名类型内容
room_idint直播间 ID

请求响应示例与字段说明

展开查看
curl -G 'https://api.live.bilibili.com/room/v1/Room/get_info' \
--data-urlencode 'room_id=27668995'
bash

获取信息流认证秘钥#

该接口可以获取到对应直播间信息流的链接地址,以及建立链接需要认证的 token 信息

注意: B 站更新了隐私政策, 连接建立 5 分钟左右, 若该连接认证时传入信息来自未登录用户, 会提示 为保护用户隐私,未注册登陆用户将无法查看他人昵称, 随后所有发送弹幕的用户 id 都为 0, 用户名部分也使用 * 保护,因此调用本接口时需要传递 ** cookie **

注意: wswss 连接地址带有路径 /sub, 如 wss://tx-sh-live-comet-08.chat.bilibili.com:443/sub


请求方式:GET

请求地址:https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo

参数名类型内容
idint直播间真实 id

请求响应示例与字段说明

展开查看
curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \
--data-urlencode 'id=30118851'
bash

信息流接入#

数据包为 MQ(Message Queue,消息队列)使用 Websocket 或 TCP 连接作为通道,具体格式为 弹幕协议 + 正文数据

操作流程:

连接信息流服务器节点 -> 发送认证包 -> 接收认证包回应 -> 接收普通包&(每 30 秒发送心跳包 -> 接收心跳回应)

协议格式:基于websocket之上的应用层协议,所有字段 大端 对齐

  • Packet Length:整个 Packet 的长度,包含 Header
  • Header Length:Header 的长度,固定为 16
  • Version:协议版本
  • Operation:操作码
  • Sequence ID:保留字段,可以忽略
  • Body:消息体,客户端解析 Body 之前请先解析 Version 字段

Version 说明: 0 - 普通包正文不使用压缩 1 - 心跳及认证包正文不使用压缩 2 - 普通包(zlib 压缩) 3 - 普通包(brotli 压缩)

Operation 说明: 2 - 客户端发送的心跳包(30 秒发送一次) 3 - 服务器收到心跳包的回复 5 - 服务器推送的弹幕消息包 7 - 客户端发送的鉴权包(客户端发送的第一个包) 8 - 服务器收到鉴权包后的回复

注意:B 站最近加强了风控,建议在建立连接时携带好用户的cookie以避免风控限流

认证包构建#

注意: 认证包需要在握手成功 5 秒内发送, 否则强制断开连接

认证包头部信息基于上述协议格式不再赘述,仅说明 Body 如何构建

字段类型说明
uidint用户 uid
roomidint主播房间 id
protoverint协议版本,决定了后续数据包的 Version
buvidstring用户buvid3,可在cookie中获得
platformstring平台,传web即可
typeint不确定用途,目前 B 站网页版传 2,照着传即可
keystring获取信息流认证秘钥接口提供的token

protover 说明: 2 - 后续正文以 zlib 方式返回 3 - 后续正文以 brotli 方式返回

示例:

命令列表#

  • SEND_GIFT:赠送礼物
  • DANMU_MSG:弹幕信息
  • GUARD_BUY:开通舰长
  • GUARD_LOTTERY_START:千舰推送
  • USER_TOAST_MSG:上舰抽奖消息推送
  • SUPER_CHAT_MESSAGE:醒目留言
  • ENTRY_EFFECT:舰长进入直播间(进入直播间特效)
  • INTERACT_WORD:直播间互动
  • PK_BATTLE_PRE_NEW:PK 即将开始

命令说明#

赠送礼物:SEND_GIFT#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.actionstring行为,一般都是投喂
data.bag_giftarray从背包中赠送礼物时会出现
data.bag_gift.price_for_showint礼品单价(电池)
data.bag_gift.show_priceint赠送数量
data.batch_combo_idstring连击 ID
data.batch_combo_sendarray连击信息
data.batch_combo_send.actionstring行为,一般都是投喂
data.batch_combo_send.batch_combo_idstring连击 ID
data.batch_combo_send.batch_combo_numint当前连击数
data.batch_combo_send.blind_giftarray相关礼物信息
data.batch_combo_send.blind_gift.blind_gift_config_idint赠送盲盒时存在数据,疑似是盲盒的配置
data.batch_combo_send.blind_gift.fromint不确定用途,观测到 blind_gift_config_id 存在时为 0,其余情况无数据
data.batch_combo_send.blind_gift.gift_actionstring赠送盲盒时为爆出,其余无数据
data.batch_combo_send.blind_gift.gift_tip_priceint赠送盲盒时为爆出的礼物价格,其余无数据
data.batch_combo_send.blind_gift.original_gift_idint赠送盲盒时为盲盒的 gift_id,其余无数据
data.batch_combo_send.blind_gift.original_gift_namestring赠送盲盒时为盲盒的名称,其余无数据
data.batch_combo_send.blind_gift.original_gift_priceint赠送盲盒时为盲盒的价格,其余无数据
data.batch_combo_send.gift_idint礼物 id,如果是盲盒则为盲盒爆出的礼物 id
data.batch_combo_send.gift_namestring礼物名称,如果是盲盒则为盲盒爆出的礼物名称
data.batch_combo_send.gift_numint赠送数量
data.batch_combo_send.send_masterstring不清楚用途
data.batch_combo_send.uidstring赠送人 uid
data.batch_combo_send.unamestring赠送人名称
data.beatIdint暂不确定用途,观测到多是空或者 0
data.biz_sourcestring暂不确定用途,观测到多是 Livelive
data.blind_giftarray相关礼物信息
data.blind_gift.blind_gift_config_idint赠送盲盒时存在数据,疑似是盲盒的配置
data.blind_gift.fromint不确定用途,观测到 blind_gift_config_id 存在时为 0,其余情况无数据
data.blind_gift.gift_actionstring赠送盲盒时为爆出,其余无数据
data.blind_gift.gift_tip_priceint赠送盲盒时为爆出的礼物价格,其余无数据
data.blind_gift.original_gift_idint赠送盲盒时为盲盒的 gift_id
data.blind_gift.original_gift_namestring赠送盲盒时为盲盒的名称,其余无数据
data.blind_gift.original_gift_priceint赠送盲盒时为盲盒的价格,其余无数据
data.broadcast_idint广播 ID,疑似赠送大礼物触发广播时与其绑定
data.coin_typestring硬币类型,目前观测到非付费礼物为silver,付费礼物为gold
data.combo_resources_idint待观测,通常是 0 或 1
data.combo_sendarray连击信息
data.combo_send.actionstring行为,一般都是投喂
data.combo_send.combo_idstring连击 ID
data.combo_send.combo_numint当前连击数
data.combo_send.gift_idint礼物 id (盲盒为实际爆出礼物)
data.combo_send.gift_namestring礼物名称(盲盒为实际爆出礼物)
data.combo_send.gift_numint数量
data.combo_send.send_masterstring未观测到有效数据
data.combo_send.uidint赠送人 uid
data.combo_send.unamestring赠送人名称
data.combo_stay_timeint连击有效间隔时间
data.combo_total_coinint连击总费用
data.crit_probint待观测,全是 0
data.demarcationint待观测,数据一般是 1,2,3,应该是分类,看起来数字越大越贵
data.discount_priceint折扣价格,比如不要钱的粉丝团灯牌
data.dmscoreint某种评分?待观测
data.drawint待观测
data.effectint待观测
data.effect_blockint待观测
data.facestring用户头像 URL
data.face_effect_idint待观测
data.face_effect_typeint待观测
data.face_effect_v2array待观测
data.face_effect_v2.idint待观测
data.face_effect_v2.typeint待观测
data.float_sc_resource_idint待观测
data.giftIdint礼物 ID
data.giftNamestring礼物名称
data.giftTypeint礼物类型,枚举,目前发现值 5 疑似免费礼物或背包礼物,其他含义待观测
data.gift_infoarray礼物详细信息
data.gift_info.effect_idint某种 ID,目前看好像只有盲盒礼物有,其余为 0
data.gift_info.gifstring礼物 GIF 图
data.gift_info.has_imaged_giftint某种枚举,effect_id 非 0 时为 1,其余为 0
data.gift_info.img_basicstring礼物 PNG 图
data.gift_info.webpstring礼物 webp 图
data.gift_tagarray礼物标签?
data.gift_tag.0int标签相关,待观测
data.goldint待观测
data.group_medalint套票相关?不确定,待观测
data.guard_levelint牌子的大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.is_firstbool待观测,应该是标记本场直播是否是第一次赠送
data.is_join_receiverbool待观测
data.is_namingbool待观测
data.is_special_batchint待观测
data.magnificationint待观测
data.medal_infoarray牌子信息
data.medal_info.anchor_roomidint房间号,目前疑似并未使用
data.medal_info.anchor_unamestring主播名称,目前疑似并未使用
data.medal_info.guard_levelint牌子的大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.medal_info.icon_idint应该是某 ID 相关,待观测,目前全是 0
data.medal_info.is_lightedint牌子是否点亮 ,1=是,0=否
data.medal_info.medal_colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_levelint牌子等级
data.medal_info.medal_namestring牌子名称
data.medal_info.special-估计是用来区分特殊牌子的,待观测
data.medal_info.target_idint牌子所属主播 uid
data.name_colorstring用户名颜色
data.numint赠送数量
data.original_gift_namestring待观测
data.priceint礼物价格
data.rcostint待观测
data.receive_user_infoarray收礼人信息(主播)
data.receive_user_info.uidint主播 uid
data.receive_user_info.unamestring主播名称
data.receiver_uinfoarray收礼人信息(主播)(估计是新版本)
data.receiver_uinfo.basearray收礼人(主播)基本信息
data.receiver_uinfo.base.facestring头像
data.receiver_uinfo.base.is_mysterybool不确定含义,待观测
data.receiver_uinfo.base.namestring名称
data.receiver_uinfo.base.name_colorint待观测,估计是名字颜色十进制数字
data.receiver_uinfo.base.name_color_strstring待观测,估计是名字颜色十六进制代码
data.receiver_uinfo.base.official_infoarray待观测,估计是官方相关
data.receiver_uinfo.base.official_info.descstring?说明?
data.receiver_uinfo.base.official_info.roleint?角色?
data.receiver_uinfo.base.official_info.titlestring?官方 title?
data.receiver_uinfo.base.official_info.typeint?类型
data.receiver_uinfo.base.origin_infoarray待观测,目前看到的都是主播个人信息
data.receiver_uinfo.base.origin_info.facestring头像
data.receiver_uinfo.base.origin_info.namestring名称
data.receiver_uinfo.base.risk_ctrl_infoarray待观测,目前看到的都是主播个人信息
data.receiver_uinfo.base.risk_ctrl_info.facestring头像
data.receiver_uinfo.base.risk_ctrl_info.namestring名称
data.receiver_uinfo.guard-待观测,当前未观测到数据
data.receiver_uinfo.guard_leader-待观测,当前未观测到数据
data.receiver_uinfo.medal-待观测,当前未观测到数据
data.receiver_uinfo.title-待观测,当前未观测到数据
data.receiver_uinfo.uhead_frame-待观测,当前未观测到数据
data.receiver_uinfo.uidintuid
data.receiver_uinfo.wealth-待观测,当前未观测到数据
data.remainint待观测
data.rndstring待观测
data.send_masterstring待观测
data.sender_uinfoarray送礼人信息
data.sender_uinfo.basearray送礼人(用户)基本信息
data.sender_uinfo.base.facestring头像
data.sender_uinfo.base.is_mysterybool不确定含义,待观测
data.sender_uinfo.base.namestring名称
data.sender_uinfo.base.name_colorint待观测,估计是名字颜色十进制数字
data.sender_uinfo.base.name_color_strstring待观测,估计是名字颜色十六进制代码
data.sender_uinfo.base.official_infoarray待观测,估计是官方相关
data.sender_uinfo.base.official_info.descstring?说明?
data.sender_uinfo.base.official_info.roleint?角色?
data.sender_uinfo.base.official_info.titlestring?官方 title?
data.sender_uinfo.base.official_info.typeint?类型
data.sender_uinfo.base.origin_infoarray待观测,目前看到的都是送礼人个人信息
data.sender_uinfo.base.origin_info.facestring头像
data.sender_uinfo.base.origin_info.namestring名称
data.sender_uinfo.base.risk_ctrl_infoarray待观测,目前看到的都是送礼人个人信息
data.sender_uinfo.base.risk_ctrl_info.facestring头像
data.sender_uinfo.base.risk_ctrl_info.namestring名称
data.sender_uinfo.guard-待观测,目前未观察到数据
data.sender_uinfo.guard_leader-待观测,目前未观察到数据
data.sender_uinfo.medalarray牌子信息
data.sender_uinfo.medal.colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
data.sender_uinfo.medal.color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.sender_uinfo.medal.color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.sender_uinfo.medal.color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.sender_uinfo.medal.guard_iconstring大航海图标
data.sender_uinfo.medal.guard_levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.sender_uinfo.medal.honor_icon-待观测,目前无数据
data.sender_uinfo.medal.idint待观测,目前都是 0
data.sender_uinfo.medal.is_lightint牌子是否点亮 ,1=是,0=否
data.sender_uinfo.medal.levelint牌子等级
data.sender_uinfo.medal.namestring牌子名称
data.sender_uinfo.medal.ruidint牌子所属主播 uid
data.sender_uinfo.medal.scoreint某种评分?待观测
data.sender_uinfo.medal.typint待观测,目前都是 0
data.sender_uinfo.medal.user_receive_countint待观测,目前都是 0
data.sender_uinfo.medal.v2_medal_color_borderstringv2 版本牌子边框颜色
data.sender_uinfo.medal.v2_medal_color_endstringv2 版本牌子右侧颜色(渐变)
data.sender_uinfo.medal.v2_medal_color_levelintv2 版本牌子等级颜色
data.sender_uinfo.medal.v2_medal_color_startstringv2 版本牌子左侧颜色(渐变)
data.sender_uinfo.medal.v2_medal_color_textstringv2 版本牌子内容颜色
data.sender_uinfo.title-待观测,目前无数据
data.sender_uinfo.uhead_frame-待观测,目前无数据
data.sender_uinfo.uidintuid
data.sender_uinfo.wealthint待观测,目前都是 0
data.silverint待观测,目前都是 0
data.superint待观测,目前都是 0
data.super_batch_gift_numint待观测,与赠送数量相关
data.super_gift_numint待观测,与赠送数量相关
data.svga_blockint待观测,目前都是 0
data.switchbool待观测,目前都是 TRUE
data.tag_image-待观测,目前无数据
data.tidstring待观测
data.timestampint礼物赠送时间(秒级时间戳)
data.top_list-待观测,目前无数据
data.total_coinint礼物总价,连击时累加
data.uidint赠送人 uid
data.unamestring赠送人名称
data.wealth_levelint荣耀等级
msg_idstring待观测,感觉跟消息绑定了
p_is_ackbool无数据或者 TRUE,仍需观测
p_msg_typeint无数据或者 1,仍需观测
send_timeint毫秒级时间戳,有时会没数据,待观测
点击查看数据示例

弹幕信息:DANMU_MSG#

点击查看字段说明
字段字段类型字段说明
cmdstring命令
dm_v2-待观察
infoarray数据信息
info.0array弹幕信息
info.0.0int待观测,目前全是 0
info.0.1int弹幕的 mode 字段
info.0.2int弹幕的 fontsize 字段
info.0.3int弹幕颜色(十进制数据,需要自己转十六进制颜色代码)
info.0.4int发送时的 UNIX 毫秒时间戳
info.0.5int待观测
info.0.6int待观测,目前全是 0
info.0.7string一个十六进制数,待观测,可能是颜色
info.0.8int待观测,目前全是 0
info.0.9int待观测,目前全是 0
info.0.10int待观测,疑似某种类型
info.0.11string待观测,通常为空字符串,info.0.10 == 5 返回一组十六进制颜色代码
info.0.12int消息中是否携带表情,1=是,0=否
info.0.13string 或 array表情信息,info.0.12 == 1 时为 array,其余时候为字符串
info.0.13.bulge_displayint某种枚举,待观测
info.0.13.emoticon_uniquestring表情符号,类似表情 ID 性质
info.0.13.heightint表情高度
info.0.13.in_player_areaint某种枚举,待观测
info.0.13.is_dynamicint是否是动态表情,0=否,1=是
info.0.13.urlstring表情 URL 图片地址
info.0.13.widthint表情宽度
info.0.14string字符串表示的 JSON Object,目前未观测到数据
info.0.15array弹幕补充信息,大部分数据都可以在里面获取
info.0.15.extrastring补充信息,json 字符串,需要自行转换为对象
info.0.15.extra.send_from_mebool是否是自己发送
info.0.15.extra.modeint弹幕模式 (等同于 info[0][1])
info.0.15.extra.colorint弹幕颜色 (等同于 info[0][3])
info.0.15.extra.dm_typeint某种枚举,待观测
info.0.15.extra.font_sizeint字体大小(等同于 info[0][2])
info.0.15.extra.player_modeint某种枚举,待观测
info.0.15.extra.show_player_typeint某种枚举,待观测
info.0.15.extra.contentstring弹幕文本信息(等同于 info[1])
info.0.15.extra.user_hashstring待观测
info.0.15.extra.emoticon_uniquestring待观测
info.0.15.extra.bulge_displayint待观测
info.0.15.extra.recommend_scoreint待观测
info.0.15.extra.main_state_dm_colorstring待观测
info.0.15.extra.objective_state_dm_colorstring待观测
info.0.15.extra.directionint待观测
info.0.15.extra.pk_directionint待观测
info.0.15.extra.quartet_directionint待观测
info.0.15.extra.anniversary_crowdint待观测
info.0.15.extra.yeah_space_typestring待观测
info.0.15.extra.yeah_space_urlstring待观测
info.0.15.extra.jump_to_urlstring待观测
info.0.15.extra.space_typestring待观测
info.0.15.extra.space_urlstring待观测
info.0.15.extra.animationarray待观测,目前未观测到数据
info.0.15.extra.emotsarray文本中使用过的表情信息,对象类型,key 为表情,例如:[藏狐]
info.0.15.extra.emots.[藏狐].countint文本中出现的数量
info.0.15.extra.emots.[藏狐].descriptstring描述
info.0.15.extra.emots.[藏狐].emojistring描述
info.0.15.extra.emots.[藏狐].emoticon_idint待观测
info.0.15.extra.emots.[藏狐].emojistring待观测
info.0.15.extra.emots.[藏狐].heightint图片高度
info.0.15.extra.emots.[藏狐].urlstring图片 url
info.0.15.extra.emots.[藏狐].widthint图片宽度
info.0.15.extra.is_auditedbool待观测
info.0.15.extra.id_strstring待观测
info.0.15.extra.icon-待观测
info.0.15.extra.show_replybool是否允许回复
info.0.15.extra.reply_midint回复消息发送人 uid
info.0.15.extra.reply_unamestring回复消息发送人名称
info.0.15.extra.reply_uname_colorstring回复消息发送人名字颜色
info.0.15.extra.reply_is_mysterybool待观测
info.0.15.extra.reply_type_enumint待观测,某种枚举
info.0.15.extra.hit_comboint待观测,疑似是一些重内容连续发送的连击数
info.0.15.extra.esports_jump_urlstring待观测
info.0.15.modeint某种枚举,待观测
info.0.15.show_player_typeint某种枚举,待观测
info.0.15.userarray弹幕发送人信息
info.0.15.user.basearray发送人基本信息
info.0.15.user.base.facestring头像
info.0.15.user.base.is_mysterybool不确定含义,待观测
info.0.15.user.base.namestring名称
info.0.15.user.base.name_colorint待观测,估计是名字颜色十进制数字
info.0.15.user.base.name_color_strstring待观测,估计是名字颜色十六进制代码
info.0.15.user.base.official_infoarray待观测,估计是官方相关
info.0.15.user.base.official_info.descstring?说明?
info.0.15.user.base.official_info.roleint?角色?
info.0.15.user.base.official_info.titlestring?官方 title?
info.0.15.user.base.official_info.typeint?类型
info.0.15.user.base.origin_infoarray待观测,目前看到的都是发送人个人信息
info.0.15.user.base.origin_info.facestring头像
info.0.15.user.base.origin_info.namestring名称
info.0.15.user.base.risk_ctrl_infoarray待观测,目前看到的都是发送人个人信息
info.0.15.user.base.risk_ctrl_info.facestring头像
info.0.15.user.base.risk_ctrl_info.namestring名称
info.0.15.user.guard-待观测,怀疑可能跟超管有关
info.0.15.user.guard_leaderarray待观测,怀疑可能跟超管有关
info.0.15.user.guard_leader.is_guard_leaderbool待观测,怀疑可能跟超管有关
info.0.15.user.medalarray牌子信息
info.0.15.user.medal.colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
info.0.15.user.medal.color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
info.0.15.user.medal.color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
info.0.15.user.medal.color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
info.0.15.user.medal.guard_iconstring大航海图标
info.0.15.user.medal.guard_levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
info.0.15.user.medal.honor_icon-待观测,目前无数据
info.0.15.user.medal.idint待观测,目前都是 0
info.0.15.user.medal.is_lightint牌子是否点亮 ,1=是,0=否
info.0.15.user.medal.levelint牌子等级
info.0.15.user.medal.namestring牌子名称
info.0.15.user.medal.ruidint牌子所属主播 uid
info.0.15.user.medal.scoreint某种评分?待观测
info.0.15.user.medal.typint待观测,目前都是 0
info.0.15.user.medal.user_receive_countint待观测,目前都是 0
info.0.15.user.medal.v2_medal_color_borderstringv2 版本牌子边框颜色
info.0.15.user.medal.v2_medal_color_endstringv2 版本牌子右侧颜色(渐变)
info.0.15.user.medal.v2_medal_color_levelintv2 版本牌子等级颜色
info.0.15.user.medal.v2_medal_color_startstringv2 版本牌子左侧颜色(渐变)
info.0.15.user.medal.v2_medal_color_textstringv2 版本牌子内容颜色
info.0.15.user.titlearray待观测
info.0.15.user.title.title_css_idstring待观测
info.0.15.user.title.old_title_css_idstring待观测
info.0.15.user.uhead_frame-待观测,目前无数据
info.0.15.user.uidintuid
info.0.15.user.wealthint待观测,目前都是 0
info.0.16array疑似活动信息,待观测
info.0.16.activity_identitystring待观测
info.0.16.activity_sourceint待观测
info.0.16.not_showint待观测
info.0.17int待观测
info.1string弹幕信息
info.2array用户信息
info.2.0int用户 uid
info.2.1string用户名称
info.2.2int待观测
info.2.3int待观测
info.2.4int待观测
info.2.5int待观测
info.2.6int待观测
info.2.7string待观测,某种颜色信息,有时为空
info.3array牌子信息
info.3.0int牌子等级
info.3.1string牌子名称
info.3.2string牌子所属主播名称
info.3.3int牌子所属直播间房间号
info.3.4int牌子颜色(十进制数据,需要自己转十六进制颜色代码)
info.3.5string待观测,一直是空
info.3.6int待观测,一直是 0
info.3.7int牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
info.3.8int牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
info.3.9int牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
info.3.10int大航海类型,0=普通用户,1=总督,2=提督,3=舰长
info.3.11int牌子是否点亮 ,1=是,0=否
info.3.12int牌子所属主播 uid
info.4array疑似什么等级信息
info.4.0int疑似什么等级
info.4.0int待观测,目前都是 0
info.4.0int颜色(十进制数据,需要自己转十六进制颜色代码)
info.4.0string待观测,疑似当前什么等级经验值
info.4.0int待观测,某种枚举
info.5array待观测
info.5.0string待观测,大部分为空串,少部分存在数据,不确定用途
info.5.1string待观测,大部分为空串,少部分存在数据,不确定用途
info.6int待观测,一直都是 0
info.7int疑似大航海类型
info.8-待观测,一直都是空
info.9array发送时间戳
info.9.ctstring待观测,某十六进制数据
info.9.tsint秒级时间戳,应该是发送时间
info.10int待观测,一直都是 0
info.11int待观测,一直都是 0
info.12-待观测,一直都是空
info.13-待观测,一直都是空
info.14int待观测,一直都是 0
info.15int待观测
info.16array待观测,疑似某种等级信息
info.16.0int待观测,疑似某种等级信息
点击查看数据示例

开通大航海:GUARD_BUY#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.uidint用户 uid
data.usernamestring用户名
data.guard_levelint开通类型,1=总督,2=提督,3=舰长
data.numint开通数量
data.priceint价值(电池*100)
data.gift_idint礼物 ID
data.gift_nameint礼物名称
data.start_timeint上舰时间
data.end_timeint上舰时间
点击查看数据示例
{
  "cmd": "GUARD_BUY", // 固定命令
  "data": {
    // 数据信息
    "uid": 24967532, // 用户uid
    "username": "骸骸家的三哥哥", // 用户名
    "guard_level": 3, // 开通类型,1=总督,2=提督,3=舰长
    "num": 1, // 开通数量
    "price": 198000, // 价值(电池*100)
    "gift_id": 10003, // 礼物ID
    "gift_name": "舰长", // 礼物名称
    "start_time": 1730438935, // 上舰时间
    "end_time": 1730438935 // 上舰时间
  }
}
json

千舰推送:GUARD_LOTTERY_START#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.addarray新增千舰主播 uid 数组
data.delarray退出千舰主播 uid 数组
点击查看数据示例

上舰抽奖消息推送:USER_TOAST_MSG#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.anchor_showbool待观测,疑似是否在直播间展示,通常为 true
data.colorstring某种颜色值
data.dmscoreint待观测
data.effect_idint待观测
data.end_timeint结束时间(秒级时间戳),与开始时间相同
data.face_effect_idint待观测
data.gift_idint礼物 ID
data.group_nameint待观测
data.group_op_typeint待观测
data.group_role_nameint待观测
data.guard_levelint开通大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.is_groupint待观测
data.is_showint待观测
data.numint开通数量
data.op_typeint待观测
data.payflow_idstring待观测
data.priceint大航海价格(电池*100)
data.role_namestring身份名称
data.room_effect_idint待观测
data.room_gift_effect_idint待观测
data.room_group_effect_idint待观测
data.sourceint待观测
data.start_timeint开始时间(秒级时间戳),与开始时间相同
data.svga_blockint待观测
data.target_guard_countint待观测
data.toast_msgstring在直播间中发送的文字内容
data.uidint开通用户 uid
data.unitstring开通单位
data.user_showbool跟显示相关?待观测
data.usernamestring开通用户名称
点击查看数据示例

醒目留言:SUPER_CHAT_MESSAGE#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.background_bottom_colorstring底部正文区域背景色
data.background_colorstring底部正文文字颜色
data.background_color_endstring牌子右侧颜色(渐变)
data.background_color_startstring牌子左侧颜色(渐变)
data.background_iconstring?背景图标?
data.background_imagestring?背景图片?
data.background_price_colorstring?价格背景颜色?
data.color_pointint待观测
data.dmscoreint待观测
data.end_timeint醒目留言结束时间(秒级时间戳)
data.giftarray礼物信息
data.gift.gift_idint礼物 ID
data.gift.gift_namestring礼物名称
data.gift.numint赠送数量
data.group_medalarray待观测,疑似套票
data.group_medal.is_lightedint疑似套票是否点亮,1=是,0=否
data.group_medal.medal_idint疑似套票 id
data.group_medal.namestring疑似套票名称
data.idint疑似醒目留言 ID
data.is_mysterybool待观测
data.is_rankedint待观测
data.is_send_auditint待观测
data.medal_infoarray牌子信息
data.medal_info.anchor_roomidint房间号
data.medal_info.anchor_unamestring主播名称
data.medal_info.guard_levelint牌子的大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.medal_info.icon_idint应该是某 ID 相关,待观测,目前全是 0
data.medal_info.is_lightedint牌子是否点亮 ,1=是,0=否
data.medal_info.medal_colorstring牌子颜色(十六进制颜色代码)
data.medal_info.medal_color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.medal_info.medal_levelint牌子等级
data.medal_info.medal_namestring牌子名称
data.medal_info.special-估计是用来区分特殊牌子的,待观测
data.medal_info.target_idint牌子所属主播 uid
data.messagestring醒目留言内容
data.message_font_colorstring醒目留言颜色
data.message_transstring日语信息
data.priceint单价?电池/10
data.rateint待观测,会不会是用来计算价格的?比如 price * rate = 电池*100
data.start_timeint醒目留言开始时间(秒级时间戳)
data.timeint醒目留言持续时间
data.tokenstring待观测
data.trans_markint待观测
data.tsint醒目留言开始时间(秒级时间戳)
data.uidint发送用户 uid
data.uinfoarray发送用户信息
data.uinfo.basearray收礼人(主播)基本信息
data.uinfo.base.facestring头像
data.uinfo.base.is_mysterybool不确定含义,待观测
data.uinfo.base.namestring名称
data.uinfo.base.name_colorint待观测,估计是名字颜色十进制数字
data.uinfo.base.name_color_strstring待观测,估计是名字颜色十六进制代码
data.uinfo.base.official_infoarray待观测,估计是官方相关
data.uinfo.base.official_info.descstring?说明?
data.uinfo.base.official_info.roleint?角色?
data.uinfo.base.official_info.titlestring?官方 title?
data.uinfo.base.official_info.typeint?类型
data.uinfo.base.origin_infoarray待观测,目前看到的都是主播个人信息
data.uinfo.base.origin_info.facestring头像
data.uinfo.base.origin_info.namestring名称
data.uinfo.base.risk_ctrl_infoarray待观测,目前看到的都是主播个人信息
data.uinfo.base.risk_ctrl_info.facestring头像
data.uinfo.base.risk_ctrl_info.namestring名称
data.uinfo.guardarray大航海应该是,如果不是大航海就是 null
data.uinfo.guard.expired_strstring到期时间?
data.uinfo.guard.levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.uinfo.guard_leader-待观测,当前未观测到数据
data.uinfo.medalarray牌子信息
data.uinfo.medal.colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.guard_iconstring大航海图标
data.uinfo.medal.guard_levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.uinfo.medal.honor_icon-待观测,目前无数据
data.uinfo.medal.idint待观测,目前都是 0
data.uinfo.medal.is_lightint牌子是否点亮 ,1=是,0=否
data.uinfo.medal.levelint牌子等级
data.uinfo.medal.namestring牌子名称
data.uinfo.medal.ruidint牌子所属主播 uid
data.uinfo.medal.scoreint某种评分?待观测
data.uinfo.medal.typint待观测,目前都是 0
data.uinfo.medal.user_receive_countint待观测,目前都是 0
data.uinfo.medal.v2_medal_color_borderstringv2 版本牌子边框颜色
data.uinfo.medal.v2_medal_color_endstringv2 版本牌子右侧颜色(渐变)
data.uinfo.medal.v2_medal_color_levelintv2 版本牌子等级颜色
data.uinfo.medal.v2_medal_color_startstringv2 版本牌子左侧颜色(渐变)
data.uinfo.medal.v2_medal_color_textstringv2 版本牌子内容颜色
data.uinfo.titlearray待观测,当前未观测到数据
data.uinfo.title.old_title_css_idstring待观测,当前未观测到数据
data.uinfo.title.title_css_idstring待观测,当前未观测到数据
data.uinfo.uhead_frame-待观测,当前未观测到数据
data.uinfo.uidintuid
data.uinfo.wealth-待观测,当前未观测到数据
data.user_infoarray也是用户信息
data.user_info.facestring用户头像
data.user_info.face_framestring用户头像框
data.user_info.guard_levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.user_info.is_main_vipint待观测,看起来是是否是某种,1=是,0=否
data.user_info.is_svipint待观测,看起来是是否是某种,1=是,0=否
data.user_info.is_vipint待观测,看起来是是否是某种,1=是,0=否
data.user_info.level_colorstring用户等级颜色
data.user_info.managerint待观测
data.user_info.name_colorstring用户名字颜色
data.user_info.titlestring待观测,当前未观测到数据
data.user_info.unamestring用户名
data.user_info.user_levelint用户等级
点击查看数据示例

舰长进入直播间:ENTRY_EFFECT#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.basemap_urlstring欢迎进入时的背景图
data.businessint待观测,像是区分了欢迎背景图的类型
data.copy_colorstring文字颜色
data.copy_writingstring网页中出现的欢迎文案
data.copy_writing_v2string网页中出现的欢迎文案
data.effect_silent_timeint待观测
data.effective_timeint有效时间,单位应该是秒
data.effective_time_newint待观测
data.facestring用户头像
data.full_cartoon_idint待观测
data.highlight_colorstring文字突出颜色
data.icon_listarray待观测
data.icon_list.0-待观测
data.idintid
data.identitiesint待观测
data.is_mysterybool待观测
data.max_delay_timeint疑似最长停留时间?
data.mobile_dynamic_url_webpint待观测
data.mock_effectint待观测
data.new_styleint待观测
data.priorityint优先级,应该是数字越大越靠前
data.priority_levelxxxxxxxxxx
data.privilege_typeint特权类型,0=普通用户,1=总督,2=提督,3=舰长
data.show_avatarint是否显示头像,0=否,1=是
data.target_idint主播 uid
data.trigger_timeint待观测
data.uidint用户 uid
data.uinfoarray用户信息
data.uinfo.basearray基本信息
data.uinfo.base.facestring头像
data.uinfo.base.is_mysterybool待观测
data.uinfo.base.namestring名称
data.uinfo.base.name_colorint待观测
data.uinfo.base.name_color_strstring名字颜色?
data.uinfo.base.official_info-待观测
data.uinfo.base.origin_info-待观测
data.uinfo.base.risk_ctrl_info-待观测
data.uinfo.guardarray大航海信息
data.uinfo.guard.expired_strstring到期日期
data.uinfo.guard.levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.uinfo.guard_leader-待观测
data.uinfo.medalarray牌子信息
data.uinfo.medal.colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.guard_iconstring大航海图标 URL
data.uinfo.medal.guard_levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.uinfo.medal.honor_iconstring待观测,目前无数据
data.uinfo.medal.idint待观测
data.uinfo.medal.is_lightint牌子是否点亮 ,1=是,0=否
data.uinfo.medal.levelint牌子等级
data.uinfo.medal.nameint牌子名称
data.uinfo.medal.ruidint主播 uid
data.uinfo.medal.scoreint某种评分?待观测
data.uinfo.medal.typint待观测,目前都是 0
data.uinfo.medal.user_receive_countint待观测,目前都是 0
data.uinfo.medal.v2_medal_color_borderstringv2 版本牌子边框颜色
data.uinfo.medal.v2_medal_color_endstringv2 版本牌子右侧颜色(渐变)
data.uinfo.medal.v2_medal_color_levelstringv2 版本牌子等级颜色
data.uinfo.medal.v2_medal_color_startstringv2 版本牌子左侧颜色(渐变)
data.uinfo.medal.v2_medal_color_textstringv2 版本牌子内容颜色
data.uinfo.title-待观测
data.uinfo.uhead_framearray待观测
data.uinfo.uhead_frame.frame_imgstring待观测
data.uinfo.uhead_frame.idint待观测
data.uinfo.uidint用户 uid
data.uinfo.wealtharray荣耀等级
data.uinfo.wealth.dm_icon_keyint荣耀等级
data.uinfo.wealth.levelstring待观测
data.wealth_style_infoarray荣耀等级图片
data.wealth_style_info.urlstring荣耀等级图片 URL
data.wealthy_infoarray荣耀等级信息
data.wealthy_info.cur_scoreint待观测
data.wealthy_info.dm_icon_keyint待观测
data.wealthy_info.levelint荣耀等级
data.wealthy_info.level_total_scoreint待观测
data.wealthy_info.statusint待观测
data.wealthy_info.uidint待观测
data.wealthy_info.upgrade_need_scoreint待观测
data.web_basemap_urlstringweb 版欢迎进入时的背景图
data.web_close_timeint待观测
data.web_dynamic_url_apngint待观测
data.web_dynamic_url_webpint待观测
data.web_effect_closeint待观测
data.web_effective_timeintweb 版有效时间,单位应该是秒
点击查看数据示例

直播间互动:INTERACT_WORD#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.contributionarray?贡献?
data.contribution.gradeint待观测,看起来都是 0
data.contribution_v2array?贡献 V2 版本?
data.contribution_v2.gradeint待观测,看起来都是 0
data.contribution_v2.rank_typestring待观测,看起来都是空字符串
data.contribution_v2.textstring待观测,看起来都是空字符串
data.core_user_typeint某种用户类型,等待观测
data.dmscoreint待观测
data.fans_medalarray牌子信息
data.fans_medal.anchor_roomidint牌子主播房间号
data.fans_medal.guard_levelint大航海类型
data.fans_medal.icon_idint待观测,某种 ID
data.fans_medal.is_lightedint是否点亮,1=是,0=否
data.fans_medal.medal_colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
data.fans_medal.medal_color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.fans_medal.medal_color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.fans_medal.medal_color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.fans_medal.medal_levelint牌子等级
data.fans_medal.medal_namestring牌子名称
data.fans_medal.scoreint待观测,某种分数
data.fans_medal.specialstring待观测
data.fans_medal.target_idint牌子主播 id
data.group_medalarray套票信息
data.group_medal.is_lightedint是否点亮
data.group_medal.medal_idint套票 id
data.group_medal.namestring套票名称
data.identitiesarray待观测,?某种身份?
data.is_mysterybool待观测,疑似是否是未登陆用户
data.is_spreadint是否是推广用户,1=是,0=否
data.msg_typeint消息类型,1=进入直播间,2=关注,3=分享直播间
data.privilege_typeint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.relation_tailarray尾部说明
data.relation_tail.tail_guide_textstring指导文本
data.relation_tail.tail_iconstring指导图标
data.relation_tail.tail_typeint内容类型
data.roomidint直播间房间号
data.scoreint待观测
data.spread_descstring推广来源
data.spread_infostring展示推广来源文字颜色
data.tail_iconint待观测
data.tail_textstring待观测
data.timestampint互动时间(秒级时间戳)
data.trigger_timeint待观测
data.uidint用户 uid
data.uinfoarray用户信息
data.uinfo.basearray基本信息
data.uinfo.base.facestring用户头像
data.uinfo.base.is_mysterybool待观测,疑似是否是未登陆用户
data.uinfo.base.namestring名称
data.uinfo.base.name_colorint名字颜色十进制数字
data.uinfo.base.name_color_strstring名字颜色十六进制代码
data.uinfo.base.official_infoarray待观测,估计是官方相关
data.uinfo.base.official_info.descstring?说明?
data.uinfo.base.official_info.roleint?角色?
data.uinfo.base.official_info.titlestring?官方 title?
data.uinfo.base.official_info.typeint?类型?
data.uinfo.base.origin_infoarray待观测,目前看到的都是用户个人信息
data.uinfo.base.origin_info.facestring头像
data.uinfo.base.origin_info.namestring名称
data.uinfo.base.risk_ctrl_infoarray待观测,目前看到的都是用户个人信息
data.uinfo.base.risk_ctrl_info.facestring头像
data.uinfo.base.risk_ctrl_info.namestring名称
data.uinfo.guardarray大航海信息
data.uinfo.guard.expired_strstring到期日期
data.uinfo.guard.levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.uinfo.guard_leader-待观测
data.uinfo.medalarray牌子信息
data.uinfo.medal.colorint牌子颜色(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_borderint牌子边框颜色(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_endint牌子右侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.color_startint牌子左侧颜色(渐变)(十进制数据,需要自己转十六进制颜色代码)
data.uinfo.medal.guard_iconstring大航海图标
data.uinfo.medal.guard_levelint大航海类型,0=普通用户,1=总督,2=提督,3=舰长
data.uinfo.medal.honor_iconstring待观测,目前无数据
data.uinfo.medal.idint待观测,目前都是 0
data.uinfo.medal.is_lightint牌子是否点亮,1=是,0=否
data.uinfo.medal.levelint牌子等级
data.uinfo.medal.namestring牌子名称
data.uinfo.medal.ruidint牌子所属主播 uid
data.uinfo.medal.scoreint某种评分?待观测
data.uinfo.medal.typint待观测,目前都是 0
data.uinfo.medal.user_receive_countint待观测,目前都是 0
data.uinfo.medal.v2_medal_color_borderstringv2 版本牌子边框颜色
data.uinfo.medal.v2_medal_color_endstringv2 版本牌子右侧颜色(渐变)
data.uinfo.medal.v2_medal_color_levelstringv2 版本牌子等级颜色
data.uinfo.medal.v2_medal_color_startstringv2 版本牌子左侧颜色(渐变)
data.uinfo.medal.v2_medal_color_textstringv2 版本牌子内容颜色
data.uinfo.title-待观测
data.uinfo.uhead_framearray头像框信息
data.uinfo.uhead_frame.frame_imgstring头像框 URL
data.uinfo.uhead_frame.idint头像框 ID
data.uinfo.uidint用户 uid
data.uinfo.wealtharray待观测
data.uinfo.wealth.dm_icon_keystring待观测
data.uinfo.wealth.levelint待观测
data.unamestring用户名
data.uname_colorstring用户名颜色
点击查看数据示例

PK 即将开始:PK_BATTLE_PRE_NEW#

点击查看字段说明
字段字段类型字段说明
cmdstring固定命令
dataarray数据信息
data.battle_sub_typeint待观测
data.battle_typeintpk 类型
data.end_win_task-待观测
data.facestringpk 对象的头像
data.is_followedint待观测
data.match_typeint待观测
data.pk_votes_namestringpk 得分名称
data.pre_timerint前置定时器(10 秒后开始 pk)
data.room_idintpk 对象的房间号
data.season_idint待观测
data.uidintpk 对象的 uid
data.unamestringpk 对象的名称
pk_idintPKID
pk_statusintpk 状态,代表值待观察
status_msgstringpk 状态文字说明
template_idstring待观测
timestampint时间
点击查看数据示例

有用的命令#

几个比较实用的状态,持续更新中…


赠送礼物#

点击查看应用场景

盲盒亏损#

通过判断 data.blind_gift 的数据来取得,当 data.blind_gift 存在数据时,则可判断礼物是盲盒礼物

  • data.blind_gift.original_gift_price:盲盒的价格(电池*100)
  • data.blind_gift.gift_tip_price:爆出礼物的价格(电池*100)
  • data.blind_gift.original_gift_id:盲盒的 ID
  • data.blind_gift.original_gift_name:盲盒的名称

通过盲盒 ID 或名称分类可以记录没种盲盒的盈亏

更进一步通过 data.uid 字段分类可记录每个用户&每种盲盒的盈亏


感谢礼物#

接收到数据即为有人赠送了礼物

如果有需要,可以通过判断 data.coin_type == gold 或者 data.giftType != 5 来过滤免费礼物

礼物总价可以通过 data.price * data.num 获得

B 站发言有频率限制,建议发送消息的逻辑单做一条队列,每 3 秒执行一条发送

进阶:建议将 感谢礼物事件 封装成队列,每当有需要感谢的礼物出现时加入队列,同一个用户赠送数据合并,当 消息发送队列 无更高优先级任务时取一条进行感谢,可以避免同一用户短时间大量赠送带来的问题

  • data.uid:送礼人 uid
  • data.uname:送礼人名称
  • data.coin_type:礼物是否是免费礼物
  • data.giftId:礼物 ID
  • data.giftName:礼物名称
  • data.price:礼物单价
  • data.num:赠送数量
  • receiver_uinfo.uid:收礼人 uid(主播的 id)
  • sender_uinfo.medal.ruid:用户携带的牌子归属主播的 uid(可以根据 receiver_uinfo.uid == sender_uinfo.medal.ruid 来确认送礼人携带的当前主播的牌子)
  • sender_uinfo.medal.guard_level:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
  • sender_uinfo.medal.level:牌子等级(所携带的牌子,有可能不是主播的,需要自行判断)

理论上可以连击信息来判断在连击结束之后所有的礼物一起感谢,但因工作比较忙还没有时间去观测对应的数据,后续补全


弹幕信息#

点击查看应用场景

自动回复#

通过检查弹幕信息,可以为关键词匹配自动回复

建议留足配置空间,以便拓展,例如:

  • 多关键词配置,命中一个就触发或全部命中才触发
  • 黑名单配置,某些用户的发言不触发自动回复
  • 多禁词配置,与关键词相同,命中一个就不触发自动回复或全部命中就不触发自动回复
  • 多回复项,可以配置多个回复项在触发自动回复时随机触发一条
  • info.1:文本信息
  • info.2.0:发送人 uid
  • info.2.1:发送人用户名
  • info.3.3:牌子所属房间号(可以通过该字段与链接的房间号匹配判断携带的当前主播的牌子)
  • info.3.10:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
  • info.3.0:牌子等级(所携带的牌子,有可能不是主播的,需要自行判断)

弹幕信息事件可以做的事情非常多,类似抽奖一类的与弹幕互动的功能均可实现,拓展性极强

开通舰长#

点击查看应用场景

感谢上舰#

当前开通大航海已经不会触发 SEND_GIFT 事件,需要单独处理


舰长进入直播间#

点击查看应用场景

进房欢迎#

对来到直播间的用户进行欢迎

建议在进房量少时再启用,或根据牌子进行过滤,否则大量进房信息积压会导致机器人欢迎不及时

  • data.uinfo.medal.ruid:用户携带的牌子归属主播的 uid(目前看来可以根据 data.target_id == data.uinfo.medal.ruid 来判断用户携带的是否是主播自己的牌子)
  • data.uinfo.medal.guard_level:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
  • data.uinfo.medal.level:牌子等级(所携带的牌子,有可能不是主播的,需要自行判断)
  • data.uinfo.base.name:用户名
  • data.uinfo.uid:用户 ID

直播间互动#

点击查看应用场景

进房欢迎 & 感谢关注 & 感谢分享#

三个消息都由一个推送进行,通过 data.msg_type 进行区分

建议在进房量少时再启用,或根据牌子进行过滤,否则大量进房信息积压会导致机器人欢迎不及时

  • data.fans_medal.anchor_roomid:牌子主播房间号(目前看来可以根据 data.fans_medal.anchor_roomid == 直播间房间号 来判断用户携带的是否是主播自己的牌子)
  • data.fans_medal.guard_level:大航海类型,0=普通用户,1=总督,2=提督,3=舰长(所携带的牌子,有可能不是主播的,需要自行判断)
  • data.uid:用户 uid
  • data.uname:用户名称
  • data.msg_type:消息类型,1=进入直播间,2=关注,3=分享直播间

PK 即将开始#

点击查看应用场景

PK 播报#

可以在 PK 开始之前(前 10 秒)获取到 PK 方的信息,通过该信息可查询对方直播间的信息并进行播报

  • data.uid:主播 uid
  • data.uname:主播名称
  • data.room_id:直播间房间号

Bilibili直播信息流:连接方法与数据解析
http://www.hejunjie.life/blog/e1ccd148
作者 何俊杰
发布时间 2024年10月29日
版权信息 CC BY-NC-SA 4.0
评论似乎卡住了,尝试刷新?✨