use crate::chat::{
events::{EventMeta, MuteEvent},
parser::{
constants::SUPER_USERS,
raw::{ParseResult, RawMessage},
user::parse_user_status,
util::normalize_user_id,
},
types::User,
};
pub fn parse_mute_event(raw: RawMessage) -> ParseResult<MuteEvent> {
let superuser_index = raw.parse_usize_or_default(5, 0);
let superuser_type = SUPER_USERS
.get(superuser_index)
.copied()
.unwrap_or("unknown")
.to_string();
Ok(MuteEvent {
meta: EventMeta {
received_time: raw.received_time,
},
user: User {
id: normalize_user_id(raw.field(0)?),
label: raw.field_string(7)?,
status: parse_user_status(raw.field(1)?),
subscribe: None,
},
superuser_type,
by: normalize_user_id(raw.field(4)?),
message: "".to_string(),
seconds: raw.parse_u32_or_default(2, 0),
counts: raw.parse_u32_or_default(3, 1),
})
}