soup-sdk 0.3.3

채팅 이벤트 수신 SDK
Documentation
use crate::chat::{
    events::{EventMeta, MuteEvent},
    parser::{
        constants::SUPER_USERS,
        raw::{ParseResult, RawMessage},
        user::parse_user_status,
        util::normalize_user_id,
    },
    types::User,
};

// bool: 강제퇴장 여부
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),
    })
}