//! 排行、互动与房间状态相关直播命令的数据模型. use serde::Deserialize; use serde_json::Value; use std::collections::HashMap; /// 高能榜人数变化消息。 #[derive(Debug, Clone, Default, PartialEq)] pub struct OnlineRankCountMessage { /// 服务端原始命令名。 pub cmd: String, /// 高能榜人数。 pub count: Option, /// 高能榜人数显示文本。 pub count_text: Option, /// 在线人数。 pub online_count: Option, /// 在线人数显示文本。 pub online_count_text: Option, /// 未被当前版本建模的字段。 pub extra: HashMap, } /// 看过人数变化消息。 #[derive(Debug, Clone, Default, PartialEq)] pub struct WatchedChangeMessage { /// 服务端原始命令名。 pub cmd: String, /// 看过人数。 pub watched_count: Option, /// 小字号显示文本。 pub text_small: Option, /// 大字号显示文本。 pub text_large: Option, /// 未被当前版本建模的字段。 pub extra: HashMap, } /// 一批下播房间列表消息。 #[derive(Debug, Clone, Default, PartialEq)] pub struct StopLiveRoomListMessage { /// 服务端原始命令名。 pub cmd: String, /// 已下播的房间 ID 列表。 pub room_ids: Vec, /// 未被当前版本建模的字段。 pub extra: HashMap, } /// 礼物星球进度消息。 #[derive(Debug, Clone, Default, PartialEq)] pub struct GiftStarProcessMessage { /// 服务端原始命令名。 pub cmd: String, /// 当前进度名称。 pub name: Option, /// 当前数量。 pub current: Option, /// 目标数量。 pub total: Option, /// 服务端版本号。 pub version: Option, /// 未被当前版本建模的字段。 pub extra: HashMap, } /// 含 protobuf Base64 载荷的推送消息。 #[derive(Debug, Clone, Default, PartialEq)] pub struct ProtobufPayloadMessage { /// 服务端原始命令名。 pub cmd: String, /// Base64 编码的 protobuf 数据。 pub pb_base64: String, /// 弹幕评分。 pub dm_score: Option, /// 未被当前版本建模的顶层或 `data` 字段。 pub extra: HashMap, } /// 大航海购买消息。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct GuardBuyMessage { /// 服务端原始命令名。 pub cmd: String, /// 购买用户 UID。 pub uid: u64, /// 购买用户昵称。 pub username: String, /// 舰队名称。 pub gift_name: String, /// 购买数量。 pub num: u64, /// 舰队等级,通常 1=总督、2=提督、3=舰长。 pub guard_level: u8, /// 未被当前版本建模的顶层字段。 #[serde(default, flatten)] pub extra: HashMap, } /// 醒目留言消息。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct SuperChatMessage { /// 服务端原始命令名。 pub cmd: String, /// 醒目留言的具体数据。 pub data: SuperChatData, /// 未被当前版本建模的顶层字段。 #[serde(default, flatten)] pub extra: HashMap, } /// [`SuperChatMessage`] 的业务数据。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct SuperChatData { /// 发送用户 UID。 pub uid: u64, /// 醒目留言文本。 pub message: String, /// 醒目留言价格。 pub price: u64, /// 未被当前版本建模的字段。 #[serde(default, flatten)] pub extra: HashMap, } /// 用户进入、关注或分享等互动消息。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct InteractWordMessage { /// 服务端原始命令名。 pub cmd: String, /// 互动事件的具体数据。 pub data: InteractWordData, /// 未被当前版本建模的顶层字段。 #[serde(default, flatten)] pub extra: HashMap, } /// [`InteractWordMessage`] 的业务数据。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct InteractWordData { /// 触发互动的用户 UID。 pub uid: u64, /// 触发互动的用户昵称。 pub uname: String, /// 互动类型,通常 1=进入、2=关注、3=分享。 pub msg_type: u8, /// 未被当前版本建模的字段。 #[serde(default, flatten)] pub extra: HashMap, } /// 直播间标题或分区发生变化时的消息。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct RoomChangeMessage { /// 服务端原始命令名。 pub cmd: String, /// 当前直播标题。 #[serde(default)] pub title: Option, /// 当前子分区名称。 #[serde(default)] pub area_name: Option, /// 当前父分区名称。 #[serde(default)] pub parent_area_name: Option, /// 未被当前版本建模的顶层字段。 #[serde(default, flatten)] pub extra: HashMap, } /// 开播或下播状态消息。 #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct LiveStatusMessage { /// 服务端原始命令名。 pub cmd: String, /// 直播间 ID;部分推送可能省略该字段。 #[serde(default)] pub roomid: Option, /// 未被当前版本建模的顶层字段。 #[serde(default, flatten)] pub extra: HashMap, }