import type { BilibiliInternal, DanmakuReplyProps, FansMedal, SimpleEmotesList } from '@laplace.live/internal' /** * General chat message * * 普通弹幕事件 * * @see BilibiliInternal.WebSocket.Prod.DANMU_MSG for the original version * @see BilibiliInternal.WebSocket.OpenPlatform.LIVE_OPEN_PLATFORM_DM for the Open Platform version */ export interface Message { type: 'message' id: string /** 发送至哪个房间 */ origin: number /** 用于获取 `roomsId` 所在 index */ originIdx: number uid: number username: string avatar: string nameColor: string message: string /** * 用户类型 * * - 0: 正常用户 * - 1: 房管(当前房间) * - 100: 主播 - 该字段为 `LaplaceEvent` 自定义字段,由于官方并没有提供判断当前弹幕 * 是否为主播发送的弹幕的方法,因此需要通过外部 API 来获取用户的 UID(`roomInfo`) * * 2024-03-11 之后开放平台由 open_id 代替 uid,因此无法拿到是否为房管或者主播 */ userType: number /** 老版用户直播等级(UL),开放平台下此值一直为 0 */ userLvl: number userLvlBorder: number /** 本场直播的消费排名 */ currentRank: number /** 开放平台强制认为已认证 */ phoneVerified: number /** * 0: 白字 * 1: 总督 * 2: 提督 * 3: 舰长 */ guardType: number /** * 是否为舰队指挥官 * * @since 本站于 May 25, 2025 开始支持 */ guardLeader?: boolean /** * 弹幕类型,可判断是否是自动弹幕,用于屏蔽自动发送的弹幕(节奏风暴、红包、天选) * * 0: 普通弹幕 * 2: 红包弹幕 */ sendType: number /** 用户当前佩戴的粉丝勋章 */ medal: FansMedal /** 直播间表情 */ emote?: BilibiliInternal.WebSocket.Prod.EmoteProps /** b豆表情包 */ bmotes?: SimpleEmotesList /** * 直播间内回复,无回复时会返回空对象 * * 开放平台 Jan 19, 2025 之后官方开始支持😅 */ reply: Partial /** * 弹幕唯一识别 id,用于举报、弹幕回复 * * TODO: 开放平台中可能等于 `data.data.msg_id`,需调查 */ idStr: string /** 弹幕签名,配合 `idStr` 用于举报弹幕 */ sign?: string /** * 荣耀勋章等级,无等级为 `0` * * 开放平台 Jan 19, 2025 之后官方开始支持😅 */ wealthMedalLevel: number timestamp: number timestampNormalized: number /** * 是否是跨房弹幕,该功能疑似你b拍脑袋想出来的,你直接一个 ws 连接把全站直播事件都拉来算了,还方便看流水😅 * * @since 本站于 Sep 20, 2025 开始支持 */ isMirror?: boolean read: boolean } /** * @deprecated Use `Message` instead */ export type Danmaku = Message