Bilibili 直播间弹幕监听器,支持类型输出。
npm i blive-message-listener
import { startListen, type MsgHandler } from 'blive-message-listener'
// 浏览器环境,从 '/browser' 导入 startListen
// import { startListen } from 'blive-message-listener/browser'
const handler: MsgHandler = {
onIncomeDanmu: (msg) => {
console.log(msg.id, msg.body)
},
onIncomeSuperChat: (msg) => {
console.log(msg.id, msg.body)
},
}
const instance = startListen(652581, handler)
instance.close()
const startListen: (roomId: number, handler: MsgHandler) => MessageListener
export interface MessageListener {
/** 直播间房间号 */
roomId: number
/** 关闭连接 */
close: () => void
/** 刷新当前直播间热度 */
getAttention: () => Promise<number>
}
export interface Message<T> {
/** 消息id */
id: string,
/** 接收消息的时间,毫秒时间戳 */
timestamp: number,
/** 消息类型 */
type: string,
/** 消息内容 */
body: T
}
export interface User {
/** 用户uid */
uid: number
/** 用户名 */
uname: string
/** 用户头像 */
face?: string
/** 用户牌子·*/
badge?: {
/** 是否点亮 */
active: boolean
/** 牌子名称 */
name: string
/** 牌子等级 */
level: number
/** 牌子颜色 */
color: string
/** 主播信息 */
anchor: {
/** 主播uid */
uid: number
/** 主播用户名 */
uname: string
/** 主播房间号 */
room_id: number
/** 是否为本直播间 */
is_same_room?: boolean
}
}
/** 用户身份 */
identity?: {
/** 直播榜单排名 */
rank: 0 | 1 | 2 | 3
/** 大航海信息 */
guard_level: GuardLevel
/** 房管 */
room_admin: boolean
}
}
export enum GuardLevel {
/** 无 */
None = 0,
/** 总督 */
Zongdu = 1,
/** 提督 */
Tidu = 2,
/** 舰长 */
Jianzhang = 3,
}
Type definition can be also found in src/parser.
| Handler | Description |
|---|---|
| onOpen | 连接成功 |
| onClose | 连接关闭 |
| onError | 连接错误 |
| onStartListen | 开始监听消息 |